如何通过 JavaScript 发送电子邮件?
通过 javascript 发送电子邮件是大多数 Web 应用程序中的常见功能。它允许您自动发送通知、发送用户生成的内容或促进与用户的沟通。我们可以使用不同的方法,例如使用 Malito 协议、使用服务器端语言发送电子邮件以及通过 API 实现电子邮件发送以通过 Javascript 发送电子邮件。在本文中,我们将探讨所有这些使用 javascript 发送电子邮件的方法。
发送电子邮件的基础知识
在使用不同的库和方法实现电子邮件发送功能之前,我们需要了解发送电子邮件的基本要求。从高层次来看,发送电子邮件需要两个主要元素:发件人的电子邮件地址和收件人的电子邮件地址。此外,您需要一个 SMTP(简单邮件传输协议)服务器来处理电子邮件传递。
方法 1:使用 Mailto 协议
从 JavaScript 发送电子邮件的最简单方法是利用"mailto"协议。它只是生成一封带有预填充主题、收件人和正文的电子邮件。当用户点击"mailto"链接时,它会自动打开带有预填充信息的默认电子邮件客户端。
示例
在下面的示例中,我们定义了收件人的电子邮件地址、电子邮件主题和正文。然后,我们通过将值连接在一起并使用 encodeURIComponent() 确保正确编码来构建"mailto"链接。最后,我们将 window.location.href 属性设置为生成的 mailto 链接,触发用户的默认电子邮件客户端打开并显示预先填写的信息。
const reception = 'example@example.com'; const subject = 'Hello'; const body = 'This is the body of the email.'; const mailtoLink = `mailto:${recipient}?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}`; window.location.href = mailtoLink;
输出
打开浏览器中生成的 Malito 链接时,它将打开用户的默认电子邮件客户端,其中包含一个包含预先填写的主题、收件人和正文的新电子邮件草稿。用户可以在发送电子邮件之前进行任何必要的修改。
mailto:example@example.com?subject=Hello&body=This%20is%20the%20body%20of%20the%20email。
方法 2:使用服务器端语言发送电子邮件
Malito 协议在使用上有一些限制。它依赖于用户的电子邮件客户端来发送电子邮件,并且无法控制电子邮件传递过程。为了克服这些限制,您可以使用 Node.js 或 PHP 等服务器端语言来处理电子邮件发送过程。
示例
const nodemailer = require('nodemailer'); async function sendEmail() { try { const transporter = nodemailer.createTransport({ service: 'Gmail', auth: { user: 'your-email@gmail.com', pass: 'your-password' } }); const mailOptions = { from: 'your-email@gmail.com', to: 'recipient@example.com', subject: 'Hello', text: 'This is the body of the email.' }; const info = await transporter.sendMail(mailOptions); console.log('Email sent:', info.messageId); } catch (error) { console.error('Error occurred:', error); } } sendEmail();
输出
Email sent: <6fd37d54-7882-c074-5886-85abc286ac8c@gmail.com>
注意:如果您在邮件登录中启用了 2FA 身份验证,则必须生成应用专用密码才能发送邮件。
方法 3:通过 API 实现电子邮件发送
从 JavaScript 发送电子邮件的另一种方法是与电子邮件传递服务或 API 集成。此方法为发送电子邮件提供了更多的灵活性、控制力和可扩展性。
示例
使用 SendGrid API
在下面的示例中,我们使用 SendGrid API 发送电子邮件。首先,我们使用 @sendgrid/mail 包中的 setApiKey() 设置 API 密钥。然后,我们定义电子邮件详细信息,例如收件人、发件人、主题和文本内容。我们将此信息传递给 send() 方法,该方法返回一个承诺。我们会相应地处理成功和错误情况。
注意:您可以通过在 sendgrid 平台上注册并创建自己的 API 密钥来获取 sendgrid API 密钥。
const apiKey = 'your-sendgrid-api-key'; const sgMail = require('@sendgrid/mail'); sgMail.setApiKey(apiKey); const msg = { to: 'recipient@example.com', from: 'sender@example.com', subject: 'Hello', text: 'This is the body of the email.' }; sgMail.send(msg) .then(() => { console.log('Email sent successfully'); }) .catch((error) => { console.error('Error occurred:', error); });
输出
Email sent successfully
结论
在本文中,我们讨论了如何使用不同的方法从 javascript 发送电子邮件。我们从"mailto"协议开始,该协议对于基本的电子邮件功能很有用。接下来,我们讨论了使用 Node.js 或 PHP 等服务器端语言发送电子邮件,从而更好地控制电子邮件传递过程。最后,我们探讨了通过 API 发送电子邮件,这提供了灵活性和可扩展性。请记住在发送电子邮件时适当处理错误,因为失败可能是由于凭据不正确、网络问题或电子邮件服务提供商施加的限制造成的。