如何使用 JavaScript 发送电子邮件?
从 JavaScript 发送电子邮件是大多数 Web 应用程序中常见的功能。它允许您自动化通知、发送用户生成的内容或促进与用户的通信。我们可以使用不同的方法,例如使用 Mailto 协议、使用服务器端语言发送电子邮件以及通过 API 实现电子邮件发送,来从 Javascript 发送电子邮件。在本文中,我们将探讨所有这些使用 javascript 发送电子邮件的方法。
发送电子邮件的基础知识
在使用不同的库和方法实现电子邮件发送功能之前,我们需要了解发送电子邮件的基本要求。从高层次来看,发送电子邮件需要两个主要元素:发送方的电子邮件地址和接收方的电子邮件地址。此外,您还需要一个 SMTP(简单邮件传输协议)服务器来处理电子邮件传递。
方法 1:使用 Mailto 协议
从 JavaScript 发送电子邮件最简单的方法是利用“mailto”协议。它只是生成一条带有预先填充的主题、收件人和正文的电子邮件消息。当用户点击“mailto”链接时,它会自动打开其默认的电子邮件客户端,并显示预先填充的信息。
示例
在下面的示例中,我们定义了收件人的电子邮件地址、主题和电子邮件正文。然后,我们通过将这些值连接在一起并使用 encodeURIComponent() 确保正确的编码来构建“mailto”链接。最后,我们将 window.location.href 属性设置为生成的 mailto 链接,从而触发用户的默认电子邮件客户端打开,并显示预先填充的信息。
const recipient = '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.
Learn JavaScript in-depth with real-world projects through our JavaScript certification course. Enroll and become a certified expert to boost your career.
方法 2:使用服务器端语言发送电子邮件
Mailto 协议在使用方面存在一些限制。它依赖于用户的电子邮件客户端来发送电子邮件,并且无法控制电子邮件传递过程。为了克服这些限制,您可以使用服务器端语言(如 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() 方法,该方法返回一个 Promise。我们相应地处理成功和错误情况。
注意:您可以通过在 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 发送电子邮件,这提供了灵活性和可扩展性。请记住,在发送电子邮件时适当地处理错误,因为由于凭据错误、网络问题或电子邮件服务提供商施加的限制,可能会发生故障。