تعيين من الاسم في javax.mail.mimessage؟
-
21-09-2019 - |
سؤال
حاليًا ، يستخدم تطبيقنا javax.mail لإرسال بريد إلكتروني ، باستخدام javax.mail.mailmessage. قمنا بتعيين رؤوس البريد الإلكتروني بهذه الطريقة:
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress("mail@companyxyz.com"));
هذا يعمل بشكل جيد ، لكننا نود أن نجعل قسم "من" أكثر سهولة في الاستخدام. حاليًا ، سيرى شخص ما يتلقى بريدًا إلكترونيًا "mail@companyxyz.com" في قسم "من" من صندوق الوارد الخاص به. بدلاً من ذلك ، نودهم أن يروا "شركة XYZ" هناك. أعتقد أن هذا قد يتم على الأرجح باستخدام طريقة Addheader () ، لكنني لست متأكدًا من اسم الرأس.
المحلول
حسنًا ، كانت قراءة الوثائق حول جميع الفصول المعنية مفيدة. يجب أن يكون بناء الجملة الصحيح
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress("mail@companyxyz.com", "Company XYZ"));
مصدر: https://javamail.java.net/nonav/docs/api/javax/mail/internet/internetaddress.html
نصائح أخرى
إذا كنت ترغب في تخزين البريد الإلكتروني + الاسم في سلسلة واحدة (أسهل من الاحتفاظ بسلسلة اثنين):
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress("Company XYZ <mail@companyxyz.com>"));
في حالة استخدام النص الموضعي مع أحرف خاصة مثل 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"));
ic = new InitialContext();
final Session session = (Session) ic.lookupLink(snName);
final Properties props = session.getProperties();
props.put("mail.from", mailFrom); //blabla@mail.com
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);