如何使用 Sendgrid 和 Multer 将文件附加到电子邮件
How to attach files to email using Sendgrid and Multer
我正在尝试将文件附加到 sendgrid 而不将它们存储到磁盘。我想使用流来处理它。
var multer = require('multer');
var upload = multer({ storage: multer.memoryStorage({})});
mail = new helper.Mail(from_email, subject, to_email, content);
console.log(req.body.File);
attachment = new helper.Attachment(req.body.File);
mail.addAttachment(attachment)
我认为使用流是不可能的,因为:
multer
带有 MemoryStorage
的库将整个文件内容存储在 Buffer
对象(而不是 Stream
内存中)
- Sendgrid 库不支持
Readable
streams as input。
但是您可以使用返回的 buffer 作为附件来实现它,例如:
var multer = require('multer')
, upload = multer({ storage: multer.memoryStorage({})})
, helper = require('sendgrid').mail;
app.post('/send', upload.single('attachment'), function (req, res, next) {
// req.file is the `attachment` file
// req.body will hold the text fields, if there were any
var mail = new helper.Mail(from_email, subject, to_email, content)
, attachment = new helper.Attachment()
, fileInfo = req.file;
attachment.setFilename(fileInfo.originalname);
attachment.setType(fileInfo.mimetype);
attachment.setContent(fileInfo.buffer.toString('base64'));
attachment.setDisposition('attachment');
mail.addAttachment(attachment);
/* ... */
});
如果与大附件或高并发一起使用,可能会影响内存使用(内存不足错误)。
我正在尝试将文件附加到 sendgrid 而不将它们存储到磁盘。我想使用流来处理它。
var multer = require('multer');
var upload = multer({ storage: multer.memoryStorage({})});
mail = new helper.Mail(from_email, subject, to_email, content);
console.log(req.body.File);
attachment = new helper.Attachment(req.body.File);
mail.addAttachment(attachment)
我认为使用流是不可能的,因为:
multer
带有MemoryStorage
的库将整个文件内容存储在Buffer
对象(而不是Stream
内存中)- Sendgrid 库不支持
Readable
streams as input。
但是您可以使用返回的 buffer 作为附件来实现它,例如:
var multer = require('multer')
, upload = multer({ storage: multer.memoryStorage({})})
, helper = require('sendgrid').mail;
app.post('/send', upload.single('attachment'), function (req, res, next) {
// req.file is the `attachment` file
// req.body will hold the text fields, if there were any
var mail = new helper.Mail(from_email, subject, to_email, content)
, attachment = new helper.Attachment()
, fileInfo = req.file;
attachment.setFilename(fileInfo.originalname);
attachment.setType(fileInfo.mimetype);
attachment.setContent(fileInfo.buffer.toString('base64'));
attachment.setDisposition('attachment');
mail.addAttachment(attachment);
/* ... */
});
如果与大附件或高并发一起使用,可能会影响内存使用(内存不足错误)。