Maison >interface Web >js tutoriel >Comment envoyer des e-mails avec React en utilisant Rense
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:
<code class="language-javascript">function onSubmit(values: z.infer<typeof formschema="">) { // Email sending logic will be implemented here console.log(values); }</typeof></code>
(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
:
<code class="language-javascript">import { Body, Container, Head, Heading, Hr, Html, Preview, Tailwind, Text } from "@react-email/components"; import * as React from "react";</code>
Définissez une interface pour les données par e-mail:
<code class="language-typescript">interface ContactMeEmailProps { name: string; emailAddress: string; phoneNumber: string; content: string; }</code>
Créez le composant de messagerie:
<code class="language-javascript">const VercelInviteUserEmail = ({ name, content, emailAddress, phoneNumber }: ContactMeEmailProps) => ( <preview>A message from {name}</preview> <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> );</code>
Envoi de l'e-mail avec resend (api/send/route.ts
):
<code class="language-javascript">function onSubmit(values: z.infer<typeof formschema="">) { // Email sending logic will be implemented here console.log(values); }</typeof></code>
<code>RESEND_API_KEY=your_api_key_here</code>
<code class="language-javascript">import { Body, Container, Head, Heading, Hr, Html, Preview, Tailwind, Text } from "@react-email/components"; import * as React from "react";</code>
<code class="language-typescript">interface ContactMeEmailProps { name: string; emailAddress: string; phoneNumber: string; content: string; }</code>
onSubmit
dans votre formulaire de contact pour envoyer une demande de message à /api/send
: <code class="language-javascript">const VercelInviteUserEmail = ({ name, content, emailAddress, phoneNumber }: ContactMeEmailProps) => ( <preview>A message from {name}</preview> <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> );</code>
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!