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

我正在使用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; }); 

上面是包含在一个更大的函数,通过包括filenamevariables。 需要牢记的是:

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

你是否证实附件确实不在消息中? 如果你“显示原始的”(你怎么做取决于你的邮件客户端),并通过它看,你可以看到不同的MIME部分,并确认附件是否真的不存在,或者它只是一个问题不被显示。

如果它存在但没有看到,这是一个MIME命令的问题,并且可能与SendGrid帐户设置有关,称为“将纯文本转换为HTML”。 邮件客户端从下往上阅读邮件,并期望附件位于底部。 如果他们在附件之前显示内容,则停止显示内容,并且不会“看见”附件。 根据消息在传递到SendGrid之前的组装方式,它们可能会将HTML添加到最后,从而使附件无法看到。 您可以通过选中您的账户设置下的“不转换”选项来closures该设置。

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

  • 附件在那里,但是是0kb,这意味着该文件没有被正确读取。
  • 附件MIMEparsing是在那里,但只是由文件path组成,这意味着代码只是从字面上附加pathstring,而不是读取文件。