用Nodemailer发个邮件不算难?
公司一直用邮箱做一些部门间协调的沟通留存,于是乎想用点“编程思维”做些“工作流”来自动化处理;但是公司用的邮箱有点难登呐!
选用的Nodejs 作为实现语言,那就用Nodemailer来发吧
上Demo代码测试一下
const nodemailer = require("nodemailer");// async..await is not allowed in global scope, must use a wrapper
async function main() {
// Generate test SMTP service account from ethereal.email
// Only needed if you don't have a real mail account for testing
// let testAccount = await nodemailer.createTestAccount();
// create reusable transporter object using the default SMTP transport
let transporter = nodemailer.createTransport({
host: "mail.***.com.cn",
port: 587,
secure: false, // true for 465, false for other ports
auth: {
user: 'username', // generated ethereal user
pass: '********', // generated ethereal password
},
ignoreTLS: true,
});
// send mail with defined transport object
let info = await transporter.sendMail({
from: '"Jimmy 👻" <**@**.com.cn>', // sender address
to: "***@**.com.cn", // list of receivers
subject: "Hello ✔", // Subject line
text: "Hello world?", // plain text body
html: "<b>Hello world?</b>", // html body
date: new Date('2021-03-30 23:59:59'),
});
console.log("Message sent: %s", info.messageId);
// Message sent: <b658f8ca-6296-ccf4-8306-87d57a0b4321@example.com>
// Preview only available when sending through an Ethereal account
// console.log("Preview URL: %s", nodemailer.getTestMessageUrl(info));
// Preview URL: https://ethereal.email/message/WaQKMgKddxQDoou...
}
main().catch(console.error);
但等都登不上去 哈哈哈哈果然是难得顺利
于是乎开始全网查资料.....
终于查到一些思绪
需要使用telnet登上服务器看看
telnet smtp.****.com.cn 587 Connected to mail.****.cn. Escape character is '^]'. 220 ex01.***.cn Microsoft ESMTP MAIL Service ready at Fri, 23 Apr 2021 18:08:13 +0800 ehlo 250-ex01.****.cn Hello [123.233.***.***] 250-SIZE 1073741824 250-PIPELINING 250-DSN 250-ENHANCEDSTATUSCODES 250-STARTTLS 250-X-ANONYMOUSTLS 250-AUTH GSSAPI NTLM 250-X-EXPS GSSAPI NTLM 250-8BITMIME 250-BINARYMIME 250-CHUNKING 250 XRDST

原来如此 和一般的是不太一样
继续面向搜索引擎编程~~
找来找去没有比较好的轮子,差点就像自己来造起了
在翻翻文档瞧瞧

发现了个实现过的轮子 wow~
最终经过一番调教终于收到自己给自己发送的邮件
const nodemailer = require("nodemailer");
const nodemailerNTLMAuth = require('nodemailer-ntlm-auth');
// async..await is not allowed in global scope, must use a wrapper
async function main() {
// Generate test SMTP service account from ethereal.email
// Only needed if you don't have a real mail account for testing
// let testAccount = await nodemailer.createTestAccount();
// create reusable transporter object using the default SMTP transport
let transporter = nodemailer.createTransport({
host: "smtp.****.com.cn",
port: 587,
secure: false, // true for 465, false for other ports
auth: {
type: 'custom',
method: 'NTLM',
user: 'username', // generated ethereal user
pass: '*******', // generated ethereal password
},
ignoreTLS: true,
customAuth: {
NTLM: nodemailerNTLMAuth,
}
});
// send mail with defined transport object
let info = await transporter.sendMail({
from: '"Jimmy 👻" <*****@*****.com.cn>', // sender address
to: "***@***.com.cn", // list of receivers
subject: "Hello ✔", // Subject line
text: "Hello world?", // plain text body
html: "<b>Hello world?</b>", // html body
date: new Date('2021-03-30 23:59:59'),
});
console.log("Message sent: %s", info.messageId);
// Message sent: <b658f8ca-6296-ccf4-8306-87d57a0b4321@example.com>
// Preview only available when sending through an Ethereal account
// console.log("Preview URL: %s", nodemailer.getTestMessageUrl(info));
// Preview URL: https://ethereal.email/message/WaQKMgKddxQDoou...
}
main().catch(console.error);
打印邮件ID
Message sent: <466d4875-00e7-e9fa-11dd-e6b65d1b023f@***.com.cn>
OK!待续
EOF

浙公网安备 33010602011771号