2017-10-22 20 views
0

NodeJsを使用して、添付ファイルpdf付きの電子メール(aws ses経由)を送信しています。現在、私はpdf添付ファイルの中にhtmlコンテンツを追加しようとしています。添付のpdfを受け取ったとき、私はpdfファイルを開くことができません。ファイルが破損しているというエラーが表示されます。あなたの情報については、ここにコードを追加しました。私はこの設定SES電子メールでPDF添付ファイルを追加する方法 - ノードjs

var message = '<html><body ><div style="margin: auto; width: 96%; border: 6px solid black; vertical-align:middle; text-align:center;height:auto"><img style="width: 204px; height: 128px;" src="image.png" /></div></body></html>'; 

var ses_mail = "From: 'Email' <" + email + ">\n"; 
ses_mail = ses_mail + "To: " + email + "\n"; 
ses_mail = ses_mail + "Subject: Subject Email\n"; 
ses_mail = ses_mail + "MIME-Version: 1.0\n"; 
ses_mail = ses_mail + "Content-Type: multipart/mixed; boundary=\"NextPart\"\n\n"; 
ses_mail = ses_mail + "--NextPart\n"; 
ses_mail = ses_mail + "Content-Type: text/html; charset=us-ascii\n\n"; 
ses_mail = ses_mail + message+"\n"; 
ses_mail = ses_mail + "--NextPart\n"; 
ses_mail = ses_mail + "Content-Type: application/pdf;\n"; 
ses_mail = ses_mail + "Content-Disposition: attachment; filename=\"attachment.pdf\"\n\n"; 
ses_mail = ses_mail + "Content-Transfer-Encoding: utf-8\n\n" 
ses_mail = ses_mail + message + "\n"; 
ses_mail = ses_mail + "--NextPart--"; 

var params = { 
    RawMessage: { Data: new Buffer(ses_mail)}, 
    Destinations: [ email ], 
    Source: "'AWS Tutorial Series' <" + email + ">'" 
}; 

ses.sendRawEmail(params, function(err, data) { 
    if(err) { 
     console.log('failed'); 
    } 
    else { 
     console.log('success'); 
    } 
}); 
}); 
+0

に転送エンコードを変更、その後、バッファとしてPDFファイルの内容を読み、BASE64としてそれを符号化することである、定義を検討単一文字列が必要な場合は、一行の配列を作成してから[結合する](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/join)を一度まとめてください。 – tadman

答えて

0

追加しようとしているPDFの内容はもちろん、PDFのための有効なコンテンツではありませんHTMLメッセージ、あるには何もないのです場合は私に知らせてください。あなたが行うことができますが代わりに本当に冗長である、一緒にこのような文字列を壊しをBase64

pdfContent = pdfBuffer.toString('base64'); 
ses_mail = ses_mail + "Content-Disposition: attachment; filename=\"attachment.pdf\"\n\n"; 
ses_mail = ses_mail + "Content-Transfer-Encoding: base64\n\n" 
ses_mail = ses_mail + pdfContent + "\n"; 
関連する問題