Java 发送邮箱(一)
java 官方封装了发送邮件的协议,但是没有放到 jdk 中,所以我们如果想实现 发送邮箱的功能,需要加入依赖。
笔者这里用的是 maven
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
废话不多说,直接上代码
public class EmailTest {
public static void main(String[] args) throws MessagingException, UnsupportedEncodingException {
//进行配置
Properties props = new Properties();
props.setProperty("mail.smtp.host","smtp.163.com"); //配置 SMTP 服务器地址
props.setProperty("mail.smtp.port", "25"); //请求的端口
props.setProperty("mail.transport.protocol","smtp"); //请求的协议
props.setProperty("mail.smtp.auth","true"); //需要认证请求
props.setProperty("mail.smtp.ssl.enable", "true"); // 开启ssl
//创建一个程序与邮件服务器会话对象 Session
Session session = Session.getDefaultInstance(props);
//开启Debug 模式
session.setDebug(true);
//通过 session 得到transport 对象
Transport ts = session.getTransport();
//使用邮箱的用户名和密码连接上邮件服务器
ts.connect("smtp.163.com","************@163.com","*************");
//创建邮件
Message message = createSimpleMail(session);
//发送邮件
ts.sendMessage(message,message.getAllRecipients());
//关闭邮件
ts.close();
}
/**
* 生成Message对象
*/
private static Message createSimpleMail(Session session) throws MessagingException, UnsupportedEncodingException {
MimeMessage message = new MimeMessage(session);
//指定邮件的发件人
message.setFrom(new InternetAddress("************@163.com"));
//指定邮件的收件人的邮箱以及昵称
message.setRecipient(Message.RecipientType.TO,new InternetAddress("**********@qq.com","test"));
//邮件的标题
message.setSubject("测试");
//邮箱的内容
message.setText("你好!");
return message;
}
}
笔者这里使用的是网易邮箱服务。这里有一个地方要注意
网易的客户端授权码默认是关闭的,需要登陆邮箱手动设置成开启状态,如果不设置的话,会抛出认证失败的异常