2

要約すると、javax.mail を使用して Google アプリ エンジン アプリケーションで HTML メールを送信しようとしています。メールに必要な構造は次のとおりです。

    • 文章
    • 関連している
      • HTML
      • 画像

ただし、この構造を使用してメールを作成して送信しようとすると、Google App Engine で失敗します。特に 1 つの問題は、構造がどうであれ、別のマルチパート内にマルチパートを埋め込んで、Google アプリ エンジンでそのメールを送信できなかったことです。

SMTPサーバーを使用して、Google App Engineアプリケーションの外部でこの構造を使用してメールを作成して送信しようとしましたが、正常に動作します. ただし、同じコードを実際のアプリケーションに移行してもうまくいきません。

Google アプリ エンジンでプレーン テキストまたは html のみのメールを送信できることに注意してください。ただし、これらすべての要素をまとめて完全なメールを作成しようとすると失敗します。

  Message msg = new MimeMessage(session);

  Multipart multiPart = new MimeMultipart("alternative");
  Multipart relatedMp = new MimeMultipart("related");

  BodyPart txtBdp = new MimeBodyPart();
  txtBdp.setContent(msgBody, "text/plain");
  multiPart.addBodyPart(txtBdp);

  BodyPart htmlBdp = new MimeBodyPart();
  htmlBdp.setContent(htmlBody, "text/html");
  relatedMp.addBodyPart(htmlBdp);

  DataSource dataSrc = new FileDataSource(new File(imageFileNm));

  BodyPart imageBdp = new MimeBodyPart();
  imageBdp.setDataHandler(new DataHandler(dataSrc));
  imageBdp.setFileName("logo.png");
  imageBdp.setHeader("Content-ID", "<image_logo>");
  imageBdp.setDisposition(MimeBodyPart.INLINE);
  relatedMp.addBodyPart(imageBdp);

  BodyPart relatedBdp = new MimeBodyPart();
  relatedBdp.setContent(relatedMp);
  multiPart.addBodyPart(relatedBdp);

  msg.setFrom(new InternetAddress(emailAddr));
  msg.addRecipient(Message.RecipientType.TO, new InternetAddress(emailAddr, recipientNm));
  msg.setSubject(subject);
  msg.setContent(multiPart);
  msg.saveChanges();

  Transport.send(msg);

私が得ているエラーメッセージは次のとおりです。

添付ファイルには、コンテンツと名前が必要です。 google.appengine.api.mail.stdimpl.GMTransport.convertAttachments(GMTransport.java:321) com.google.appengine.api.mail.stdimpl.GMTransport.convertAttachments(GMTransport.java:295) com.google.appengine.api. mail.stdimpl.GMTransport.sendMessage(GMTransport.java:262) javax.mail.Transport.send(Transport.java:95) javax.mail.Transport.send(Transport.java:48)

送信元の電子メールに正しい名前形式を使用していて、Google App Engine の外部で動作することを考慮して、Google App Engine で実行するとこのコードが失敗する理由がわかりません。

4

0 に答える 0