web-dev-qa-db-ja.com

javax.mail.MimeMessageでfrom名を設定しますか?

現在、アプリケーションはjavax.mail.MailMessageを使用して、javax.mailを使用して電子メールを送信します。メールのFromヘッダーを次のように設定します。

Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress("[email protected]"));

これは正常に機能しますが、「From」セクションをもう少し使いやすくしたいと思います。現在、メールを受信したユーザーには、受信トレイの[差出人]セクションに「[email protected]」が表示されます。代わりに、「会社XYZ」が表示されるようにしてください。これはおそらくaddHeader()メソッドで行われると思いますが、ヘッダー名がどうなるかはわかりません。

43
abeger

OK、関連するすべてのクラスに関するドキュメントを読むと役に立ちました。正しい構文は

Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress("[email protected]", "Company XYZ"));

ソース: https://javamail.Java.net/nonav/docs/api/javax/mail/internet/InternetAddress.html

103
abeger

メールと名前を1つの文字列に保存する場合(2つの文字列を保持するよりも簡単です):

Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress("Company XYZ <[email protected]>"));
17
checklist

\ u00FAのような特殊文字を含むローカライズされたテキストを使用した場合、一部のpop3クライアントのメールアドレスエイリアスをエンコードしたときに問題が発生しました。

MimeMessage m = new MimeMessage(session);
m.setFrom();

個別のメールアドレスとエイリアスを呼び出すことで解決できます。

MimeMessage m = new MimeMessage(session);
            m.setFrom(new InternetAddress(session.getProperty("mail.from"), session.getProperty("mail.from.alias"),"UTF8"));

参照: https://javamail.Java.net/nonav/docs/api/javax/mail/internet/InternetAddress.html#InternetAddress(Java.lang.String、%20Java.lang.String、%20Java。 lang.String)

1
Adrian Adzik
ic = new InitialContext();

final Session session = (Session) ic.lookupLink(snName);
final Properties props = session.getProperties();

props.put("mail.from", mailFrom); //[email protected]
props.put("mail.from.alias", mailName);//"joao Ninguem"

// Create a message with the specified information.
final MimeMessage msg = new MimeMessage(session);
msg.setSubject(subject);
msg.setSentDate(new Date());

msg.setFrom(new InternetAddress(session.getProperty("mail.from"), session.getProperty("mail.from.alias"), "UTF8"));


msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(mailTo, false));
msg.setContent(body, "text/html");

// Create a transport.
Transport.send(msg);
1
Rodrigo Turassa