javamail 邮件发送工具类,解决 qq 邮箱服务器 发送失败问题
1、首先开启邮箱支持 smtp (开启方法,自行百度)
2、使用如下工具类
注意: 此处的密码为 smtp 授权码,
如果是 qq 邮箱服务器,必须要加下面的一段代码才能行,已经在下面标出
public class SendJMail {
//发送邮件的 工具类,用于发送邮件的方法
/**
*
* @param email 目标邮箱地址 例如:XXXX@qq.com
* @param emailMsg 邮件内容 例如 : 我爱你中国
* @return
* @throws Exception
*/
public static boolean sendMail(String email, String emailMsg) throws Exception {
// 发送邮件的 邮箱地址
String from = "xxxx.qq.com";
String to = email;
final String username = "xxxx.qq.com";
// 这里使用的密码 要是 smtp 的授权码才行,
final String password = "xxxxxxx";
//定义Properties对象,设置服务器信息
Properties props = System.getProperties();
props.setProperty("mail.smtp.host", "smtp.qq.com");
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.transport.protocol", "smtp");
/**
* qq 邮箱服务器,需要添加如下代码才能正常使用
*/
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
props.put("mail.smtp.ssl.enable", "true");
props.put("mail.smtp.ssl.socketFactory", sf);
//创建Session对象,session对象表示整个邮件的环境信息
Session session = Session.getInstance(props);
//设置输出调试信息
session.setDebug(true);
try {
//Message的实例对象表示一封电子邮件
MimeMessage message = new MimeMessage(session);
//设置发件人的地址
message.setFrom(new InternetAddress(from));
//设置主题
message.setSubject("邮件测试");
//设置邮件的文本内容
message.setText("Welcome to JavaMail World!");
message.setContent((emailMsg),"text/html;charset=utf-8");
//从session的环境中获取发送邮件的对象
Transport transport=session.getTransport();
//连接邮件服务器, 注意
transport.connect("smtp.qq.com",username, password);
//设置收件人地址,并发送消息
transport.sendMessage(message,new Address[]{new InternetAddress(to)});
transport.close();
return true;
} catch (MessagingException e) {
e.printStackTrace();
return false;
}
}
public static void main(String[] args) throws Exception {
SendJMail.sendMail("xxxxxxx@qq.com", "我爱你中国");
}
}
执行成功控制台出现如下内容