首先,我们需要打开QQ邮箱的SMTP服务,因为QQ邮箱对于一般的用户都是默认关闭SMTP服务的。
- 打开QQ邮箱,点击设置
- 点击帐户
- 找到SMTP服务,默认关闭,点击开启,验证后给出一个用于使用SMTP的16位授权码,此处这个口令一定牢记。
代码前准备:
要使用Java的邮箱功能需要activation.jar和mail.jar包
package cn.itcast.shop.utils;
import java.security.Security;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
/**
* 邮件发送工具类
* @author Administrator
*
*/
public class MailUtils {
/**
* 发送邮件
* @param to :收件人
* @param code :激活码
*/
public static void sendMail(String to,String code){
/**
* 1、获得一个Session对象;
* 2、创建一个代表邮件的对象Message;
* 3、发送邮件Transport对象。
*/
// 创建Properties类用于记录邮箱的一些属性
Properties props = new Properties();
// 设置发送邮件的主机:此处填写SMTP发件服务器
props.setProperty("mail.smtp.host", "smtp.qq.com");
// 端口号,QQ邮箱给出了两个端口
props.put("mail.smtp.port", "587");
// 表示SMTP发送邮件,必须进行身份验证
props.put("mail.smtp.auth", "true");
// 获得连接对象Session:javax.mail.Session
Session session = Session.getInstance(props, new Authenticator(){
@Override
protected PasswordAuthentication getPasswordAuthentication() {
// 发送邮件服务器邮箱账号、密码(此密码是QQ邮箱给的16位授权码)
return new PasswordAuthentication("******@qq.com","16位授权码");
}
});
// 创建邮件消息对象
Message message = new MimeMessage(session);
try {
// 设置发件人
message.setFrom(new InternetAddress("2311239756@qq.com"));
// 设置收件人TO,(抄送CC,密送BCC)
message.addRecipient(RecipientType.TO, new InternetAddress(to));
// 设置标题
message.setSubject("激活邮件");
// 设置邮件内容
message.setContent("邮件内容","text/html;charset=UTF-8");
// 发送邮件
Transport.send(message);
} catch (AddressException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
sendMail("接收邮件的邮箱@qq.com", "激活码用于用户注册");
}
}