Cet article montre comment intégrer de manière transparente les fonctionnalités des e-mails dans vos applications React à l'aide de l'e-mail et du renvoi React. Nous allons créer un formulaire de contact dans une application Next.js comme exemple pratique. Auparavant, l'intégration des e-mails dans React était notoirement difficile, mais ces outils simplifient considérablement le processus.
Avantages clés:
Configuration de votre application suivante.js:
Commencez par cloner le code de démarrage du référentiel GitHub fourni. Le projet de démarrage comprend une application de base Next.js 13 (à l'aide du routeur de l'application) avec un formulaire de contact avec le formulaire ZOD et React Hook pour la validation. La fonction onSubmit
dans le composant du formulaire de contact est l'endroit où nous ajouterons notre logique d'envoi de messagerie:
function onSubmit(values: z.infer<typeof formschema="">) { // Email sending logic will be implemented here console.log(values); }
(Remarque: le style et la construction de formulaires sont omis pour la brièveté. CSS de vent arrière ou CSS standard peut être utilisé pour le style.)
Configuration du rendement:
.env.local
dans le répertoire racine de votre projet et ajoutez votre clé API: <code>RESEND_API_KEY=your_api_key_here</code>
Création du composant de messagerie (Email.tsx
):
Importez les composants nécessaires de @react-email/components
:
import { Body, Container, Head, Heading, Hr, Html, Preview, Tailwind, Text } from "@react-email/components"; import * as React from "react";
Définissez une interface pour les données par e-mail:
interface ContactMeEmailProps { name: string; emailAddress: string; phoneNumber: string; content: string; }
Créez le composant de messagerie:
const VercelInviteUserEmail = ({ name, content, emailAddress, phoneNumber }: ContactMeEmailProps) => ( <Html> <Head> <Preview>A message from {name}</Preview> </Head> <Tailwind> <Container className="border border-solid border-[#eaeaea] rounded my-[40px] mx-auto p-[20px] w-[465px]"> <Heading className="text-black text-[24px] font-normal text-center p-0 my-[30px] mx-0"> <strong>{name}</strong> would like to contact you! </Heading> <Text className="text-black text-[14px] leading-[24px]"> Here is the message: {content} </Text> <Hr className="border border-solid border-[#eaeaea] my-[26px] mx-0 w-full" /> <Text className="text-[#666666] text-[12px] leading-[24px]"> This message was sent by {name}. Contact them at {emailAddress} or {phoneNumber} </Text> </Container> </Tailwind> </Html> );
Envoi de l'e-mail avec resend (api/send/route.ts
):
function onSubmit(values: z.infer<typeof formschema="">) { // Email sending logic will be implemented here console.log(values); }
<code>RESEND_API_KEY=your_api_key_here</code>
import { Body, Container, Head, Heading, Hr, Html, Preview, Tailwind, Text } from "@react-email/components"; import * as React from "react";
interface ContactMeEmailProps { name: string; emailAddress: string; phoneNumber: string; content: string; }
onSubmit
dans votre formulaire de contact pour envoyer une demande de message à /api/send
: const VercelInviteUserEmail = ({ name, content, emailAddress, phoneNumber }: ContactMeEmailProps) => ( <Html> <Head> <Preview>A message from {name}</Preview> </Head> <Tailwind> <Container className="border border-solid border-[#eaeaea] rounded my-[40px] mx-auto p-[20px] w-[465px]"> <Heading className="text-black text-[24px] font-normal text-center p-0 my-[30px] mx-0"> <strong>{name}</strong> would like to contact you! </Heading> <Text className="text-black text-[14px] leading-[24px]"> Here is the message: {content} </Text> <Hr className="border border-solid border-[#eaeaea] my-[26px] mx-0 w-full" /> <Text className="text-[#666666] text-[12px] leading-[24px]"> This message was sent by {name}. Contact them at {emailAddress} or {phoneNumber} </Text> </Container> </Tailwind> </Html> );
Ceci termine les fonctionnalités d'envoi d'e-mail. N'oubliez pas de remplacer les adresses e-mail d'espace réservé par vos adresses e-mail réelles et de gérer les erreurs potentielles de manière appropriée. Le code source complet se trouve sur GitHub (lien fourni dans le texte d'origine).
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!