java mail 发件人昵称,Java使用javax.mail发送邮件 解决收件人、发件人名字乱码问题...

/**

* 格式化 Name 的地址

* @param name 名字

* @param email Email地址

* @return 格式化的地址

*/

public static String formatAddress(String name, String email) {

if (StringHelper.isNullOrEmpty(name)) {

return email;

}

try {

return String.format("%1$s ", MimeUtility.encodeText(name, "UTF-8", "B"), email);

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

return email;

}

上面的函数用来格式化一个类似 Name 的收件人或发件人地址。

解决名字乱码主要是其中一句:

MimeUtility.encodeText(name, "UTF-8", "B")

由于Email的规范,在smtp传输中不可使用中文字符。所以可以使用内置类的MimeUtility方法encodeText将收件人、发件人名字编码即可。编码方式有两种:"B"代表Base64、"Q"代表QP(quoted-printable)方式。

注意:不能将名字和email地址一起编码,如直接编码 "Name " 后当做收件人就会出错。

注意:Mail的Subject和Content不需要我们显式的编码,在Set的时候这两项会被javax.mail自动编码。

上面的编码中指定了"UTF-8"字符集,是因为我的来源字符串在DB或者.properties文件中的都是UTF-8编码存储的。如果您的来源字符串字符集不一致,请修改成相应的。(直接写在源代码中的中文编码是"iso-8859-1")

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaMail 是用于发送和接收电子邮件的 Java API。可以使用 JavaMail API 从多个发件人发送电子邮件,下面是一个示例: ```java import java.util.Properties; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class MultipleSenders { public static void main(String[] args) { // 发件人列表 String[] fromList = {"sender1@example.com", "sender2@example.com"}; // 收件人 String to = "recipient@example.com"; // SMTP 服务器地址 String host = "smtp.example.com"; // 邮件标题 String subject = "JavaMail Test"; // 邮件内容 String text = "This is a test email from JavaMail."; // 发件人用户名和密码 String username = "username"; String password = "password"; // 设置邮件会话属性 Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.host", host); props.put("mail.smtp.port", "587"); // 获取邮件会话 Session session = Session.getInstance(props, new javax.mail.Authenticator() { protected javax.mail.PasswordAuthentication getPasswordAuthentication() { return new javax.mail.PasswordAuthentication(username, password); } }); try { // 创建邮件消息 Message message = new MimeMessage(session); message.setFrom(new InternetAddress(fromList[0])); for (int i = 1; i < fromList.length; i++) { message.addFrom(InternetAddress.parse(fromList[i])); } message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); message.setSubject(subject); message.setText(text); // 发送邮件 Transport.send(message); System.out.println("Email sent successfully."); } catch (MessagingException e) { e.printStackTrace(); } } } ``` 在上面的示例中,我们使用 `addFrom()` 方法将多个发件人添加到邮件消息中。注意,SMTP 服务器可能会对此进行限制,因此请确保您遵守 SMTP 服务器的规定。另外,也要确保您有权使用添加的所有发件人地址。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值