1

以下のように、添付ファイル付きの電子メールを送信するためのJavaコードがあります。

String myEmailId = "xx@yahoo.co.in";
String myPassword = "@xx";
String senderId = "yy@gmail.com";
try {
    MultiPartEmail email = new MultiPartEmail();
    email.setSmtpPort(587);
    email.setAuthenticator(new DefaultAuthenticator(myEmailId, myPassword));
    email.setDebug(true);
    email.setHostName("smtp.mail.yahoo.com");
    email.addTo(senderId);
    email.setFrom(myEmailId);
    email.setSubject("The picture");
    email.setMsg("<font face='verdana' size='3'>Here is the picture you wanted "
            + "<table>"
            + "<tr><th>id</th><th>Name</th></tr>"
            + "<tr><th>1</th><th>Name 1</th></tr>"
            + "<tr><th>2</th><th>Name 2</th></tr>"
            + "<tr><th>3</th><th>Name 3</th></tr>"
            + "<tr><th>4</th><th>Name 4</th></tr>"
            + "</table>"
            + "</font>");

    // add the attachment
    EmailAttachment attachment = new EmailAttachment();
    attachment.setPath("/Users/alkandari/Desktop/SMART/Fahim/test_small.pdf");
    attachment.setDisposition(EmailAttachment.ATTACHMENT);
    email.attach(attachment);

    attachment = new EmailAttachment();
    attachment.setPath("/Users/alkandari/Desktop/SMART/Fahim/test.pdf");
    attachment.setDisposition(EmailAttachment.ATTACHMENT);
    email.attach(attachment);

    // send the email
    email.send();
    System.out.println("Mail sent!");
} catch (Exception e) {
    System.out.println("Exception :: " + e);
}

HTMLコードがそのまま表示されていることを除いて、すべて正常に機能しています。

メールで私が得るのは

<font face='verdana' size='3'>Here is the picture you wanted <table><tr><th>id</th><th>Name</th></tr><tr><th>1</th><th>Name 1</th></tr><tr><th>2</th><th>Name 2</th></tr><tr><th>3</th><th>Name 3</th></tr><tr><th>4</th><th>Name 4</th></tr></table></font>

パラメータはありますか。受信する電子メールには、適切な HTML 形式のデータが含まれます。

ノート :

実際Email email = new SimpleEmail();、HTML部分が完全に機能している上記のものを使用して実行していました。ただし、アタッチメントに切り替える必要がある場合は、 を使用する必要がありましたMultiPartEmail email = new MultiPartEmail();

4

3 に答える 3

3

将来の私(および他の人)が完全なコードを見ることができるように、ここで私の答えを提供したいと思います。なんらかの理由で、おそらく私だけですが、これらの回答が不完全である、または私にはうまくいかないことがわかりました。OP のように、PDF が添付された HTML ベースのメールを送信しようとしていました。これが、commons-email 1.4 を使用して最終的に得られたものです。コメントをお待ちしております。

輸入品:

import org.apache.commons.mail.DefaultAuthenticator;
import org.apache.commons.mail.MultiPartEmail;
import org.apache.commons.mail.EmailAttachment;

メールオブジェクトを構築します (明らかに、ここでの実際の詳細はあなたのものでなければなりません)

MultiPartEmail email = new MultiPartEmail();
email.setHostName("smtp.yourhosthere.com");
email.setSmtpPort(25);
// authentication not always needed depending on your environment
email.setAuthenticator(new DefaultAuthenticator("username", "password"));
email.setTo("to@yourhosthere.com");
email.setFrom("from@yourhosthere.com");

今あなたのメッセージの詳細。私の HTML には HTML タグと BODY タグが含まれていることに注意してください。

email.setSubject("Your subject here");
email.addPart("<div>Your html here</div>", "text/html; charset=UTF-8");

これで添付ファイル

EmailAttachment attachment = new EmailAttachment();
attachment.setPath(filepath);
attachment.setDisposition(EmailAttachment.ATTACHMENT);

email.attach(attachment);

今すぐメールを送信

email.send();
于 2015-12-03T02:38:36.790 に答える
2

答えが出ました。

に変更MultiPartEmail email = new MultiPartEmail();しただけMultiPartEmail email = new HtmlEmail();

于 2012-11-02T11:29:55.713 に答える
1

使えませんemail.setMsg()

ただし、メッセージ本文を次のように設定します。

email.addPart( "<h1>MSG BODY</h1> <u>your</u> name", "text/html; charset=UTF-8" );

于 2015-08-20T16:29:33.977 に答える