关于javamail在linux服务器上发送乱码的解决方法,搜了N多资料

不写那么多了,直接把源码放上来吧


public static void send(Email email) {
try {

Properties p = new Properties(); // Properties p =
// System.getProperties();
p.put("mail.smtp.auth", "true");
p.put("mail.transport.protocol", "smtp");
p.put("mail.smtp.host", "你的邮件服务器");
p.put("mail.smtp.port", "端口");
// 建立会话
Session session = Session.getInstance(p);
Message msg = new MimeMessage(session); // 建立信息

msg.setFrom(new InternetAddress("发件人邮箱")); // 发件人

String toList = getMailList(email.getTo());//收件人列表
new InternetAddress();
InternetAddress[] iaToList = InternetAddress.parse(toList);

msg.setRecipients(Message.RecipientType.TO, iaToList); // 收件人

msg.setSentDate(new Date()); // 发送日期
BASE64Encoder enc = new BASE64Encoder();
//--------------------以下是重点内容-------------------
String subject = new String(email.getHead().getBytes("GB18030"),Charset.defaultCharset());
msg.setSubject("=?GB18030?B?" + enc.encode(subject.getBytes()) + "?="); // 邮件主题
msg.setContent(email.getContent(), "text/html;charset=GB18030");// 邮件内容

//--------------------结束--------------------------
// 邮件服务器进行验证
Transport tran = session.getTransport("smtp");
tran.connect("邮件服务器地址", "用户名", "密码");

tran.sendMessage(msg, msg.getAllRecipients()); // 发送
//System.out.println("邮件发送成功");
} catch (Exception e) {
e.printStackTrace();
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值