实现发送电子邮件
Posted 个子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实现发送电子邮件相关的知识,希望对你有一定的参考价值。
<!-- 邮件start -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
<!-- 邮件end -->
2、 开启第三方登录;
3、可以写代码了;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
public class MailUtil {
private static final String MAIL_126_FROM = "1111@126.com"; // 126账号
private static final String MAIL_126_PASSWORD = "1111"; // 126客户端授权码
private static final String MAIL_QQ_FROM = "98248@qq.com"; // qq账号
private static final String MAIL_QQ_PASSWORD = "klfbbhd"; // qq客户端授权码
/**
* @param mailType 邮箱类型,1 --QQ, 2--126\'
* @param mailTo 加载收件人地址
* @param mailText 邮件的文本内容
* @param mailTitle 加载标题
* @return 邮件发送返回的信息
*/
public static Map<String, Object> sendMail(Integer mailType, String mailTo, String mailText, String mailTitle) {
Map<String, Object> map = new HashMap<String, Object>();
// String mailUser = mailFrom; // 发件人称号,同邮箱地址
Properties props = new Properties();
if (1 == mailType) { //qq设置
props.setProperty("mail.host", "smtp.qq.com");
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.smtp.port", "465");
props.setProperty("mail.smtp.socketFactory.port", "465");
} else if (2 == mailType) { //126设置
props.setProperty("mail.smtp.host", "smtp.126.com"); // 设置发送邮件的邮件服务器的属性(这里使用网易的smtp服务器)
props.put("mail.smtp.host", "smtp.126.com"); // 需要经过授权,也就是有户名和密码的校验,这样才能通过验证(一定要有这一条)
props.put("mail.smtp.auth", "true"); // 用刚刚设置好的props对象构建一个session
}
Session session = Session.getDefaultInstance(props); // 有了这句便可以在发送邮件的过程中在console处显示过程信息,供调试使
// 用(你可以在控制台(console)上看到发送邮件的过程)
session.setDebug(true); // 用session为参数定义消息对象
MimeMessage message = new MimeMessage(session); // 加载发件人地址
try {
if (1 == mailType) {
message.setFrom(new InternetAddress(MAIL_QQ_FROM));
} else if (2 == mailType) {
message.setFrom(new InternetAddress(MAIL_126_FROM));
}
message.addRecipient(Message.RecipientType.TO, new InternetAddress(mailTo)); // 加载收件人地址
message.setSubject(mailTitle); // 加载标题
Multipart multipart = new MimeMultipart(); // 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件
BodyPart contentPart = new MimeBodyPart(); // 设置邮件的文本内容
contentPart.setContent(mailText, "text/html;charset=utf-8");
multipart.addBodyPart(contentPart);
message.setContent(multipart);
message.saveChanges(); // 保存变化
Transport transport = session.getTransport("smtp"); // 连接服务器的邮箱
if (1 == mailType) {
// qq设置
// transport.connect("smtp.qq.com", mailUser, MAIL_QQ_PASSWORD);// 把邮件发送出去
transport.connect("smtp.qq.com", MAIL_QQ_FROM, MAIL_QQ_PASSWORD);// 把邮件发送出去
} else if (2 == mailType) {
// 126设置
transport.connect("smtp.126.com", MAIL_126_FROM, MAIL_126_PASSWORD); // 把邮件发送出去
}
transport.sendMessage(message, message.getAllRecipients());
transport.close();
System.out.println("发送成功");
map.put("mailResCode", 1);
map.put("mailResMsg", "发送成功");
} catch (MessagingException e) {
e.printStackTrace();
System.out.println(e.toString());
System.out.println("发送失败");
map.put("mailResCode", 0);
map.put("mailResMsg", e.toString());
}
return map;
}
}
以上是关于实现发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章