2016-05-24 67 views
0

有一種情況是我需要將事件會議邀請發送給最終用戶。我能夠生成ICS文件並將其作爲附件發送。但ICS文件無法讀取或添加到用戶分級器中。如何使用nodejs在日曆中添加ics文件事件

代碼生成和發送電子郵件如下:

var transport = require('nodemailer-smtp-transport'), 
    transporter = nodemailer.createTransport(transport(config.mailer)), 
    sendMail = function(mailOptions) { 
     transporter.sendMail(mailOptions, function(err, response) { 
     if (err) return err; 
     return response; 
     }); 
    }, 
    eventEmailToUser = function(user, events, createdBy, mailOptions) { 
    var ical = require('ical-generator'); 
    var cal = ical(); 
     var username = user.username ? user.username : ' '; 
     var eventName = events.title ? events.title : ' '; 
     var eventDate = moment.tz(events.date, 'Asia/Kolkata'); 
     eventDate = eventDate.format('YYYY-MM-DD h:mm a'); 
     cal.addEvent({ 
     start: new Date(), 
     end: new Date(new Date().getTime() + 3600000), 
     summary: events.title, 
     uid: events._id, // Some unique identifier 
     sequence: 0, 
     description: events.description, 
     location: events.location, 
     organizer: { 
      name: createdBy.username, 
      email: createdBy.email 
     }, 
     method: 'request' 
     }); 

     var path = '/files/' + events._id + '.ics'; 
     cal.save(path, function(err, file) { 
     if (err) return err; 
     }); 

     mailOptions.alternatives = [{ 
     contentType: "text/calendar", 
     contents: new Buffer(cal).toString() 
     }]; 

     mailOptions.attachments = [{ 
     filename: events.title + '.ics', 
     filePath: path 
     }]; 
     mailOptions.html = [ 
     '<div>', 
     '<div>Hi <b>' + username + '</b><br/<br/>', 
     ' You have just confirmed to attend <b>' + eventName + '</b> on <b>' + eventDate + '</b>', 
     ' <br/><br/>', 
     'Thanks', 
     ' <br/>', 
     '</div>', 
     '<br/>', 
     '</div>' 
     ].join('\n\n'); 
     mailOptions.subject = 'Invitation for' + eventName; 
     return mailOptions; 
    }; 
    exports.sendInvite = function(req, res) { 
    var userMailOptions = { 
     to: '[email protected]', 
     from: '[email protected]', 
    }; 
    userMailOptions = eventEmailToUser(user, events, eventCreator, userMailOptions); 
    var userEmailresult = sendMail(userMailOptions); 
    }; 

回答

相關問題