我正在開發一個非常基本的日曆與Angular和節點,我還沒有找到任何代碼。是否可以使用nodeJS創建Outlook的會議請求?
工作流程如下:創建事件,輸入收件人的電子郵件地址,驗證事件。 這會觸發發送給收件人的電子郵件。郵件應該處於Outlook會議請求格式(不是附加對象)。
這意味着,當在Outlook中收到會議時,會議將自動添加到日曆中。
這可能嗎?如果是的,只能在Node端使用javascript嗎?
我正在開發一個非常基本的日曆與Angular和節點,我還沒有找到任何代碼。是否可以使用nodeJS創建Outlook的會議請求?
工作流程如下:創建事件,輸入收件人的電子郵件地址,驗證事件。 這會觸發發送給收件人的電子郵件。郵件應該處於Outlook會議請求格式(不是附加對象)。
這意味着,當在Outlook中收到會議時,會議將自動添加到日曆中。
這可能嗎?如果是的,只能在Node端使用javascript嗎?
對於那些仍在尋找答案了類似的系統的時候,這裏就是我設法獲得我的完美解決方案。 我用iCalToolkit創建日曆對象。
確保設置所有相關字段(組織者和參加者使用RSVP)非常重要。
最初我使用Postmark API服務來發送我的電子郵件,但是這個解決方案只能通過發送一個ics.file附件來工作。
我切換到郵戳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: '[email protected]',
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);
}
});
這將與接受,拒絕和拒絕按鈕,一個真正的會議請求。
這真是令人難以置信的工作量需要通過這樣一個微不足道的功能,以及所有這些都沒有很好的記錄。 希望這有助於。
如果您不想在早期接受的解決方案中使用smtp服務器方法,則可以使用Exchange專用解決方案。目前接受的答案有什麼錯誤?它不會在發件人的日曆中創建會議,您不具有會議項目的所有權以供發件人Outlook/OWA進一步修改。
這裏是使用NPM包ews-javascript-api
var ews = require("ews-javascript-api");
var credentials = require("../credentials");
ews.EwsLogging.DebugLogEnabled = false;
var exch = new ews.ExchangeService(ews.ExchangeVersion.Exchange2013);
exch.Credentials = new ews.ExchangeCredentials(credentials.userName, credentials.password);
exch.Url = new ews.Uri("https://outlook.office365.com/Ews/Exchange.asmx");
var appointment = new ews.Appointment(exch);
appointment.Subject = "Dentist Appointment";
appointment.Body = new ews.TextBody("The appointment is with Dr. Smith.");
appointment.Start = new ews.DateTime("20170502T130000");
appointment.End = appointment.Start.Add(1, "h");
appointment.Location = "Conf Room";
appointment.RequiredAttendees.Add("[email protected]");
appointment.RequiredAttendees.Add("[email protected]");
appointment.OptionalAttendees.Add("[email protected]");
appointment.Save(ews.SendInvitationsMode.SendToAllAndSaveCopy).then(function() {
console.log("done - check email");
}, function (error) {
console.log(error);
});
嘿,我使用快速框架來創建展望日曆,即使當我使用你的功能我得到錯誤作爲會議未定義在行中:builder.method = meeting.method; 可以請你幫我解決這個問題.. –
會議是包含所有日曆事件信息(屬性:方法,事件。內部事件你有開始,結束,組織者,參與者等) – vonwolf
但爲什麼我在那裏得到錯誤? –