1

私は解決策を得ようとしてきましたが、できません。これが全体です。次のコードを書きました

 MimeMessage message = new MimeMessage(session);
 message.setFrom(new InternetAddress(from));
 message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
 message.setSubject(subject);
 message.setSentDate(new Date());

 MimeBodyPart messagePart = new MimeBodyPart();
 messagePart.setContent(messageContent, "text/html");
 Multipart multipart = new MimeMultipart("mixed");
 multipart.addBodyPart(messagePart);

 MimeBodyPart attachmentPart = new MimeBodyPart();
 DataSource source = new ByteArrayDataSource(attachment.getBytes(), "text/plain");
 attachmentPart.setDataHandler(new DataHandler(source));
 attachmentPart.setFileName(attachmentFileName);
 multipart.addBodyPart(attachmentPart);
 message.setContent(multipart);

 try {
Transport.send(message);                
 } catch (Exception e) {
e.printStackTrace();
   }

コードはほとんど自明です。messagePart はメールで、attachmentPart は添付ファイルです。ただし、ここの messagePart はプレーン テキストではありません。HTMLです。問題は、このコードを実行するとメールは正常に送信されますが、添付ファイルがメールに添付されないことです。だから私の質問はこれに要約されます。html コンテンツの送信とメールへの添付を同時に行うことはできますか。私はここで立ち往生しています。誰でも助けてください。

4

3 に答える 3

0

追加したい

attachmentPart.setDisposition(Part.ATTACHMENT);

Part.ATTACHMENTパーツを添付ファイルとして表示する必要があることを意味します。

Part.INLINE添付ファイルをメッセージの一部として表示することを意味します。

于 2012-09-20T18:05:54.823 に答える
0

あなたのコードに明らかに問題があるとは思いません。

メッセージに添付ファイルがないことをどのように判断していますか?

「message.writeTo(System.out);」を追加すると、JavaMail が送信する内容を正確に確認できます。Transport.send を呼び出す直前。

JavaMail のどのバージョンを使用していますか? どのメールサーバーを使用していますか? 一部のメール サーバー (Exchange のことです) は、メッセージが意図したものとは異なっていても、本来あるべき姿にメッセージを再フォーマットします。

于 2012-09-20T17:25:49.593 に答える
0

Google App Engine で実行していて、ダミーのテキスト部分を追加すると、うまく機能します。ダミーテキスト部分が機能する理由はわかりませんが、まったく同じ問題があり、ダミーテキスト部分を追加してもうまくいきました。

于 2015-03-10T02:48:40.007 に答える