经过两个小时的测试,终于改掉了 530 Error,然后可以把自己的邮件发出去,内心还是有点小几栋的。
一开始总是遇到这个异常
Caused by: javax.mail.AuthenticationFailedException: 530 Error: A secure connection is requiered(such as ssl).More information at
http://service.mail.qq.com/cgi-bin/help?id=28
然后点了这个链接之后发现是因为客户端设置没有开启POP3/SMTP的SSL加密..没有利用SSL进行授权 [1]
解决这两个问题后问题就得到了解决
利用这个功能呢,我们可以实现验证、激活、提示的功能以及能利用邮箱办到的事。具体看个人发挥了。比如说:
“ 最重要的是 你 想把要说的话 告诉 她 嘿嘿 ”
具体实现mail发邮件功能如下:
-
准备工作
在项目中导入mail.jar 没有的可以点这里
然后把jar包放入项目lib中
-
代码实现
1.创建Properties对象,设置相关属性和发送协议
Properties props = new Properties();
props.setxxx();
2.设置SSL
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
props.put("mail.smtp.ssl.enable", "true");
props.put("mail.smtp.ssl.socketFactory", sf);
3.创建验证器,设置个人账号和密码
Authenticator auth = new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
//设置发送人的帐号和密码
return new PasswordAuthentication("xxx@qq.com", "授权码");
}
4.创建session会话
Session session = Session.getInstance(props, auth);
5.创建Message邮件内容
Message message = new MimeMessage(session);
//设置发送者
message.setFrom(new InternetAddress("xxx@qq.com"));
//设置发送方式与接收者
message.setRecipient(RecipientType.TO, new InternetAddress(email));//email填收件人邮箱
//设置邮件主题
message.setSubject("用户激活");
//设置邮件内容
message.setContent(emailMsg, "text/html;charset=utf-8");//emailMsg邮件内容
6.发送
Transport.send(message);
-
源码
public static void sendMail(String email, String emailMsg)
throws AddressException, MessagingException, GeneralSecurityException {
// 1.创建一个程序与邮件服务器会话对象 Session
Properties props = new Properties();
//设置发送的协议
props.setProperty("mail.transport.protocol", "SMTP");
props.setProperty("mail.smtp.auth", "true");// 指定验证为true
//设置发送邮件的服务器
props.setProperty("mail.host", "smtp.qq.com");
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
props.put("mail.smtp.ssl.enable", "true");
props.put("mail.smtp.ssl.socketFactory", sf);
// 创建验证器
Authenticator auth = new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
//设置发送人的帐号和密码
return new PasswordAuthentication("xxx@qq.com", "授权码");
}
};
Session session = Session.getInstance(props, auth);
// 2.创建一个Message,它相当于是邮件内容
Message message = new MimeMessage(session);
//设置发送者
message.setFrom(new InternetAddress("xxx@qq.com"));
//设置发送方式与接收者
message.setRecipient(RecipientType.TO, new InternetAddress(email));
//设置邮件主题
message.setSubject("用户激活");
//设置邮件内容
message.setContent(emailMsg, "text/html;charset=utf-8");
// 3.创建 Transport用于将邮件发送
Transport.send(message);
}