Java Mail
使用Java Mail需要使用javax.mail的jar包
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.4</version>
</dependency>
主要api为:
Properties props=new Properties();
props.put("mail.smtp.host","smtp.163.com");//邮件服务器
props.put("mail.smtp.auth","true");
Session session=Session.getInstance(props);//会话session
//构造信息体
MimeMessage message =new MimeMessage(session);//发件地址
Address address = new InternetAddress("test@163.com");
message.setFrom(address);
//收件地址
Address toAddress = new InternetAddress("test@qq.com");
message.setRecipient(MimeMessage.RecipientType.TO, toAddress);
//主题
message.setSubject("Hello world");
//正文
message.setText("Hello world");
message.saveChanges();
Transport transport = session.getTransport("smtp");
transport.connect("smtp.163.com", "test@163.com", "password"); //连接
transport.sendMessage(message, message.getAllRecipients());
transport.close();
抽取为工具类方便使用:
/*** 电子邮件工具类* @author chzhang**/
public class MailUtil {/*** 发送电子邮件* @param addr 收件人地址* @param subject 主题* @param text 内容* @throws MessagingException*/public static void sendMail(String addr,String subject,String text) throws MessagingException{Properties props=new Properties();props.put("mail.smtp.host","smtp.163.com");props.put("mail.smtp.auth","true");Session session=Session.getInstance(props);//构造信息体 MimeMessage message =new MimeMessage(session);//发件地址 Address address = new InternetAddress("邮箱地址@163.com"); message.setFrom(address);//收件地址 Address toAddress = new InternetAddress(addr); message.setRecipient(MimeMessage.RecipientType.TO, toAddress);//主题 message.setSubject(subject);//正文 message.setText(text);message.saveChanges();Transport transport = session.getTransport("smtp"); transport.connect("smtp.163.com", "邮箱地址@163.com", "密码"); transport.sendMessage(message, message.getAllRecipients());transport.close();}}
优化:
使用配置文件解耦,以后更改邮箱直接修改配置文件即可,不用修改java类
使用Properties类进行操作
Properties props=new Properties();
//props.put("mail.smtp.host","smtp.163.com");//邮件服务器
//props.put("mail.smtp.auth","true");InputStream in = MailUtil.class.getClassLoader().getResourceAsStream("mail.properties");
if (in == null) {throw new RuntimeException("配置文件不存在");
}
props.load(in);
/*取值使用props.getProperty("mail.host");mail.properties:mail.host=smtp.163.commail.username=mail.password=mail.from=*/