如何通过 JavaScript 发送电子邮件?

pythonjavascriptprogramming

通过 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 发送电子邮件,这提供了灵活性和可扩展性。请记住在发送电子邮件时适当处理错误,因为失败可能是由于凭据不正确、网络问题或电子邮件服务提供商施加的限制造成的。


相关文章