Java使用javax.mail.jar发送邮件例题
引言
一、导包
提取码:0nxi
基础知识
首先
- 邮件传输有两个协议:POP3和SMTP
- 发送邮件协议smtp
1. 创建Session会话: Session.getDefaultInstance()
- 再准备邮件发送上去
- 创建sessin会话之前,要为这个session对象设置一些参数 定义在Properties属性文件中
2. 获取一个传输对象(ts):session.getTransport()
- 通过session.getTransport() 代码如下
Transport ts = null;
try {
//获取到传输的对象 发送邮件
ts = session.getTransport();
} catch (Exception e) {
e.printStackTrace();
}
- ts.connect()方法给3个参数,
4. 构建一封邮件:MimeMessage
MimeMessage message = new MimeMessage(session);
5. 为message配置发件人、收件人、主题、正文等信息
- 发件人:message.setFrom();//给定参数是一个new InternetAddress()对象,再把文我的账号给他
- 收件人:message.setRecipient(); //Message.RecipientType.TO表示收件人 //Message.RecipientType.CC抄送//A发邮件给B,但希望领导C也看见,就抄送给C //Message.RecipientType.BCC暗送
- 主题:message.setSubject();
- 正文:message.setContent();//还要给个编码格式
6. 保存message、传输对象ts发送
//保存邮件
message.saveChanges();
//发送邮件
ts.sendMessage(message,message.getAllRecipients());
7. 关闭传输对象ts
finally {
if(ts!=null){
try {
ts.close();
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
完整代码
封装成一个Utils工具类
- 可以通过传一个user类,里面定义了邮箱地址u_email,也就是收件人的邮箱账号
- 邮件的正文message.setContent发送的是给这个user类一个激活连接
String ip = InetAddress.getLocalHost().getHostAddress(); String url = "http://"+ip+":8080/user?method=active&c="+user.getUcode(); message.setContent(user.getUname()+",您好<br>欢迎注册myshop商城!请点击连接进行激活:<a href="+url+">"+url+"</a>","text/html;charset=utf-8");
- MimeMessage对象通过写一个creatMsg方法,返回message
- private static MimeMessage createMsg(Session session,String myAccount,User user){}
