最近在书上看到了一段利用java实现的邮件发送功能的案例,想想在许多网站中,注册用户时都会用到的一种短信验证的功能,觉得挺有意思,也挺有必要的,所以就想和大家分享一下,也就作为第一次博文的内容。
首先了解一下整个功能的实现步骤
- 创建Properties对象,用以保存邮件服务器等信息
- 创建Session对象
- 创建MimeMessage对象并封装邮件信息
- 利用Transport 对象的sendMessage方法发送邮件
接下来是具体步骤,此处我用的是163邮箱向qq邮箱发送邮件
1. 创建Properties对象,封装服务器信息
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.163.com");
- 通过Session的getInstance(Properties props)方法获取Session对象
Session session = Session.getInstance(props);
- 创建MimeMessage对象并封装邮件信息
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress("1234567@163.com"));//设置发送人
message.setText("Hello world");//设置邮件内容
message.setSubject("testing...");//设置主题
message.setRecipient(Message.RecipientType.TO, new InternetAddress("666666@qq.com"));//设置收件人
message.saveChanges();
4.利用Transport 对象的sendMessage方法发送邮件
Transport trans = session.getTransport("smtp"); //获取Transport对象,用于传输邮件
trans.connect("smtp.163.com","1234567@163.com","aaaaaa");//通过connect方法,设置服务器,个人邮箱地址和登陆密码,获取实例
trans.sendMessage(message, message.getAllRecipients());//发送邮件
trans.close();//关闭传输通道
下面是完整代码。
package com.xia.main;
import java.sql.Date;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class MeMail {
public static void main(String [] args){
try{
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.163.com");//添加服务器
Session session = Session.getInstance(props);//获取Session实例
session.setDebug(true);//显示调试信息
MimeMessage message = new MimeMessage(session);//MimeMessage是Message的子类,Message是一个抽象类
message.setFrom(new InternetAddress("123456@163.com"));//设置发送人
message.setText("Hello world");//设置内容
//message.setContent("testing", "text/plain");设置内容,可以设置文本格式
message.setSubject("testing...");//设置主题
message.setRecipient(Message.RecipientType.TO, new InternetAddress("111111@qq.com"));//设置收件人
message.setSentDate(new Date(0));//设置发送日期
message.saveChanges();//保证报头域同会话内容保持一致
//从指定协议中获取一个会话实例
Transport trans = session.getTransport("smtp");//获取用于传输信息的实例
trans.connect("smtp.163.com","123456@163.com","111111");//连接服务器
trans.sendMessage(message, message.getAllRecipients());//获取收件人,并发送邮件
trans.close();//关闭传输通道
System.out.println("发送成功!");
}catch(Exception e){
System.out.println("发送失败");
}
}
}