سؤال

حاليًا ، يستخدم تطبيقنا 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"));

المرجع: https://javamail.java.net/nonav/docs/api/javax/mail/internet/internetaddress.html#internetaddress(java.lang.string ، x

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);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top