Java实现纯文本邮件发送代码实现
在上篇博客中讲解了一些必需jar包的导入以及相关知识的讲解,这篇博客讲解代码实现:
1.首先我们需要将相关信息存储到Properties
类的对象中,这些信息包括邮箱服务器的主机、发送协议和需要验证用户密码,代码实现如下:
//1.创建一个配置文件保存相关信息
Properties properties = new Properties();
//设置邮件服务器,因为是QQ邮箱,所以第二个参数在这里是smtp.qq.com
properties.setProperty("mail.host", "smtp.qq.com");
//设置协议,因为是发送邮件,所以这里的协议是smtp协议
properties.setProperty("mail.transport.protocol", "smtp");
//设置用户是否需要验证
properties.setProperty("mail.smtp.auth", "true");
2.在保存相关信息后,我们需要创建Session
会话对象,创建完成后开启Session
的debug
模式,代码实现如下:
//2.创建Session会话对象
Session session = Session.getDefaultInstance(properties, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
//发件人邮件用户名、授权码
return new PasswordAuthentication("872574248@qq.com", "授权码");
}
});
//开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
session.setDebug(true);
3.在创建好Session
对象后,通过该对象获得Transport
对象,通过该对象可以通过SMTP协议和邮件服务器建立连接,代码实现如下:
//3.通过session对象获得transport对象,需要捕获或抛出异常
Transport transport = session.getTransport();
//连接服务器,需要抛出异常
transport.connect("smtp.qq.com", "872574248@qq.com", "授权码");
4.在连接服务器后就可以写邮件,在MimeMessage
对象中添加收件人的信息和邮件的内容和主题
//4.连接上之后我们需要发送邮件
MimeMessage mimeMessage = new MimeMessage(session);
//邮件发送人:
mimeMessage.setFrom(new InternetAddress("872574248@qq.com"));
//邮件接收人:可以同时发送给很多人,我们这里只发送给自己
mimeMessage.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress("872574248@qq.com"));
//邮件标题:
mimeMessage.setSubject("你好");
//邮件内容:
mimeMessage.setContent("强静州你好", "text/html;charset=UTF-8");
5.在创建好上面讲到的一些东西后,就可以进行邮件的发送
//5.发送邮件
transport.sendMessage(mimeMessage, mimeMessage.getAllRecipients());
6.在发送完邮件后可以关闭连接
//6.关闭连接
transport.close();
完成代码:
package org.westos.java;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
public class SendEmail {
public static void main(String[] args) throws MessagingException {
//1.创建一个配置文件保存相关信息
Properties properties = new Properties();
//设置QQ邮件服务器
properties.setProperty("mail.host", "smtp.qq.com");
//设置发送协议
properties.setProperty("mail.transport.protocol", "smtp");
//设置用户是否需要验证
properties.setProperty("mail.smtp.auth", "true");
//===================================准备工作完毕
//2.创建Session会话对象
Session session = Session.getDefaultInstance(properties, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
//发件人邮件用户名、授权码
return new PasswordAuthentication("872574248@qq.com", "授权码");
}
});
//开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
session.setDebug(true);
//3.通过session对象获得transport对象,需要捕获或抛出异常
Transport transport = session.getTransport();
//连接服务器,需要抛出异常
transport.connect("smtp.qq.com", "872574248@qq.com", "授权码");
//4.连接上之后我们需要发送邮件
MimeMessage mimeMessage = new MimeMessage(session);
//邮件发送人:
mimeMessage.setFrom(new InternetAddress("872574248@qq.com"));
//邮件接收人:可以同时发送给很多人,我们这里只发送给自己
mimeMessage.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress("872574248@qq.com"));
//邮件标题:
mimeMessage.setSubject("你好");
//邮件内容:
mimeMessage.setContent("强静州你好", "text/html;charset=UTF-8");
//5.发送邮件
transport.sendMessage(mimeMessage, mimeMessage.getAllRecipients());
//6.关闭连接
transport.close();
}
}
在编写完上述的代码后,可以点击执行,我是自己给自己发,可以看到右下角已经接收到邮件
要用Java代码实现邮件的发送,代码模式基本上就是这样,但是在选择方法时需要注意方法的重载时候参数的不同和如何选择