700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 使用 javax.mail 发送邮件

使用 javax.mail 发送邮件

时间:2019-03-16 17:52:29

相关推荐

使用 javax.mail 发送邮件

发邮件在 java web 项目中是一个常用功能,之前在项目中刚好用到了邮件发送功能,现在用博客进行记录,方便以后查阅。这篇文章简单介绍使用javax.mail 发送邮件的步骤,并提供封装好的邮件发送方法,希望对自己和别人有用。如有不妥的地方,也请大家指正。

1. 获取javax.mail 相关 jar 包

1.1 下载 jar 包

/technetwork/java/index-138643.html

1.2 如若使用 maven 管理 jar 包,则使用以下配置从仓库获取 jar 包

<dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.7</version></dependency>

此处注意 jar 包版本,高版本的 jar 包中无com.sun.mail 包,腾讯邮箱的设置需要用到此包中的类。

2. 配置邮件发送的相关节点

2.1 腾讯 qq 邮箱开启POP3/SMTP 服务

进入 qq 邮箱设置查找POP3/SMTP 服务,按邮箱提示步骤开通即可。腾讯企业邮箱可忽略此步骤,不进行配置。

2.2 配置文件密码

如上图所示,qq 邮箱设置独立密码,则配置文件中应配置该独立密码;腾讯企业邮箱中不存在独立密码,但是可开启安全登录,开启后会生成安全授权码,此时密码配置为该安全授权码。如果什么都没设置,密码即邮箱的登录密码。

2.3 配置文件

#邮件服务器mail.host=smtp.#邮件发送协议mail.transport.protocol=smtp#需要验证用户名密码mail.smtp.auth=true#腾讯邮箱设置SSL加密mail.smtp.ssl.enable=true#发件人邮箱mail.user=******@#发件人邮箱密码mail.password=******

2.4封装邮件发送方法

Java 代码:

import com.sun.mail.util.MailSSLSocketFactory;import mons.lang3.StringUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Value;import org.ponent;import javax.mail.*;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import java.security.GeneralSecurityException;import java.util.Properties;/*** @Description TODO* @Author peiyu* @Date /8/12 9:29*/@Componentpublic class EmailUtil {private static final Logger logger = LoggerFactory.getLogger(EmailUtil.class);@Value("${mail.host}")private String mailHost;@Value("${mail.user}")private String mailUser;@Value("${mail.password}")private String mailPassword;@Value("${mail.transport.protocol}")private String mailTransportProtocol;@Value("${mail.smtp.auth}")private String mailSmtpAuth;@Value("${mail.smtp.ssl.enable}")private String mailSmtpSslEnable;private Properties getEmailProperties() throws GeneralSecurityException {logger.info("EmailUtil.getEmailProperties() start!");Properties prop;try {prop = new Properties();// 设置邮件服务器prop.setProperty("mail.host", mailHost);// 邮件发送协议prop.setProperty("mail.transport.protocol", mailTransportProtocol);// 是否需要验证用户名密码prop.setProperty("mail.smtp.auth", mailSmtpAuth);prop.put("mail.smtp.ssl.enable", mailSmtpSslEnable);// 关于腾讯邮箱,还要设置SSL加密,加上以下代码即可MailSSLSocketFactory sf = new MailSSLSocketFactory();sf.setTrustAllHosts(true);prop.put("mail.smtp.ssl.socketFactory", sf);} catch (GeneralSecurityException e) {logger.error("EmailUtil.getEmailProperties() error!");throw e;}logger.info("EmailUtil.getEmailProperties() end!");return prop;}private Session getEmailSession(Properties prop) {logger.info("EmailUtil.getEmailSession() start!");Session session = Session.getDefaultInstance(prop, new Authenticator() {public PasswordAuthentication getPasswordAuthentication() {//发件人邮件用户名、授权码return new PasswordAuthentication(mailUser, mailPassword);}});//开启Session的debug模式,这样就可以查看到程序发送Email的运行状态session.setDebug(false);logger.info("EmailUtil.getEmailSession() end!");return session;}/*** 发送邮件** @param subject 邮件主题* @param content 邮件内容* @param to邮件接收人* @param cc邮件抄送人* @return int(1:发送成功;-1:发送失败)*/public int sendEmail(String subject, String content, String to, String cc) {logger.info("EmailUtil.sendEmail() start!");Transport ts;try {Properties prop = getEmailProperties();if (null == prop) {return -1;}//使用JavaMail发送邮件的5个步骤//1.创建定义整个应用程序所需的环境信息的 Session 对象Session session = getEmailSession(prop);//2、通过session得到transport对象ts = session.getTransport();//3、使用邮箱的用户名和授权码连上邮件服务器ts.connect(mailHost, mailUser, mailPassword);//4、创建邮件//创建邮件对象MimeMessage message = new MimeMessage(session);//指明邮件的发件人message.setFrom(new InternetAddress(mailUser));// 指明邮件的收件人if (StringUtils.isNotBlank(to)) {message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));} else {logger.info("EmailUtil.sendEmail() Message.RecipientType.TO is null!");return -1;}// 邮件抄送if (StringUtils.isNotBlank(cc)) {message.setRecipient(, new InternetAddress(cc));}//邮件的标题message.setSubject(subject);//邮件的文本内容message.setContent(content);//5、发送邮件ts.sendMessage(message, message.getAllRecipients());ts.close();} catch (MessagingException | GeneralSecurityException e) {logger.error("EmailUtil.sendEmail() error!", e);return -1;}logger.info("EmailUtil.sendEmail() end!");return 1;}}

通过以上步骤就可以进行邮件发送,快来试试吧!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。