Node.js 如何发送电子邮件

Node.js 如何发送电子邮件

电子邮件是一种广泛使用的向人们之间传输/交换消息的方法。我们通常使用软件或应用程序,如Gmail、Outlook、Thunderbird Mail和Yahoo等,发送电子邮件。我们还可以使用任何可以与网络系统交互并发送电子邮件的第三方库,在Node.js应用程序中编码这些应用程序的基本概念。

Nodemailer: 有多个模块可用于发送电子邮件,但Nodemailer是最受欢迎的模块之一,它为我们提供了发送邮件的简单过程和功能。

Nodemailer的特点:

  • 它支持各种功能,例如在邮件中添加HTML、Unicode字符、发送附件等。
  • 它使用简单邮件传输协议(SMTP)。下面是将此模块集成到我们的应用程序中的逐步方法。

步骤1:模块安装: 在终端中写入命令来安装nodemailer,然后将其导入到您的Node.js应用程序的顶部。

npm install nodemailer

现在我们准备将这个导入到我们的应用程序中。

const nodemailer = require('nodemailer');

步骤2:创建Transporter对象: 在nodemailer中存在一个名为createTransport的方法,它接受一个具有一些配置的对象,并最终返回一个Transporter对象。这个对象将稍后用于发送电子邮件。

const transporter = nodemailer. createTransport(transport[, defaults]);

在这里我们使用 Gmail作为样例服务 ,尽管nodemailer可以轻松与任何其他邮件服务集成。在Gmail中,我们可以选择减少我们的账户安全性,或者我们可以使用Oauth2安全认证,否则通常google不允许通过node.js发送任何邮件。

账户安全性较低: 访问这个链接,使您的账户安全性降低,在这之后我们可以只使用您的Gmail账户的用户名和密码创建我们的工作传输对象。

Node.js 如何发送电子邮件

app.js

const nodemailer = require('nodemailer'); 
  
const transporter = nodemailer.createTransport({ 
  service: 'gmail', 
  auth: { 
    user: secure_configuration.EMAIL_USERNAME, 
    pass: secure_configuration.PASSWORD 
  } 
});

使用Oauth2: 根据官方文档, 在这里我们需要提供客户端ID、客户端密钥、刷新令牌和访问令牌,以及用户名和密码。按照逐步方法从Google云控制台获取这些配置。

1. 打开Google云控制台: 在此步骤中,我们将获得客户端ID和客户端密钥。访问Google云控制台网站并注册/登录。然后,从最左侧的导航栏中选择 API & 服务 ** 部分。现在检查仪表板并创建一个项目。在此之后,访问Oauth同意屏幕以注册您的应用程序,在此步骤中,请务必选择用户类型为 **外部 并添加一些/一个 测试用户。 完成此步骤后,转到凭据部分,点击创建凭据,然后选择Oauth2客户端ID,并将应用程序类型选择为Web应用程序,还要确保添加 重定向URI为OAuth playground (从这里复制链接 )。最后,您将成功获取您的 client_id和client_secret。

Node.js 如何发送电子邮件

2. 打开Oauth2 Playground: 在这里我们将获得我们的刷新令牌和访问令牌。访问OAuth2 playground, 点击右侧的oauth2.0配置图标,然后勾选 使用您自己的凭据 复选框,并提供与您从云控制台获取的客户端ID和秘钥相同的值。现在选择Gmail API进行授权。点击授权API,然后使用您在上一步的凭证部分中填写的Gmail ID进行授权。最后,点击交换授权码以获取令牌,这将提供一个 刷新令牌和访问令牌。

Node.js 如何发送电子邮件

注意: 我们建议您在单独的选项卡中打开这些gif,并分别遵循两种方法,不要跳过任何关键步骤,这将避免给您带来很多困惑。另外,请不要尝试复制客户端ID和客户端密钥等信息,这是不会起作用的。

app.js

const nodemailer = require('nodemailer'); 
  
const transporter = nodemailer.createTransport({ 
  service: 'gmail', 
  auth: { 
    type: 'OAuth2', 
    user: secure_configuration.EMAIL_USERNAME, 
    pass: secure_configuration.PASSWORD, 
    clientId: secure_configuration.CLIENT_ID, 
    clientSecret: secure_configuration.CLIENT_SECRET, 
    refreshToken: secure_configuration.REFRESH_TOKEN 
  } 
}); 

现在我们的传输对象已经准备好了,现在我们可以发送邮件了。

步骤3:配置电子邮件: 在发送邮件之前,我们必须创建一些消息配置,比如发送什么,发送到哪里等等。创建这些配置非常简单,有几个键值对,你可以提供所需的键值对,以及一些其他预定义键的值。

向一个电子邮件地址发送简单文本:

const mailConfigurations = { 
  
    // It should be a string of sender email 
    from: 'mrtwinklesharma@gmail.com', 
      
    // Comma Separated list of mails 
    to: 'smtwinkle451@gmail.com', 
  
    // Subject of Email 
    subject: 'Sending Email using Node.js', 
      
    // This would be the text of email body 
    text: 'Hi! There, You know I am using the'
      + ' NodeJS Code along with NodeMailer '
      + 'to send this email.'
};

输出: 如果我们使用这些配置发送电子邮件,会向接收方发送类似于这样的内容。尽管我们的代码目前还没有完成,但这里我们只是展示了代码完成后这个消息配置会是什么样子。

Node.js 如何发送电子邮件

发送给多个邮箱: 我们可以使用逗号作为分隔符来连接多个邮箱。

const mailConfigurations = { 
    from: 'mrtwinklesharma@gmail.com', 
    to: 'smtwinkle451@gmail.com, anyothergmailid@gmail.com', 
      subject: 'Sending Email using Node.js', 
    text: 'Hi! There, You know I am using the NodeJS Code'
       + ' along with NodeMailer to send this email.'
};

发送一些HTML内容: 只需用HTML替换纯文本并将之提供给 html 键。

const mailConfigurations = { 
  from: 'mrtwinklesharma@gmail.com', 
  to: 'smtwinkle451@gmail.com', 
  subject: 'Sending Email using Node.js', 
  html: "<h2>Hi! There</h2> <h5> This HTML content is  
     being send by NodeJS along with NodeMailer.</h5>"
};

输出:

Node.js 如何发送电子邮件

  • 发送附件, Nodemailer在发送附件时非常灵活, 您可以发送任何被电子邮件服务接受的文件类型。
const mailConfigurations = { 
  from: 'mrtwinklesharma@gmail.com', 
  to: 'smtwinkle451@gmail.com', 
  subject: 'Sending Email using Node.js',  
  text:'Attachments can also be sent using nodemailer', 
  attachments: [ 
  {   
    // utf-8 string as an attachment 
    filename: 'text.txt', 
    content: 'Hello, GeeksforGeeks Learner!'
  }, 
  {    
    // filename and content type is derived from path 
    path: '/home/mrtwinklesharma/Programming/document.docx'
  }, 
  {    
    path: '/home/mrtwinklesharma/Videos/Sample.mp4'
  }, 
  {    
    // use URL as an attachment 
    filename: 'license.txt', 
    path: 'https://raw.github.com/nodemailer/nodemailer/master/LICENSE'
  }  
] 
};

输出:

Node.js 如何发送电子邮件

不仅如此,nodemailer还有许多消息配置的可能性,您可以从这里检查所有配置。

步骤4:发送电子邮件: 使用上述任一方法继续进行传输器对象,并选择任一电子邮件配置来发送邮件。
在传输器对象中存在一个 sendMail 方法,它接受电子邮件配置和一个回调函数,该函数将在发送邮件或出错时执行。

transporter. **sendMail** (mailConfigurations[, callback]);
transporter.sendMail(mailConfigurations, function(error, info){ 
    if (error) throw Error(error); 
       console.log('Email Sent Successfully'); 
    console.log(info); 
});

步骤5:将它们合并

您可以从步骤2和3中任选任何选项。在将其提供给sendMail方法后,您将成功地能够使用node.js发送电子邮件。

解释: 这里我们在开头导入了nodemailer模块,然后使用了Oauth2类型的身份验证,接下来是使用的最基本的消息配置。最后, sendMail 方法将邮件发送给消息配置中提供的收件人。

注意: 导入的secure模块与nodemailer无关,我只是用它来保护我的凭据。

app.js

const nodemailer = require('nodemailer'); 
const secure_configuration = require('./secure'); 
  
const transporter = nodemailer.createTransport({ 
  service: 'gmail', 
  auth: { 
    type: 'OAuth2', 
    user: secure_configuration.EMAIL_USERNAME, 
    pass: secure_configuration.PASSWORD, 
    clientId: secure_configuration.CLIENT_ID, 
    clientSecret: secure_configuration.CLIENT_SECRET, 
    refreshToken: secure_configuration.REFRESH_TOKEN 
  } 
}); 
  
const mailConfigurations = { 
    from: 'mrtwinklesharma@gmail.com', 
    to: 'smtwinkle451@gmail.com', 
    subject: 'Sending Email using Node.js', 
    text: 'Hi! There, You know I am using the NodeJS '
     + 'Code along with NodeMailer to send this email.'
}; 
    
transporter.sendMail(mailConfigurations, function(error, info){ 
    if (error) throw Error(error); 
       console.log('Email Sent Successfully'); 
    console.log(info); 
}); 

输出: 使用node命令运行此代码片段,将在控制台和Gmail收件箱中输出。

Node.js 如何发送电子邮件

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程