我正在使用 Angular 和 Node 开发一个非常基本的日历,但我还没有找到任何代码。
工作流程如下:创建一个事件,输入收件人的电子邮件地址,验证事件。 这会触发发送给收件人的电子邮件。邮件应采用 outlook session 请求格式(不是附加对象)。
这意味着当在 Outlook 中收到 session 时,该 session 会自动添加到日历中。
这可能吗?如果是,是否可以在 Node 端仅使用 javascript?
最佳答案
对于那些仍在寻找答案的人,以下是我如何设法为我找到完美的解决方案。 我使用 iCalToolkit 创建了一个日历对象。
确保所有相关字段都已设置(组织者和与会者 RSVP)很重要。
最初我使用 Postmark API 服务来发送我的电子邮件,但这个解决方案只能通过发送 ics.file 附件来工作。
我切换到 Postmark SMTP 服务,您可以在其中将 iCal 数据嵌入邮件中,为此我使用了 nodemailer。
这是它的样子:
var icalToolkit = require('ical-toolkit');
var postmark = require('postmark');
var client = new postmark.Client('xxxxxxxKeyxxxxxxxxxxxx');
var nodemailer = require('nodemailer');
var smtpTransport = require('nodemailer-smtp-transport');
//Create a iCal object
var builder = icalToolkit.createIcsFileBuilder();
builder.method = meeting.method;
//Add the event data
var icsFileContent = builder.toString();
var smtpOptions = {
host:'smtp.postmarkapp.com',
port: 2525,
secureConnection: true,
auth:{
user:'xxxxxxxKeyxxxxxxxxxxxx',
pass:'xxxxxxxPassxxxxxxxxxxx'
}
};
var transporter = nodemailer.createTransport(smtpTransport(smtpOptions));
var mailOptions = {
from: 'message@domain.com',
to: meeting.events[0].attendees[i].email,
subject: 'Meeting to attend',
html: "Anything here",
text: "Anything here",
alternatives: [{
contentType: 'text/calendar; charset="utf-8"; method=REQUEST',
content: icsFileContent.toString()
}]
};
//send mail with defined transport object
transporter.sendMail(mailOptions, function(error, info){
if(error){
console.log(error);
}
else{
console.log('Message sent: ' + info.response);
}
});
这会发送一个带有接受、拒绝和拒绝按钮的真实 session 请求。
为了实现如此微不足道的功能而需要完成的工作量以及所有这些都没有得到很好的记录,真是令人难以置信。 希望这会有所帮助。
关于javascript - 是否可以使用 nodeJS 创建 outlook 的 session 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31082000/