使用nodemailer与不同的电子邮件提供商
我正在使用nodemailer从我的网络应用程序发送电子邮件。我已经使用“service:'gmail'”从一个Gmail帐户向另一个Gmail帐户发送电子邮件。
const nodemailer = require("nodemailer");
const promisify = require("es6-promisify");
const transport = nodemailer.createTransport({
service: 'gmail',
auth: {
user: "my gmail",
pass: "my password"
}
});
exports.send = async options => {
const mailOptions = {
from: options.email,
to: '[email protected]',
subject: options.subject,
html: options.text,
text: options.text
};
const sendMail = promisify(transport.sendMail, transport);
return sendMail(mailOptions);
};
上面的代码有效,但我不能使它适用于Outlook帐户。如果我通过电子邮件发送到Outlook或Hotmail帐户,这意味着它不起作用。
此外,我不知道如何注册多个服务,所以我可以发送电子邮件到任何电子邮件服务(hotmail,outlook,gmail ...),而不仅仅是gmail。
我该怎么做 ?如果可以的话请帮忙。
阿丽,谢谢你
回答如下:在这里你可以做以下事情:
首先你可以使用NodeJS Nodemailer Outlook
npm package,你可以很容易地做到这一点。
或者只是试着去做
对于Outlook:
var transport = nodemailer.createTransport("SMTP", {
host: "smtp-mail.outlook",
secureConnection: false,
port: 587,
auth: {
user: "[email protected]",
pass: "XXXXXX"
},
tls: {
ciphers:'SSLv3'
}
});
对于hotmail:
var transport = nodemailer.createTransport("SMTP", {
service: "hotmail",
auth: {
user: "[email protected]",
pass: "XXXXX"
}
});
一次一起:尝试这样的事情
var nodeoutlook = require('nodejs-nodemailer-outlook')
var nodemailer = require("nodemailer");
const promisify = require("es6-promisify");
nodeoutlook.sendEmail({
auth: {
user: "[email protected]",
pass: "johnpassword"
}, from: '[email protected]',
to: '[email protected]',
subject: 'Hey you, awesome!',
html: '<b>This is bold text</b>',
text: 'This is text version!'
attachments: [
{ // file on disk as an attachment
filename: 'text3.txt',
path: '/path/to/file.txt' // stream this file
}
]
});
async function main(){
let account = await nodemailer.createTestAccount();
let transporter = nodemailer.createTransport({
host: "smtp.ethereal.email",
port: 587,
secure: false,
auth: {
user: account.user,
pass: account.pass
}
});
let mailOptions = {
from: '"Fred "
to: "[email protected], [email protected]", // list of receivers
subject: "Hello",
text: "Hello world?", // plain text body
html: "<b>Hello world?</b>" // html body
};
let info = await transporter.sendMail(mailOptions)
}
main().catch(console.error)
希望能帮助到你!!!谢谢