nodemailer node.js 缺少附件或无法打开
nodemailer node.js missing attachment or can't open
我已经开始用 node.js 和 nodemailer 模块组装一个简单的邮件程序。邮件程序正在运行,我可以通过服务器上的 SMTP 传输进行连接,但我无法将附件推送到邮件中。
我最初使用众所周知的 iCloud 服务模块进行设置,文件只解析文件,但当我切换到 SMTP 时,我似乎无法绕过它,这很奇怪。
// Create a SMTP transport object
var transport = nodemailer.createTransport("SMTP",{
host: 'mail.server.com',
port: 25,
secureConnection: false,
auth: {
user: 'user@server.com',
pass: 'pass'
},
tls:{
ciphers:'SSLv3'
}
});
console.log('SMTP Configured');
var mailOptions;
// Message object
app.get('/send', function (req, res) {
mailOptions = {
from: 'user@server.com',
to: req.query.toAddress,
subject: req.query.messageSub,
html: '<img src="cid:img@server" alt="" />,
attachments: [
{
fileName: 'gif.gif',
path: req.query.imageURL,
cid: 'img@server'
}
]
};
console.log('Sending Mail..');
transport.sendMail(mailOptions, function (error) {
if (error) {
console.log('Error occured');
console.log(error.message);
return;
}
console.log('Message sent successfully!');
transport.close(); // close the connection pool
res.redirect('/');
return;
});
});
我正在使用 get 方法从表单中获取字段,将其记录到控制台,我看到所有内容都已解析到 app.js 文件,但附件丢失或包含错误,这让我相信路径有问题,其他一切都发送正常。
我正在解析的路径(我也尝试手动放置它而不是 req.query.imageURL)看起来像这样,但我尝试了其他组合:
'./public/including/christmas-gif.gif'
如果我将 URL 与 http://... 一起使用,我也能够解析该文件。我很乐意提供任何提示。
我已经通过设置一些额外的传输选项并使用 smtp-transport 模块将 nodemailer 从 0.7 更新到 1.0 来解决这个问题...
// Create a SMTP transport object
var transport = nodemailer.createTransport(smtpTransport({
host: 'mail.server.com',
port: '25',
secure: false,
ignoreTLS: true,
auth: {
user: 'user@server.com',
pass: 'pass'
},
tls:{
ciphers:'SSLv3',
rejectUnauthorized: true
},
authMethod: 'PLAIN',
debug: true
}));
我已经开始用 node.js 和 nodemailer 模块组装一个简单的邮件程序。邮件程序正在运行,我可以通过服务器上的 SMTP 传输进行连接,但我无法将附件推送到邮件中。
我最初使用众所周知的 iCloud 服务模块进行设置,文件只解析文件,但当我切换到 SMTP 时,我似乎无法绕过它,这很奇怪。
// Create a SMTP transport object
var transport = nodemailer.createTransport("SMTP",{
host: 'mail.server.com',
port: 25,
secureConnection: false,
auth: {
user: 'user@server.com',
pass: 'pass'
},
tls:{
ciphers:'SSLv3'
}
});
console.log('SMTP Configured');
var mailOptions;
// Message object
app.get('/send', function (req, res) {
mailOptions = {
from: 'user@server.com',
to: req.query.toAddress,
subject: req.query.messageSub,
html: '<img src="cid:img@server" alt="" />,
attachments: [
{
fileName: 'gif.gif',
path: req.query.imageURL,
cid: 'img@server'
}
]
};
console.log('Sending Mail..');
transport.sendMail(mailOptions, function (error) {
if (error) {
console.log('Error occured');
console.log(error.message);
return;
}
console.log('Message sent successfully!');
transport.close(); // close the connection pool
res.redirect('/');
return;
});
});
我正在使用 get 方法从表单中获取字段,将其记录到控制台,我看到所有内容都已解析到 app.js 文件,但附件丢失或包含错误,这让我相信路径有问题,其他一切都发送正常。
我正在解析的路径(我也尝试手动放置它而不是 req.query.imageURL)看起来像这样,但我尝试了其他组合:
'./public/including/christmas-gif.gif'
如果我将 URL 与 http://... 一起使用,我也能够解析该文件。我很乐意提供任何提示。
我已经通过设置一些额外的传输选项并使用 smtp-transport 模块将 nodemailer 从 0.7 更新到 1.0 来解决这个问题...
// Create a SMTP transport object
var transport = nodemailer.createTransport(smtpTransport({
host: 'mail.server.com',
port: '25',
secure: false,
ignoreTLS: true,
auth: {
user: 'user@server.com',
pass: 'pass'
},
tls:{
ciphers:'SSLv3',
rejectUnauthorized: true
},
authMethod: 'PLAIN',
debug: true
}));