2016-08-27 21 views
2

私はicを使ってイベントを成功させましたが、それは正常に完了しましたが、.icsという添付ファイルを送信したいのですが、このコードを試してみてください。 私はevent.icsファイルを持っていますが、メールtext/htmlコンテンツでそのファイルを送信したいと思います。ノードjsのメールで.icsファイルを添付する方法は?

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('[email protected]') 
          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); 
    } 
}); 
+0

新しいAPIキーを削除して再作成したいと思うでしょう(上記のコードスニペットにそれを含めた後)。 –

+0

上記のコードを編集しました。誰でも編集履歴を見て、変更されたものを見てそのAPIキーを入手できるので、そのキーを破壊して新しいキーを作成してください。 –

+0

ya私はそれを変更しました – Alex

答えて

2

カレンダーには、ファイルのパスと名前のみが含まれています。あなたはファイルの内容を読み込む必要がありますし、Base64でファイルの内容をエンコードする必要があります。最後にrequest.attachmentsが正しくありません。添付ファイルをメールオブジェクトまたは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) { 
+0

ありがとう@ジャスティンスティール – Alex

+1

@Alexはあなたの問題を解決しましたか? –

+0

まだ添付ファイルとしてファイルを送信できません – Alex

関連する問題