Nodemailer - 电子邮件发送但不接收
Nodemailer - email send but not receive
我正在使用 feathersjs 构建一个 API,我需要发送一封带有附件的电子邮件。
邮件好像已经发送了,但我什么也没收到。
在我的mail.service.js
const nodemailer = require('nodemailer');
const transporter = nodemailer.createTransport({
host: 'smtp.office365.com',
port: 587,
secure: false, // secure:true for port 465, secure:false for port 587
auth: {
user: 'gil.felot@myaccount.com',
pass: 'MyPassWord'
}
});
// Check the connection to the service.
transporter.verify(function(error, success) {
if (error) {
console.log(error);
} else {
console.log('Server is ready to take our messages');
}
});
那就中招了
hook => {
const file = hook.params.file;
const email = {
from: 'gil.felot@myaccount.com', // sender address
to: 'mygmailaccount@gmail.com', // list of receivers
subject: 'Test Nodemailer', // Subject line
// text: req.body.text, // plaintext body
html: '<b>Hello world </b>', // html body
attachments: [
{
filename: file.originalname,
contents: new Buffer(file.buffer, 'base64'),
encoding: 'base64'
}
]
};
return hook.app.service('mail').create(email)
.then(function (result) {
console.log('Sent email', result);
}).catch(err => {
console.log(err);
});
}
然后我得到了
Server is ready to take our messages
Sent email
Object {from: "gil.felot@myaccount.com", to: "mygmailaccount@gmail.com", subject: "Test Nodemailer", html: "Hello world "}
我不知道如何检查问题出在哪里。
好的,我想通了!
我需要在 mail.class.js
中添加 transporter.sendMail()
以在调用 hook.app.service('mail').create(email)
时触发此操作
工作正常,附件文件在邮件中为 0 字节,但在我的变量中大小合适。
我在创建邮件时遗漏了发件人部分,虽然我能够通过 google smtp 发送邮件,但我自己的 smtp 在上述配置下失败了
正在与 google
合作
var mailOptions = { to: email, subject: 'Forgot Password', html: mailData };
也在使用我的 smtp:
var mailOptions = { from: 'serverName.com', to: email, subject: 'Forgot Password', html: mailData };
考虑在定义 nodemailer
配置时添加名称
let transporter = nodemailer.createTransport({
name: 'example.com' // <= Add this
host: 'smtp.example.email',
port: 587,
对我来说,这是我意识到的;如果 html 没有 html 标签,则不会发送电子邮件。即
此模板可以使用
<html>
<body>
Hello and welcome
</body>
</html>
此模板将不起作用:
<body>
Hello and welcome
</body>
尤其是发送到office365时,请参考这里的其他问题:
我正在使用 feathersjs 构建一个 API,我需要发送一封带有附件的电子邮件。
邮件好像已经发送了,但我什么也没收到。
在我的mail.service.js
const nodemailer = require('nodemailer');
const transporter = nodemailer.createTransport({
host: 'smtp.office365.com',
port: 587,
secure: false, // secure:true for port 465, secure:false for port 587
auth: {
user: 'gil.felot@myaccount.com',
pass: 'MyPassWord'
}
});
// Check the connection to the service.
transporter.verify(function(error, success) {
if (error) {
console.log(error);
} else {
console.log('Server is ready to take our messages');
}
});
那就中招了
hook => {
const file = hook.params.file;
const email = {
from: 'gil.felot@myaccount.com', // sender address
to: 'mygmailaccount@gmail.com', // list of receivers
subject: 'Test Nodemailer', // Subject line
// text: req.body.text, // plaintext body
html: '<b>Hello world </b>', // html body
attachments: [
{
filename: file.originalname,
contents: new Buffer(file.buffer, 'base64'),
encoding: 'base64'
}
]
};
return hook.app.service('mail').create(email)
.then(function (result) {
console.log('Sent email', result);
}).catch(err => {
console.log(err);
});
}
然后我得到了
Server is ready to take our messages
Sent email
Object {from: "gil.felot@myaccount.com", to: "mygmailaccount@gmail.com", subject: "Test Nodemailer", html: "Hello world "}
我不知道如何检查问题出在哪里。
好的,我想通了!
我需要在 mail.class.js
中添加 transporter.sendMail()
以在调用 hook.app.service('mail').create(email)
工作正常,附件文件在邮件中为 0 字节,但在我的变量中大小合适。
我在创建邮件时遗漏了发件人部分,虽然我能够通过 google smtp 发送邮件,但我自己的 smtp 在上述配置下失败了
正在与 google
合作var mailOptions = { to: email, subject: 'Forgot Password', html: mailData };
也在使用我的 smtp:
var mailOptions = { from: 'serverName.com', to: email, subject: 'Forgot Password', html: mailData };
考虑在定义 nodemailer
配置时添加名称
let transporter = nodemailer.createTransport({
name: 'example.com' // <= Add this
host: 'smtp.example.email',
port: 587,
对我来说,这是我意识到的;如果 html 没有 html 标签,则不会发送电子邮件。即
此模板可以使用
<html>
<body>
Hello and welcome
</body>
</html>
此模板将不起作用:
<body>
Hello and welcome
</body>
尤其是发送到office365时,请参考这里的其他问题: