Atu*_*rma 25 javascript node.js nodemailer
我正在尝试向多个收件人发送电子邮件.为此,我创建了一个收件人数组,但是使用我的代码,我只能将邮件发送到阵列的最后一次电子邮件ID三次.我的代码出了什么问题?
var nodemailer = require("nodemailer");
var smtpTransport = nodemailer.createTransport(
"SMTP",{
host: '',
// secureConnection: true, // use SSL
port: 25
});
var maillist = [
'****.sharma3@****.com',
'****.bussa@****.com',
'****.gawri@****.com',
];
var msg = {
from: "******", // sender address
subject: "Hello ?", // Subject line
text: "Hello This is an auto generated Email for testing from node please ignore it ?", // plaintext body
cc: "*******"
// html: "<b>Hello world ?</b>" // html body
}
maillist.forEach(function (to, i , array) {
msg.to = to;
smtpTransport.sendMail(msg, function (err) {
if (err) {
console.log('Sending to ' + to + ' failed: ' + err);
return;
} else {
console.log('Sent to ' + to);
}
if (i === maillist.length - 1) { msg.transport.close(); }
});
});
Run Code Online (Sandbox Code Playgroud)
pky*_*eck 36
nodemailer(v2.4.2)文档说:
to- 逗号分隔列表或将显示在"收件人:"字段上的收件人电子邮件地址数组
所以你可以这样做:
var maillist = [
'****.sharma3@****.com',
'****.bussa@****.com',
'****.gawri@****.com',
];
var msg = {
from: "******", // sender address
subject: "Hello ?", // Subject line
text: "Hello This is an auto generated Email for testing from node please ignore it ?", // plaintext body
cc: "*******",
to: maillist
}
Run Code Online (Sandbox Code Playgroud)
ack*_*ser 25
据我所知,你将能够获得这样的多个收件人
"mail1@mail.com,mail2@mail.com,mail3@mail.com,mail4@mail.com"
Run Code Online (Sandbox Code Playgroud)
所以为什么你不做那样的事情
var maillist = '****.sharma3@****.com, ****.bussa@****.com, ****.gawri@****.com';
var msg = {
from: "******", // sender address
to: maillist,
subject: "Hello ?", // Subject line
text: "Hello This is an auto generated Email for ... ?", // plaintext body
cc: "*******"
// html: "<b>Hello world ?</b>" // html body
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试过,它正在发挥作用.此外,从我的角度来看,如果你有能力只发送一次而没有任何复杂情况,你为什么要担心"异步"或发送电子邮件1K次?
无论如何希望这个帮助,回答你的问题,或者它可能有助于其他人
当然,我的答案可以改善..
een*_*agy 13
您的问题是从异步代码引用相同的msg对象.forema在sendMail发送电子邮件之前完成.
所以msg.to将成为maiilist对象的最后一项.
尝试在maillist foreach中克隆/复制msg,或者只是将msg定义移动到那里:
maillist.forEach(function (to, i , array) {
var msg = {
from: "******", // sender address
subject: "Hello ?", // Subject line
text: "Hello This is an auto generated Email for testing from node please ignore it ?", // plaintext body
cc: "*******"
// html: "<b>Hello world ?</b>" // html body
}
msg.to = to;
smtpTransport.sendMail(msg, function (err) {
Run Code Online (Sandbox Code Playgroud)
小智 6
var maillist = [
'****.sharma3@****.com',
'****.bussa@****.com',
'****.gawri@****.com',
];
maillist.toString();
var msg = {
from: "******", // sender address
to: maillist,
subject: "Hello ?", // Subject line
text: "Hello This is an auto generated Email for testing from node please ignore it ?", // plaintext body
cc: "*******"
// html: "<b>Hello world ?</b>" // html body
}
Run Code Online (Sandbox Code Playgroud)
let info = await transporter.sendMail({
from: [{ name: "sender Name", address: "sender@example.com" }], // sender address
to: [
{ name: "Receiver Name 1", address: "receiver1@example.com" },
{ name: "Receiver Name 2", address: "receiver2@example.com" },
],
subject: "Hey you, awesome!",
html: "<b>This is bold text</b>",
text: "This is text version!",
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
35178 次 |
| 最近记录: |