技术:java.mail
此文章为不带格式,附件形式的邮件发送,后续会更新带格式,附件的邮件发送代码
maven依赖:
<!-- 邮件发送API https://mvnrepository.com/artifact/javax.mail/mail -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
代码实现:
方法:
/**
* @param mail 邮件对象,包含发送人、发送人密码、收件人信息、邮件主题、邮件内容
* @throws AddressException
* @throws MessagingException
* @description 不带样式的邮件
*/
public static void send(MailPOJO mail,String host) throws AddressException,MessagingException {
/*String host="";
String from=mail.getFrom();
String mailType=from.substring(from.indexOf("@")+1, from.indexOf("."));
if("163".equals(mailType)){
host="smtp.163.com";
}else if("qq".equals(mailType)){
host="smtp.qq.com";
}else if("139".equals(mailType)){
host="smtp.139.com";
}*/
Properties properties = new Properties();
properties.put("mail.transport.protocol", "smtp");// 连接协议
properties.put("mail.smtp.host", host);//设置发件人的SMTP服务器地址
//properties.put("mail.smtp.port", 465);// 端口号
properties.put("mail.smtp.auth", "true");//账户密码验证
// 设置是否使用ssl安全连接 ---一般都使用
properties.put("mail.smtp.ssl.enable", "true");
// 设置是否显示debug信息 true 会在控制台显示相关信息
properties.put("mail.debug", "true");
// 得到回话对象
Session session = Session.getInstance(properties);
// 获取邮件对象
Message message = new MimeMessage(session);
// 设置发件人邮箱地址
message.setFrom(new InternetAddress(mail.getFrom()));
// 设置收件人邮箱地址
message.setRecipients(Message.RecipientType.TO, mail.getToAddressArr());//多个收件人
// 抄送给自己
// message.addRecipients(MimeMessage.RecipientType.CC, mail.getToAddressArr());
// 设置邮件标题
message.setSubject(mail.getTheme());
// 设置邮件内容
message.setText(mail.getMailContent());
// 得到邮差对象
Transport transport = session.getTransport();
// 连接自己的邮箱账户 密码:授权码/邮箱密码
transport.connect(mail.getFrom(), mail.getPassword());
// 发送邮件
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
MailPOJO代码:
package ***;
import java.util.List;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import lombok.Data;
/**
* @author cyh
* @date 2020年7月22日 下午1:01:33
* @description 邮件属性实体
*/
@Data
public class MailPOJO {
//发件人邮箱
private String from;
//发件人账户密码 163 需要授权码
private String password;
//收件人
private String tos;
//邮件主题
private String theme;
//邮件内容
private String mailContent;
//
private InternetAddress[] toAddressArr;
/**
*
* @param from 发件人邮箱
* @param password 邮件授权码
* @param tos 收件人 ,分割
* @param theme 邮件主题
* @param mailContent 邮件内容
* @throws AddressException
*/
public MailPOJO(String from,String password,String[] tos,String theme,String mailContent) throws AddressException{
this.from=from;
this.password=password;
this.theme=theme;
this.mailContent=mailContent;
//处理收件人
toAddressArr=new InternetAddress[tos.length];
for (int i = 0; i < tos.length; i++) {
toAddressArr[i] = new InternetAddress(tos[i]);
}
}
}
测试代码:
String send="****@qq.com";
String str="****@163.com";
String password="****";
String[] toArr=str.split(",");
String theme="qq测试发送163-主题";
String mailContent="qq测试发送163-内容";
String host="";
MailPOJO mail=new MailPOJO(send,password,toArr,theme,mailContent);
send(mail,host);
基本就是这样,可以根据自己的业务场景适当修改。
注:@data为lombok注解 可以自行百度下使用