【问题标题】:nodemailer node.js missing attachment or can't opennodemailer node.js 缺少附件或无法打开
【发布时间】:2015-12-14 23:48:29
【问题描述】:

我已经开始用 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'

如果我使用带有 http://... 的 URL,我也可以解析文件。任何提示我都会很高兴。

【问题讨论】:

  • 如果我使用:主机:'mail.server.com',端口:'25',安全:false,身份验证:{用户:'user@server.com',通过:'pass' }, tls:{ ciphers:'SSLv3' }, authMethod: 'PLAIN' 我收到一个错误,无法验证第一个证书

标签: javascript node.js nodemailer


【解决方案1】:

我通过设置一些额外的传输选项并使用 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
}));

【讨论】:

  • 这是个坏主意。您正在发送未加密的邮件
  • 您建议进行哪些调整?这是非常过时的,我希望这段代码不再使用......但这是第一次尝试,我需要让它工作......
猜你喜欢
  • 2019-06-30
  • 2016-03-30
  • 2015-12-21
  • 1970-01-01
  • 2020-11-17
  • 2018-06-15
  • 1970-01-01
相关资源
最近更新 更多