Node.js 如何在node js中通过电子邮件附加.ics文件?
我正在使用ics为日历成功完成活动,但我想发送一些带有Node.js 如何在node js中通过电子邮件附加.ics文件?,node.js,email,sendgrid,Node.js,Email,Sendgrid,我正在使用ics为日历成功完成活动,但我想发送一些带有.ics附件的文本,为此我尝试此代码,请查看并告诉我必须更改的位置。 我得到event.ics文件,但想发送包含邮件文本/html内容的文件 var ics = require('ics'); var options = { eventName: 'Fingerpainting lessons', filename: 'event1.ics', dtstart: date, location: 'Here an
.ics
附件的文本,为此我尝试此代码,请查看并告诉我必须更改的位置。
我得到event.ics文件,但想发送包含邮件文本/html内容的文件
var ics = require('ics');
var options = {
eventName: 'Fingerpainting lessons',
filename: 'event1.ics',
dtstart: date,
location: 'Here and there',
email: {
name: 'alex bob',
email: email
}
};
ics.createEvent(options, null, function(err, calendar) {
if (!err)
{
console.log('Event file',calendar);
var filePath = path.join('vabo_email', 'email.html');
fs.readFile(filePath, {encoding: 'utf-8'},
function(err, data) {
if ( ! err )
{
var helper = require('sendgrid').mail;
from_email = new helper.Email('booking@callvabo.com')
to_email = new helper.Email(email)
subject = subject
//Dynamic content
var data = data.replace("$content", bodycontent)
content = new helper.Content('text/html', data)
//content = new helper.Content("text/Calendar",calendar)
mail = new helper.Mail(from_email, subject, to_email,content);
var sg = require('sendgrid')('secretekey');
var requestBody = mail.toJSON();
var request = sg.emptyRequest();
request.method = 'POST';
request.path = '/v3/mail/send';
request.body = requestBody;
data = new helper.Content("text/Calendar",calendar)
request.attachments = [{'filename': 'calendar.ics', 'content': data}]
sg.API(request, function (error, response) {
if ( ! error )
{
console.log('mail send Successfully to',email);
}
else
{
console.log('Error for send mail',error);
}
});
}
else
{
console.log('Error for calendar',err);
}
});
}
else
{
console.log('Error for creating Event',err);
}
});
日历仅包含文件路径和名称。您需要读入文件内容,然后对文件内容进行Base64编码,最后请求。附件不正确。将附件添加到邮件对象或requestBody
mail = new helper.Mail(from_email, subject, to_email,content);
var base64Content = fs.readFileSync(calendar).toString('base64');
mail.attachments = [{'filename': 'calendar.ics', 'content': base64Content, 'type': 'text/Calendar'}]
var sg = require('sendgrid')('secretekey');
var requestBody = mail.toJSON();
var request = sg.emptyRequest();
request.method = 'POST';
request.path = '/v3/mail/send';
request.body = requestBody;
sg.API(request, function (error, response) {
谢谢@Justin Steelestill我无法将文件作为attachment@Alex,请尝试上述更改。这终于对我起作用了。但我在内容之前就有了日历,你会想删除并重新创建一个新的API密钥(在上面的代码片段中包含它之后)。如果我是你,我会尽快这样做。我看到你编辑了上面的代码。请确保您仍然销毁了该密钥并创建了一个新密钥,因为任何人都可以查看编辑历史记录以查看更改的内容并获得该API密钥。谢谢@Justin SteeleI,我也在处理此问题。我现在似乎也无法得到附件。。。