本文实例为大家分享了JavaMail实现发送邮件的具体代码,供大家参考,具体内容如下
用的qq邮箱,需要去邮箱设置那边开一下stmp服务啥的获得下面要用到的密码,具体开服务自己百度,这边不截图了。
代码如下:导包和工具类,可用!
一、导这个包<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.5.0-b01</version>
</dependency>
二、工具类封装成对象
import lombok.Data;
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;
public class MailHelper
{
/**
* 邮件服务器主机名。
*/
private static String HOST_NAME;
private String sendMailUrl ;
private String receiveMailUrl;
/**
* IMAP/SMTP服务的密码 去qq邮箱开的。 几个月前的失效了还是蛮奇怪的 2021年8月5日21:33:36
*/
private String servicePassword;
static {
//默认直接qq的吧
HOST_NAME = "smtp.qq.com";
}
public MailHelper(String sendMailUrl,String receiveMailUrl,String servicePassword){
this.sendMailUrl=sendMailUrl;
this.receiveMailUrl=receiveMailUrl;
this.servicePassword=servicePassword;
}
public void sendSimpleMail(Mail mail) throws Exception {
Properties prop = new Properties();
设置邮件服务器主机名
prop.setProperty("mail.host", "smtp.qq.com");
// 发送邮件协议名称
prop.setProperty("mail.transport.protocol", "smtp");
prop.setProperty("mail.smtp.auth", "true");
// 使用JavaMail发送邮件的5个步骤
// 1、创建session 根据配置创建会话对象, 用于和邮件服务器交互
Session session = Session.getInstance(prop);
// 开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
session.setDebug(true);
// 2、通过session得到transport对象
Transport ts = session.getTransport();
// 3、使用邮箱的用户名和密码连上邮件服务器,发送邮件时,发件人需要提交邮箱的用户名和密码给smtp服务器,用户名和密码都通过验证之后才能够正常发送邮件给收件人。
// 注:这边host必须填写smtp.qq.com
// 而不是你qq邮箱账号如1741049@qq.com,否则报错host名unkonwn。
// Host:邮件服务器主机名
ts.connect(HOST_NAME, receiveMailUrl, servicePassword);
// 4、创建邮件
Message message = createSimpleMail(session, mail.getTitle(), mail.getContent());
// 5、发送邮件
ts.sendMessage(message, message.getAllRecipients());
ts.close();
}
private MimeMessage createSimpleMail(Session session, String title, String content) throws Exception {
// 创建邮件对象
MimeMessage message = new MimeMessage(session);
// 指明邮件的发件人
message.setFrom(new InternetAddress(receiveMailUrl));
// 指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发
message.setRecipient(Message.RecipientType.TO, new InternetAddress(receiveMailUrl));
// 邮件的标题
message.setSubject(title);
// 邮件的文本内容
message.setContent(content, "text/html;charset=UTF-8");
// 返回创建好的邮件对象
return message;
}
@Data
public static class Mail{
private String title;
/**
* 正文
*/
private String content;
public Mail(){
}
public Mail(String title,String content){
this.title=title;
this.content=content;
}
}
}
测试类:
package com.forever.junittest;
import com.forever.gitfund.util.MailHelper;
import com.forever.gitfund.util.MailHelper.Mail;
import org.junit.Test;
public class TestMailHelper {
@Test
public void test() throws Exception {
String qq = "xx@qq.com";
String send = qq;
MailHelper mailHelper = new MailHelper(qq,send,"xxxxx");
Mail mail = new Mail();
String title = "我的第一封邮件";
String content = "这是我的第一封邮件 from idea";
mail.setTitle(title);
mail.setContent(content);
mailHelper.sendSimpleMail(mail);
}
}