2017-03-20 50 views
0

私はSendgridを使用して、GAEのアプリケーションから電子メールを送信しています。うまくいきますが、PDFを添付ファイルとして送信できるようにしたいと考えています。 プロジェクトでSendgrid.jarファイルを使用していません。私はSendgrid.javaを使いました。このクラスには添付ファイルを追加できるメソッドはありません。誰か助けてくれますか?Sendgridを通じて添付ファイルとしてPDFを送信します。

答えて

0

はSendgridて、添付ファイルとしてPDFでメールを送信するサーブレットのコードです:

@Override 
protected void doPost(HttpServletRequest req, HttpServletResponse resp) { 
    .... 

    ByteArrayOutputStream os = null; 
    try { 
     PDFGenerator pdfGenerator = new PDFGenerator(invoiceOut); 
     os = pdfGenerator.getPDFOutputStream(); 
    } catch (Exception e) { 
     .... 
    } 

    SendGrid sendgrid = new SendGrid(Constants.SENDGRID_API_KEY); 
    SendGrid.Email email = new SendGrid.Email(); 
    email.addTo(....); 
    email.setFrom(....); 
    email.setFromName(....); 
    email.setSubject(....); 
    email.setHtml("......"); 

    ByteBuffer buf = null; 
    if (os == null) { 
     //error... 
    } else { 
     buf = ByteBuffer.wrap(os.toByteArray()); 
    } 

    InputStream attachmentDataStream = new ByteArrayInputStream(buf.array()); 

    try { 
     email.addAttachment("xxxxx.pdf", attachmentDataStream); 
     SendGrid.Response response = sendgrid.send(email); 

    } catch (IOException e) { 
     .... 
     throw new RuntimeException(e); 
    } catch (SendGridException e) { 
     .... 
     throw new RuntimeException(e); 
    } 

} 

PDFGeneratorはgetPDFOutputStream方法がByteArrayOutputStreamとしてPDFを返している私のクラスの1つです。

0

API docsに記載されているように、SendGridのライブラリを使用するよりJSONリクエスト本体を直接作成する方が簡単です。 JSONデータを自分で作成した後は、SendGridライブラリを使用してリクエストを送信します。

JSONデータを作成するには、少なくともファイル名とコンテンツ(PDFファイル)を指定する必要があります。 JASONデータに追加する前にPDFファイルをBase64でエンコードしてください。

私はコードをいくつか含めることにしましたが、私はPythonを使用してJavaを使用していません。ここで

関連する問題