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进行邮件发送和接收处理非常方便。只需几行代码就可以发送或接收电子邮件。