java 邮件发送

简介: 步骤1:pom.xml添加依赖项 1 2 3 4 javax.mail 5 mailapi 6 1.

步骤1:pom.xml添加依赖项

 1         <!--mail-->
 2 
 3         <dependency>
 4             <groupId>javax.mail</groupId>
 5             <artifactId>mailapi</artifactId>
 6             <version>1.4.2</version>
 7         </dependency>
 8 
 9         <dependency>
10             <groupId>javax.mail</groupId>
11             <artifactId>mail</artifactId>
12             <version>1.4.2</version>
13         </dependency>

步骤2:封装一个工具类(参考下面的代码)

注:BaseBean里其实没啥东西,就一个protected Logger logger,方便子类可以直接使用,大家参考时,可根据需要去掉BeseBean继承

  1 package com.cnblogs.yjmyzz.utils;
  2 
  3 import com.cnblogs.yjmyzz.domain.BaseBean;
  4 import org.springframework.util.StringUtils;
  5 
  6 import java.util.Properties;
  7 
  8 import javax.mail.Message;
  9 import javax.mail.MessagingException;
 10 import javax.mail.Session;
 11 import javax.mail.Transport;
 12 import javax.mail.internet.InternetAddress;
 13 import javax.mail.internet.MimeMessage;
 14 import javax.mail.internet.MimeUtility;
 15 
 16 /**
 17  * 邮件发送工具类
 18  */
 19 public class MailUtil extends BaseBean {
 20 
 21     private MimeMessage message;
 22     private Session session;
 23     private Transport transport;
 24     private String smtpHost = "";
 25     private int smtpPort = 25;
 26     private String senderUserName = "";
 27     private String senderPassword = "";
 28 
 29     public MailUtil(Properties properties, boolean debug) {
 30         this.smtpHost = properties.getProperty("mail.smtp.host");
 31         this.smtpPort = Integer.parseInt(properties.getProperty("mail.smtp.port"));
 32         this.senderUserName = properties.getProperty("mail.sender.username");
 33         this.senderPassword = properties.getProperty("mail.sender.password");
 34         session = Session.getInstance(properties);
 35         session.setDebug(debug);//开启后有调试信息
 36         message = new MimeMessage(session);
 37     }
 38 
 39     /**
 40      * 发送邮件
 41      *
 42      * @param subject        邮件主题
 43      * @param mailBody       邮件内容
 44      * @param senderNickName 发件人NickName
 45      * @param receiveUser    收件人地址
 46      * @param ccReceiveUser  抄送地址
 47      * @param bccReceiveUser 密送地址
 48      */
 49     public void sendEmail(String subject, String mailBody, String senderNickName,
 50                           String receiveUser, String ccReceiveUser, String bccReceiveUser, Boolean isHtmlFormat) {
 51         try {
 52             // 发件人
 53             InternetAddress from = null;
 54             if (StringUtils.isEmpty(senderNickName)) {
 55                 from = new InternetAddress(senderUserName);
 56             } else {
 57                 from = new InternetAddress(MimeUtility.encodeWord(senderNickName) + " <" + senderUserName + ">");
 58             }
 59             message.setFrom(from);
 60 
 61             // 收件人
 62             InternetAddress to = new InternetAddress(receiveUser);
 63             message.setRecipient(Message.RecipientType.TO, to);
 64 
 65             //抄送人
 66             if (!StringUtils.isEmpty(ccReceiveUser)) {
 67                 InternetAddress cc = new InternetAddress(ccReceiveUser);
 68                 message.setRecipient(Message.RecipientType.CC, cc);
 69             }
 70 
 71             //密送人
 72             if (!StringUtils.isEmpty(bccReceiveUser)) {
 73                 InternetAddress bcc = new InternetAddress(bccReceiveUser);
 74                 message.setRecipient(Message.RecipientType.BCC, bcc);
 75             }
 76 
 77             message.setSubject(subject);
 78             String content = mailBody.toString();
 79 
 80             if (isHtmlFormat) {
 81                 message.setContent(content, "text/html;charset=UTF-8");
 82             } else {
 83                 message.setContent(content, "text/plain;charset=UTF-8");
 84             }
 85             message.saveChanges();
 86             transport = session.getTransport("smtp");
 87             transport.connect(smtpHost, smtpPort, senderUserName, senderPassword);
 88             transport.sendMessage(message, message.getAllRecipients());
 89 
 90             logger.debug(senderUserName + " 向 " + receiveUser + " 发送邮件成功!");
 91 
 92         } catch (Exception e) {
 93             e.printStackTrace();
 94             logger.error("sendEmail失败!", e);
 95         } finally {
 96             if (transport != null) {
 97                 try {
 98                     transport.close();
 99                 } catch (MessagingException e) {
100                     e.printStackTrace();
101                     logger.error("sendEmail->transport关闭失败!", e);
102                 }
103             }
104         }
105     }
106 
107 }

步骤3:配置

a) 属性文件mail.properties

1 mail.smtp.host=smtp.qq.com
2 mail.smtp.port=25
3 mail.smtp.auth=true
4 mail.sender.username=xxx@qq.com
5 mail.sender.password=***

b) spring配置注入

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
 4        xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
 5        xmlns:context="http://www.springframework.org/schema/context"
 6        xsi:schemaLocation="
 7      http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
 8      http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
 9      http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd
10      http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
11      http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"
12        default-autowire="byName">
13 
14     <bean id="mailProperties"
15           class="org.springframework.beans.factory.config.PropertiesFactoryBean">
16         <property name="location"
17                   value="classpath:mail.properties"/>
18     </bean>
19 
20     <bean id="mailUtil" class="com.cnblogs.yjmyzz.utils.MailUtil">
21         <constructor-arg index="0" ref="mailProperties"/>
22         <constructor-arg index="1" value="false"/>
23     </bean>
24 
25 </beans>

测试代码:

1     @Test
2     public void testSendMail() {
3         ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-context.xml");
4         MailUtil mailUtil = ctx.getBean(MailUtil.class);
5         mailUtil.sendEmail("骚年,崛起吧,人类需要你!", "<font color=red>骚年:</font><h1>快去拯救地球吧!</h1>", "菩提树上的杨过", "aaa@126.com", "bbb@infosky.com.cn", "ccc@sjtu.edu.cn", true);
6         ((ClassPathXmlApplicationContext) ctx).close();
7     }

 

目录
相关文章
消息中间件 缓存 监控
107 0
|
6月前
|
Java
使用java底层实现邮件的发送(含测试,源码)
使用java底层实现邮件的发送(含测试,源码)
|
4月前
|
Java API Maven
如何在Java中实现邮件发送功能?
如何在Java中实现邮件发送功能?
|
5月前
|
前端开发 Java 网络安全
基于Java Socket实现的SMTP邮件客户端 - 全面支持SSL, TLS
基于Java Socket实现的SMTP邮件客户端 - 全面支持SSL, TLS
57 0
|
6月前
|
Java API 数据安全/隐私保护
【亮剑】如何在Java项目中结合Spring框架实现邮件发送功能
【4月更文挑战第30天】本文介绍了如何在Java项目中结合Spring框架实现邮件发送功能。首先,需在`pom.xml`添加Spring和JavaMail依赖。然后,在`applicationContext.xml`配置邮件发送器,包括SMTP服务器信息。接着,创建一个使用依赖注入的`EmailService`类,通过`JavaMailSender`发送邮件。最后,调用`EmailService`的`sendSimpleEmail`方法即可发送邮件。最佳实践包括:使用配置管理敏感信息,利用`MimeMessage`构造复杂邮件,异常处理和日志记录,以及在大量发送时考虑使用邮件队列。
113 1
|
6月前
|
Java 数据安全/隐私保护 Windows
java实现邮件发送准备工作(前期配置)
java实现邮件发送准备工作(前期配置)
|
Java 数据安全/隐私保护
【Java用法】java使用javax.mail读取邮箱,SpringBoot javax.mail获取邮件内容,根据时间段筛选邮件,内附代码,拿来即用
【Java用法】java使用javax.mail读取邮箱,SpringBoot javax.mail获取邮件内容,根据时间段筛选邮件,内附代码,拿来即用
293 0
|
Java
【Java】SpringBoot邮件发送实现
这里我用的是网易免费企业邮箱。参数请不要照抄,改成适合自己的。
166 0
java邮件提醒实现
最近做项目的时候,有这样一个需求,因为项目中的流程是分级流转审批的过程,所以当前人操作完成之后,需要程序的一个固定邮箱通过邮件通知下级相应人员进行处理,所以也就有了小编今天的这篇博文。
Java实战:使用Hutool中的MailUtil实现邮件的发送
今天给大家分享使用Hutool中的MailUtil实现邮件的发送,主要实现了发送普通文本邮件、发送Html文件、发送邮件包含本地附件、远程下载附件、指定多个发件人的功能。具体的大家可以互相沟通交流!
Java实战:使用Hutool中的MailUtil实现邮件的发送
下一篇
无影云桌面