2016-08-27 4 views
2

캘린더에 ics를 사용하여 이벤트를 성공적으로 완료했지만 .ics 첨부 파일을 보내고 싶습니다.이 코드를보고 변경해야하는 부분을 알려주십시오. event.ics 파일을 받았지만 mail 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

예. 내가 바 꾸었습니다. – 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

Thanks @Justin Steele – Alex

+1

@Alex가 문제를 해결 했습니까? –

+0

여전히 첨부 파일로 첨부 파일을 보낼 수 없습니다. – Alex

관련 문제