用Nodemailer發(fā)個(gè)郵件不算難?
公司一直用郵箱做一些部門間協(xié)調(diào)的溝通留存,于是乎想用點(diǎn)“編程思維”做些“工作流”來(lái)自動(dòng)化處理;但是公司用的郵箱有點(diǎn)難登吶!
選用的Nodejs 作為實(shí)現(xiàn)語(yǔ)言,那就用Nodemailer來(lái)發(fā)吧
上Demo代碼測(cè)試一下
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);
但等都登不上去 哈哈哈哈果然是難得順利
于是乎開(kāi)始全網(wǎng)查資料.....
終于查到一些思緒
需要使用telnet登上服務(wù)器看看
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

原來(lái)如此 和一般的是不太一樣
繼續(xù)面向搜索引擎編程~~
找來(lái)找去沒(méi)有比較好的輪子,差點(diǎn)就像自己來(lái)造起了
在翻翻文檔瞧瞧

發(fā)現(xiàn)了個(gè)實(shí)現(xiàn)過(guò)的輪子 wow~
最終經(jīng)過(guò)一番調(diào)教終于收到自己給自己發(fā)送的郵件
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!待續(xù)
EOF

浙公網(wǎng)安備 33010602011771號(hào)