JAVA邮件发送
1. 准备工作
在做WEB开发时发送邮件给用户是个常用功能,在这里记录一下如何使用smtp服务发送邮件。
首先添加发送邮件的jar包,我使用maven添加jar包,不使用maven的度娘寻找jar包。
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.5.0-b01</version>
</dependency>
然后开启邮箱的smtp服务。
以QQ邮箱为例子,在设置——账户中,开启POP3/SMTP服务,然后生成授权码保留下来备用。
2. 发送邮件
直接上代码
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.UnsupportedEncodingException;
import java.util.Properties;
public class EmailUtil {
//邮件会话属性
private Properties properties;
//邮件服务器地址,QQ邮箱是smtp.qq.com, 其他邮箱自行百度查找
private static String host = "smtp.qq.com";
//发件人地址,填写你的邮箱地址
private static String fromAddress = "";
//发件人昵称
private static String sendNickname = "";
//发件人邮箱授权码,上一步中生成的授权码
private static String sendPassword = "";
//编码
private static String charset = "UTF-8";
//端口
private static int port = 587;
public EmailUtil() {
this.properties = new Properties();
//设置发送邮件的协议
this.properties.setProperty("mail.transport.protocol", "smtp");
//设置身份安全认证
this.properties.setProperty("mail.smtp.auth", "true");
}
/**
* 发送邮件
* @param toEmail 收件人
* @param toPersonal 收件人昵称
* @param content 发送内容
* @param subject 邮件主题
*
* @return
*/
public boolean sendEmail(String toEmail, String toPersonal, String content, String subject) {
boolean flag = true;
//创建一个发送邮件的会话
Session session = Session.getDefaultInstance(this.properties);
//创建邮件对象
MimeMessage mimeMessage = new MimeMessage(session);
try {
//设置发件人
mimeMessage.setFrom(new InternetAddress(fromAddress, sendNickname, charset));
//设置收件人 TO:发送人 CC:抄送人 BCC:密送人
mimeMessage.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(toEmail, toPersonal, charset));
//设置主题
mimeMessage.setSubject(subject);
//设置内容
mimeMessage.setContent(content, "text/html; charset=UTF-8");
//保存邮件设置
mimeMessage.saveChanges();
//发送
Transport transport = session.getTransport();
transport.connect(host, port, fromAddress, sendPassword);
transport.sendMessage(mimeMessage, mimeMessage.getAllRecipients());
transport.close();
} catch (MessagingException | UnsupportedEncodingException e) {
e.printStackTrace();
flag = false;
}
//设置收件人
return flag;
}
}
下面是一个测试方法
@Test
public void testSendEmail() {
//收件人邮箱
String toAddress = "";
//收件人昵称
String toPerosonal = "";
String subject = "这是一封测试邮件";
String content = "测试邮件,<a href='http://www.baidu.com' target='_blank'>点击跳转到百度</a>";
EmailUtil emailUtil = new EmailUtil();
if (emailUtil.sendEmail(toAddress, toPerosonal, content, subject)) {
System.out.println("邮件发送成功");
} else {
System.out.println("邮件发送失败");
}
}
好了,发送邮件就这样完成了。