等待工作中闲来无事 想起来做一个简单的邮件发送 :首先 QQ 邮箱 和搜狐 和163 都不一样 QQ发送邮箱要SSL加密 也就是说 你的密码登陆是会报错的 你要在QQ设置里面获取你的邮箱:具体操作 可以从QQ官方介绍里面操作 附上地址:http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256 获取授权码后 把你的密码更换成QQ给你的授权码 (其实这也就是QQ的一种服务器密码加密方式)
代码:
package com.tgb.service;
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;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
@Transactional
public class Sendmail {
邮件的发送地址
private String from = "*********@qq.com";
//邮箱的用户名
private String username = "自己的用户名";
//邮箱的密码
private String password = "授权码";
//发送邮件的服务器地址 (这里有另一种 smtp.exmail.qq.com 据说可以不用ssl 方式 楼主没有试验出来)
private String host = "smtp.qq.com";
public void test() {
try{
Properties prop = new Properties();
/*
host =smtp.qq.com 上面已经定义
mail.transport.protocol 是发送邮件的协议名称
*/
prop.setProperty("mail.host", host);
prop.setProperty("mail.transport.protocol", "smtp");
prop.setProperty("mail.smtp.auth", "true");
prop.setProperty("mail.smtp.port", "587");
/**
这里的session 不是我们理解的会话 他是引用的import javax.mail.Session; mail里面的一个类 用于读取配置信息
Session.getInstance 根据相关属性创建一个新的Session实例
注意:要观察传到邮件服务器上的邮件命令,请用 session.setDebug(true) 设置调试标志 所以setDebug 是设置调试标志的
*/
Session session = Session.getInstance(prop);
session.setDebug(true);
/**
我们理解 Transport 是传输的意思 所以getTransport() session 创建传输协议的方法
*/
Transport ts = session.getTransport();
//这一步相当于登陆你的邮箱
ts.connect(host, username, password);
//调用下面的方法
/**
Message对象将存储我们实际发送的电子邮件信息,Message对象被作为一个MimeMessage对象来创建并且需要知道应当选择哪一个JavaMail session。
*/
Message message = createEmail(session,"收信人的邮箱地址例如:[email protected] 也可以写成一个变量 例如 注册时 你的user.getEmail() 当然写成变量时 你在调 用这个方法的时候 可以直接把注册信息传过来 例如:test(User user)");
ts.sendMessage(message, message.getAllRecipients());
ts.close();
}catch (Exception e) {
throw new RuntimeException(e);
}
}
public Message createEmail(Session session,String email) throws Exception{
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.setRecipient(Message.RecipientType.TO, new InternetAddress(email));
message.setSubject("用户注册邮件");
String info = "恭喜您注册成功,您的用户名:" + ",您的密码:" + ",请妥善保管,如有问题请联系网站客服!!";
message.setContent(info, "text/html;charset=UTF-8");
message.saveChanges();
return message;
}
}
我是在注册的时候调用的发送邮件
@Autowired
private Sendmail send;
调用方法 send.test();
附上所需要的两个jar包 直接放在web-inf /lib下面就行