如何使用 Mandrill 和节点请求将文件(来自 url)附加到电子邮件
How to attach a file (from url) to email using Mandrill and node request
我有一个 URL 到 Excel 文件,我正试图将其作为附件添加到 Mandrill 发送的电子邮件中。 Mandrill 需要 base64 格式的附件内容:
我正在尝试获取 Excel 文件的内容,并将其添加到我的 Mandrill 消息中,但它不起作用。我需要使用native node request,因为我不能把一堆依赖添加到整个项目中。
我认为我的问题出在我的代码没有等待请求完成,因此数据变量在传递到我的消息对象时仍然为空。但是我对此很陌生,所以我想弄清楚是否有办法在这里使用“async/await”来确保我的消息对象在请求完成后获取数据。
关于我应该在此处更改什么的任何提示?
var https = require('https');
var data = '';
var request = https.request(myExcelFileURL, function (res) {
res.on('data', function (chunk) {
data += chunk;
});
res.on('end', function () {
console.log(data);
});
});
request.on('error', function (e) {
console.log(e.message);
});
request.end();
// mandrill message
var message = {
"html": msg,
"subject": 'Test Excel Attachment',
"from_email": from,
"from_name": "Tester",
"to": [{
"email": email
}],
"headers": {
"Reply-To": email
},
"attachments": [{
"type": 'application/xlsx',
"name": 'test.xlsx',
"content": data.toString('base64') //this is coming up blank
}],
};
获取 excel 文件的请求是异步的,但您没有等待它完成。您必须在请求的 end
处理程序中调用消息发送
var data = '';
var request = https.request(myExcelFileURL, function (res) {
res.on('data', function (chunk) {
data += chunk;
});
res.on('end', function () {
console.log(data);
sendmail(data);
});
});
request.on('error', function (e) {
console.log(e.message);
});
request.end();
function sendmail (data){
var message = {
"html": msg,
"subject": 'Test Excel Attachment',
"from_email": from,
"from_name": "Tester",
"to": [{
"email": email
}],
"headers": {
"Reply-To": email
},
"attachments": [{
"type": 'application/xlsx',
"name": 'test.xlsx',
"content": data.toString('base64')
}],
};
//send the message
}
我有一个 URL 到 Excel 文件,我正试图将其作为附件添加到 Mandrill 发送的电子邮件中。 Mandrill 需要 base64 格式的附件内容:
我正在尝试获取 Excel 文件的内容,并将其添加到我的 Mandrill 消息中,但它不起作用。我需要使用native node request,因为我不能把一堆依赖添加到整个项目中。
我认为我的问题出在我的代码没有等待请求完成,因此数据变量在传递到我的消息对象时仍然为空。但是我对此很陌生,所以我想弄清楚是否有办法在这里使用“async/await”来确保我的消息对象在请求完成后获取数据。
关于我应该在此处更改什么的任何提示?
var https = require('https');
var data = '';
var request = https.request(myExcelFileURL, function (res) {
res.on('data', function (chunk) {
data += chunk;
});
res.on('end', function () {
console.log(data);
});
});
request.on('error', function (e) {
console.log(e.message);
});
request.end();
// mandrill message
var message = {
"html": msg,
"subject": 'Test Excel Attachment',
"from_email": from,
"from_name": "Tester",
"to": [{
"email": email
}],
"headers": {
"Reply-To": email
},
"attachments": [{
"type": 'application/xlsx',
"name": 'test.xlsx',
"content": data.toString('base64') //this is coming up blank
}],
};
获取 excel 文件的请求是异步的,但您没有等待它完成。您必须在请求的 end
处理程序中调用消息发送
var data = '';
var request = https.request(myExcelFileURL, function (res) {
res.on('data', function (chunk) {
data += chunk;
});
res.on('end', function () {
console.log(data);
sendmail(data);
});
});
request.on('error', function (e) {
console.log(e.message);
});
request.end();
function sendmail (data){
var message = {
"html": msg,
"subject": 'Test Excel Attachment',
"from_email": from,
"from_name": "Tester",
"to": [{
"email": email
}],
"headers": {
"Reply-To": email
},
"attachments": [{
"type": 'application/xlsx',
"name": 'test.xlsx',
"content": data.toString('base64')
}],
};
//send the message
}