java发送邮件&&使用HtmlEmail发送邮件
java原生发送qq邮箱
首先要有QQ邮箱的授权码,如果有就直接看代码。
1.登录QQ邮箱,找到设置
2.选择账户选项,往下找到IMAP服务。
3.开启服务获得授权码,或已经开启缺不知道,可以重新生成授权码。
public static void main(String[] args) throws AddressException,MessagingException {
Properties properties = new Properties();
properties.put("mail.transport.protocol", "smtp");// 连接协议
properties.put("mail.smtp.host", "smtp.qq.com");// 主机名
properties.put("mail.smtp.port", 465);// 端口号
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.ssl.enable", "true");// 设置是否使用ssl安全连接 ---一般都使用
properties.put("mail.debug", "true");// 设置是否显示debug信息 true 会在控制台显示相关信息
// 得到回话对象
Session session = Session.getInstance(properties);
// 获取邮件对象
Message message = new MimeMessage(session);
// 设置发件人邮箱地址xxx
message.setFrom(new InternetAddress("[email protected]"));
// 设置多个收件人邮箱地址或一个收件人
// message.setRecipients(Message.RecipientType.TO, new InternetAddress[]{new InternetAddress("[email protected]"),new InternetAddress("[email protected]"),new InternetAddress("[email protected]")});
message.setRecipient(Message.RecipientType.TO, new InternetAddress("[email protected]"));//一个收件人
// 设置邮件标题
message.setSubject("标题");
// 设置邮件内容
message.setText("这是一个QQ邮件");
// 得到邮差对象
Transport transport = session.getTransport();
// 连接自己的邮箱账户,QQ邮箱授权码在QQ邮箱中**使用
transport.connect("[email protected]", "QQ邮箱授权码");// 密码为QQ邮箱开通的stmp服务后得到的客户端授权码
// 发送邮件
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
如果我们想以HTML格式发送邮件,可以使用HtmlEmail来实现**
1.首先定义一个信封类
public class Envelope implements Serializable {
//收件地址
private String to;
//邮件头
private String subject;
//邮件内容
private Map<String, Object> cry;
public Envelope(String to, String subject, Map<String, Object> cry) {
this.to = to;
this.subject = subject;
this.cry = cry;
}
public String getTo() {
return to;
}
public void setTo(String to) {
this.to = to;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public Map<String, Object> getCry() {
return cry;
}
public void setCry(Map<String, Object> cry) {
this.cry = cry;
}
}
2.定义发送邮件方法
public static void send2(final Envelope envelope) throws EmailException {
//创建一个HtmlEmail对象
HtmlEmail email = new HtmlEmail();
//设置主机名
email.setHostName("smtp.qq.com");
//设置收件人
email.addTo(envelope.getTo());
//设置发送用户邮箱和邮件名称
email.setFrom("[email protected]", envelope.getSubject());
//连接发送邮箱
email.setAuthentication("[email protected]", "QQ邮箱授权码");
//邮件编码格式
email.setCharset("UTF-8");
//设置邮件头部
email.setSubject(envelope.getSubject());
//设置邮件内容,识别HTML标签
email.setHtmlMsg("<div style=\"background-color: red\">邮件内容</div>");
email.send();
}
测试一下,看到结果。
@Test
public void testEmail()throws Exception{
Envelope envelope = new Envelope("[email protected]","邮件测试",new HashMap<>());
EmailUtils.send2(envelope);
}