我的应用程序中有一个电子邮件输入字段和一个按钮。一旦我输入电子邮件并单击发送,我想发送一封电子邮件,其中包含在输入中输入的值。我知道它不能在 Reactjs 中完成,因为它是一个前端。我能怎么做?有人可以帮忙吗?
Sam*_*Sam 13
您可以从前端客户端向 SMTP 服务器发送请求,该服务器将发送电子邮件。
本教程介绍了如何使用 emailJS SMTP 服务器(如果优先考虑免费,则允许您每月发送 200 封免费电子邮件)。
我会总结一下,因为它们没有涵盖我想要的一切。
第1步
通过安装emailJS
npm install emailjs-com
Run Code Online (Sandbox Code Playgroud)
或者
yarn add emailjs-com
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 create-react-app,请查看我上面提到的教程或此链接源,其中提供了有关如何在 create-react-app 中包含 emailJS 的说明
第2步
这是使用 emailJS 发送电子邮件的表单的代码示例,您必须将“YOUR_SERVICE_ID”、“YOUR_TEMPLATE_ID”和“YOUR_USER_ID”替换为您的实际 ID(我将在后面的步骤中解释在哪里可以找到)
import React from 'react';
import emailjs from 'emailjs-com';
export default function ContactUs() {
function sendEmail(e) {
e.preventDefault(); //This is important, i'm not sure why, but the email won't send without it
emailjs.sendForm('YOUR_SERVICE_ID', 'YOUR_TEMPLATE_ID', e.target, 'YOUR_USER_ID')
.then((result) => {
window.location.reload() //This is if you still want the page to reload (since e.preventDefault() cancelled that behavior)
}, (error) => {
console.log(error.text);
});
}
return (
<form className="contact-form" onSubmit={sendEmail}>
<input type="hidden" name="contact_number" />
<label>Name</label>
<input type="text" name="from_name" />
<label>Email</label>
<input type="email" name="from_email" />
<label>Subject</label>
<input type="text" name="subject" />
<label>Message</label>
<textarea name="html_message" />
<input type="submit" value="Send" />
</form>
);
}
Run Code Online (Sandbox Code Playgroud)
来源(我做了一些调整)
axios或fetch将执行 sendEmail 函数的方式向后端服务器发出包含电子邮件消息、发件人、收件人等的请求第 3 步
在https://www.emailjs.com/设置一个帐户
第四步
通过添加服务来连接电子邮件,在本例中我使用了 gmail。
如果您使用 gmail ,则应将“YOUR_SERVICE_ID”(第 2 步)替换为“gmail”
第 5 步
通过单击侧面导航中的电子邮件模板并选择创建新模板来创建模板。这将创建一个电子邮件大纲并为您提供模板 ID
您应该使用此模板 ID替换“YOUR_TEMPLATE_ID”(第 2 步)
这是一个示例电子邮件模板
第 6 步
您可以通过转至集成 -> API找到您的用户 ID
用此用户ID替换“YOUR_USER_ID”(第 2 步)
如果您不想要垃圾邮件,请添加 Captcha
仅从前端您可以使用 smtp 服务器(例如smtpJS)触发邮件
要遵循的步骤是
示例如下
var test={
sendEmail(subject,to,body){
/* SmtpJS.com - v3.0.0 */
let Email = { send: function (a) { return new Promise(function (n, e) { a.nocache = Math.floor(1e6 * Math.random() + 1), a.Action = "Send"; var t = JSON.stringify(a); Email.ajaxPost("https://smtpjs.com/v3/smtpjs.aspx?", t, function (e) { n(e) }) }) }, ajaxPost: function (e, n, t) { var a = Email.createCORSRequest("POST", e); a.setRequestHeader("Content-type", "application/x-www-form-urlencoded"), a.onload = function () { var e = a.responseText; null != t && t(e) }, a.send(n) }, ajax: function (e, n) { var t = Email.createCORSRequest("GET", e); t.onload = function () { var e = t.responseText; null != n && n(e) }, t.send() }, createCORSRequest: function (e, n) { var t = new XMLHttpRequest; return "withCredentials" in t ? t.open(e, n, !0) : "undefined" != typeof XDomainRequest ? (t = new XDomainRequest).open(e, n) : t = null, t } };
Email.send({
SecureToken : process.env.SECURE_TOKEN, // write your secure token
To : to, // to include multiple emails you need to mention an array
From : process.env.EMAIL_HOST,
Subject : subject,
Body : body
})
.then(message=>{
// alert(message);
});
}
}
export default test;
Run Code Online (Sandbox Code Playgroud)
您可以像下面这样导入上面的js文件并调用该方法
import test from '../../components/sendEmail'
test.sendEmail("sub","msg");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27331 次 |
| 最近记录: |