nodejs 从电子邮件发送附件作为 multipart/form-data 被 mailparser 解析
nodejs send attachments from email as multipart/form-data getting parsed by mailparser
我正在尝试解析电子邮件内容并发送电子邮件正文及其附件。我使用 mailparser 解析电子邮件内容,使用 request
库发送 multipart/form-data
POST 请求。但是,我得到
TypeError: source.on is not a function
如果电子邮件包含任何附件,则会出错。
test.js
var simpleParser = require("mailparser").simpleParser;
var request = require('request');
var sendEmail = async (emailContent) => {
try {
var parsedEmail = await simpleParser(emailContent);
} catch(e) {
return console.error(e);
}
var data = {
'ticketId': parsedEmail.subject.split('Ticket No ')[1],
'message': parsedEmail.text,
'msgFrom': 'C',
};
var formData = {
createMessageRequest: JSON.stringify(data),
attachments: parsedEmail.attachments,
}
try {
request.post({url: 'http://localhost:8085/tickets', formData: formData},
function callback(err, res, body) {
if (err) {
return console.error('upload failed: ', err);
}
console.log('Upload successful! Server responded with:', body);
return;
}
);
} catch(err) {
console.log(err);
}
}
mailparser 的 attachments
属性包含一个缓冲区,其内容在其 contents
属性中。因此,我尝试只获取内容并将它们也作为缓冲区对象发送,但没有成功。这是您可以看到来自 mailparser
的附件定义
感谢您的帮助!
我需要从每个附件的 content
创建一个缓冲区对象。 Attachments 在 mailparser 中有一个名为 content 的属性,它是一个用于保存内容的缓冲区。
var formData = {
createMessageRequest: JSON.stringify(data),
files: []
}
if (parsedEmail.attachments) {
for (ind = 0; ind < parsedEmail.attachments.length; ind++) {
formData.files.push({
value: Buffer.from(parsedEmail.attachments[ind].content),
options: {
filename: parsedEmail.attachments[ind].filename,
contentType: parsedEmail.attachments[ind].contentType
}
});
}
}
我正在尝试解析电子邮件内容并发送电子邮件正文及其附件。我使用 mailparser 解析电子邮件内容,使用 request
库发送 multipart/form-data
POST 请求。但是,我得到
TypeError: source.on is not a function
如果电子邮件包含任何附件,则会出错。
test.js
var simpleParser = require("mailparser").simpleParser;
var request = require('request');
var sendEmail = async (emailContent) => {
try {
var parsedEmail = await simpleParser(emailContent);
} catch(e) {
return console.error(e);
}
var data = {
'ticketId': parsedEmail.subject.split('Ticket No ')[1],
'message': parsedEmail.text,
'msgFrom': 'C',
};
var formData = {
createMessageRequest: JSON.stringify(data),
attachments: parsedEmail.attachments,
}
try {
request.post({url: 'http://localhost:8085/tickets', formData: formData},
function callback(err, res, body) {
if (err) {
return console.error('upload failed: ', err);
}
console.log('Upload successful! Server responded with:', body);
return;
}
);
} catch(err) {
console.log(err);
}
}
mailparser 的 attachments
属性包含一个缓冲区,其内容在其 contents
属性中。因此,我尝试只获取内容并将它们也作为缓冲区对象发送,但没有成功。这是您可以看到来自 mailparser
感谢您的帮助!
我需要从每个附件的 content
创建一个缓冲区对象。 Attachments 在 mailparser 中有一个名为 content 的属性,它是一个用于保存内容的缓冲区。
var formData = {
createMessageRequest: JSON.stringify(data),
files: []
}
if (parsedEmail.attachments) {
for (ind = 0; ind < parsedEmail.attachments.length; ind++) {
formData.files.push({
value: Buffer.from(parsedEmail.attachments[ind].content),
options: {
filename: parsedEmail.attachments[ind].filename,
contentType: parsedEmail.attachments[ind].contentType
}
});
}
}