使用sendgrid添加附件npm不起作用

时间:2015-04-12 17:51:30

标签: javascript node.js email sendgrid

我使用sendgrid Node.js模块发送电子邮件。我已在服务器上有一个文件,并希望将其添加为电子邮件的附件。我发现电子邮件很好但没有附件,所以不确定发生了什么问题。

//sendgrid credentials
var mailer = nodemailer.createTransport(sendGrid({ 
  auth: { 
    api_user: conf.mail.user, 
    api_key: conf.mail.pass
  } 
}));

//mail object
var mailObj = {
  to: toAddr, 
  from: fromAddr, 
  subject: subject, 
  html: template,
  files: [{
    path: __dirname + "/../../uploads/" + filename
  }]
};

//send mail
mailer.sendMail(mailObj, function(err, res){ 
  if (err) throw err; 
});   

以上内容包含在一个更大的函数中,该函数通过包含filename的变量。要记住的事情:

  • 文件名传递给函数
  • 该文件存在于指定的位置
  • 当前发送的电子邮件没有附件

1 个答案:

答案 0 :(得分:0)

您是否确认邮件中的附件确实没有?如果你"显示原始" (你如何做到这一点取决于你的邮件客户端),看看它,你可以看到不同的MIME部分,并确认附件是否真的不存在,或者它只是一个问题没有显示。

如果它在那里但没有看到,这是MIME订单的问题,可能与SendGrid帐户设置有关,称为"将纯文本转换为HTML"。 邮件客户端从下往上读取邮件,并期望附件位于底部。如果他们在附件之前显示内容,他们会停止显示内容,并且永远不会看到'附件。 在将消息传递给SendGrid之前,根据消息的组装方式,它们可能会在末尾添加HTML,从而使附件有效地不可见。您可以通过选中"不要转换"来关闭该设置。您的帐户设置下的选项。

如果附件确实不存在,您可以检查相同的MIME部分,看看是否:

  • 附件在那里,但是0kb,意味着文件没有被正确读取。
  • 附件MIME解析在那里,但只由文件路径组成,这意味着代码只是字面上附加路径字符串,而不是读取文件。
相关问题