Nodemailer是一个Node.js的库,它可以方便地发送和接收电子邮件。以下是使用Nodemailer发送邮件的步骤:
使用npm安装Nodemailer:
sh npm install nodemailer
在代码中引入Nodemailer模块并创建一个邮件传输对象:
js
const nodemailer = require('nodemailer');
let transporter = nodemailer.createTransport({
host: 'smtp.gmail.com',
port: 465,
secure: true,
auth: {
user: 'your-email@gmail.com',
pass: 'your-email-password'
}
});
这里我们使用了Gmail作为邮件服务器,并使用了SMTP协议进行传输。你需要将user和pass字段替换为你自己的Gmail电子邮件地址和密码。
定义邮件的主题、收件人、内容等信息:
js
let mailOptions = {
from: 'your-email@gmail.com',
to: 'recipient-email@example.com',
subject: 'Test Email',
text: 'This is a test email sent using Nodemailer'
};
这里我们将邮件内容设置为一个简单的文本消息。
使用邮件传输对象的sendMail方法发送邮件:
js
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
console.log(error);
} else {
console.log('Email sent: ' + info.response);
}
});
如果邮件发送成功,控制台将输出“Email sent”和邮件服务器返回的响应。
Nodemailer不仅可以发送邮件,还可以接收邮件并进行处理。以下是使用Nodemailer接收邮件的步骤:
使用npm安装Imap和Mailparser依赖项:
sh npm install imap mailparser
在代码中引入Imap和Mailparser模块,并连接到IMAP服务器:
js
const Imap = require('imap');
const MailParser = require('mailparser').MailParser;
let imap = new Imap({
user: 'your-email@gmail.com',
password: 'your-email-password',
host: 'imap.gmail.com',
port: 993,
tls: true
});
imap.connect();
这里我们使用Gmail作为邮件服务器,并使用IMAP协议进行传输。你需要将user和password字段替换为你自己的Gmail电子邮件地址和密码。
定义MailParser对象并将邮件传递给它以进行解析:
js
imap.once('ready', () => {
imap.openBox('INBOX', true, () => {
imap.search(['UNSEEN'], (err, results) => {
if (results.length) {
let f = imap.fetch(results, { bodies: '' });
f.on('message', (msg, seqno) => {
let parser = new MailParser();
parser.on('headers', (headers) => {
console.log(headers);
});
parser.on('data', (data) => {
if (data.type === 'text') {
console.log(data.text);
}
});
msg.on('body', (stream, info) => {
stream.pipe(parser);
});
});
f.once('error', (err) => {
console.log(err);
});
f.once('end', () => {
console.log('Done fetching all messages!');
imap.end();
});
} else {
console.log('No new messages!');
imap.end();
}
});
});
});
这个例子将打印每个未读邮件的头和正文。
使用Nodemailer进行邮件发送和接收处理非常方便。只需几行代码就可以发送或接收电子邮件。