📜  在没有密码的节点 js 中发送邮件 - Javascript (1)

📅  最后修改于: 2023-12-03 15:23:34.974000             🧑  作者: Mango

在没有密码的节点 js 中发送邮件 - Javascript

在某些情况下,我们需要在没有密码的节点 js 中发送邮件,例如在浏览器端发送邮件等情况。我们可以使用第三方服务来实现这个功能。本文将介绍如何使用 Nodemailer 通过 Gmail 服务在没有密码的节点 js 中发送邮件。

安装 Nodemailer
npm install nodemailer --save
配置 Gmail 服务

要发送邮件,我们需要配置 Gmail 服务,以便 Nodemailer 可以在我们的帐户中使用。在 Google 帐户的 安全性 页面下,我们需要启用“低安全性应用程序访问”。

简单的发送邮件示例
const nodemailer = require('nodemailer');

async function sendEmail() {
  try {
    let transporter = nodemailer.createTransport({
      service: 'gmail',
      auth: {
        user: 'yourgmailusername@gmail.com',
        pass: 'yourgmailpassword'
      }
    });

    let info = await transporter.sendMail({
      from: '"Your Name" <yourgmailusername@gmail.com>',
      to: 'recipient@example.com',
      subject: 'Test email',
      text: 'This is a test email sent from an app using Nodemailer.'
    });

    console.log('Message sent: %s', info.messageId);
  } catch (error) {
    console.log(error);
  }
}

sendEmail();

在上面的示例中,我们通过 Gmail 服务配置了一个传输器并使用帐户凭据进行身份验证。然后,我们使用 transporter.sendMail() 方法来发送邮件。最后,我们将控制台记录记录为发送信息。

使用环境变量存储 Gmail 凭据

为了不在代码中明文存储凭据,我们可以使用环境变量来存储它们。

const nodemailer = require('nodemailer');
require('dotenv').config();

async function sendEmail() {
  try {
    let transporter = nodemailer.createTransport({
      service: 'gmail',
      auth: {
        user: process.env.GMAIL_USERNAME,
        pass: process.env.GMAIL_PASSWORD
      }
    });

    let info = await transporter.sendMail({
      from: '"Your Name" <yourgmailusername@gmail.com>',
      to: 'recipient@example.com',
      subject: 'Test email',
      text: 'This is a test email sent from an app using Nodemailer.'
    });

    console.log('Message sent: %s', info.messageId);
  } catch (error) {
    console.log(error);
  }
}

sendEmail();

在上面的示例中,我们使用 require('dotenv').config() 加载环境变量。然后,我们使用 process.env 对象从环境中读取帐户凭据。

结论

通过使用 Nodemailer,我们可以在没有密码的节点 js 中发送电子邮件。通过此文,您已经了解到如何使用 Gmail 服务来发送电子邮件。如果您使用的是其他电子邮件提供程序,请调整代码中的 serviceauth 配置。