以前我們使用JavaMail發送郵件,步驟挺多的。現在的項目跟Spring整合的比較多。所以這里主要談談SpringMail發送。
導入jar包。
配置applicationContext-email.xml。
編寫代碼。
Maven地址如下
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>4.2.6.RELEASE</version> </dependency> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.5</version> </dependency>
配置applicationContext-email.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <!-- 基於校驗規則的郵件發送方式 --> <!-- SMTP協議介紹 --> <property name="host" value="smtp.qq.com" /> <property name="username" value="@qq.com" /> <property name="password" value="" />// <property name="javaMailProperties"> <props> <!-- 必須進行授權認證,它的目的就是阻止他人任意亂發郵件 --> <prop key="mail.smtp.auth">true</prop> <!-- SMTP加密方式:連接到一個TLS保護連接 --> <prop key="mail.smtp.starttls.enable">true</prop> <!-- 設置郵件發送超時時間 --> <prop key="mail.smtp.timeout">25000</prop> </props> </property> </bean> </beans>
在這里,要注意一下:
個人郵箱使用的主機是:
<property name="host" value="smtp.qq.com"/> -->
企業郵箱使用的主機是:
<property name="host" value="smtp.exmail.qq.com"/>
關於qq郵箱的授權碼,如果是企業郵箱,則使用登錄密碼,否則要去獲取授權碼,要不然會報異常
Exception in thread "main" org.springframework.mail.MailAuthenticationException: Authentication failed; nested exception is javax.mail.AuthenticationFailedException
當然,我們可以使用163郵箱發送,步驟也是一樣,要去申請授權碼,只是有點奇怪的是,163發送會被當成垃圾郵箱處理。所以這里建議不要使用163郵箱發送郵件。
詳細代碼如下
public class EmailUtil { public void sendMsg() { ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml", "applicationContext-email.xml"); MailSender ms = (MailSender) ac.getBean("mailSender"); SimpleMailMessage smm = new SimpleMailMessage(); // 發送 smm.setFrom("11--@qq.com");//此處省略郵箱 // 接收 smm.setTo("18----@163.com"); // 主題 smm.setSubject("庫存預警" + System.currentTimeMillis()); // 內容 smm.setText("庫存預警"); // smm.setSentDate(new Date()); ms.send(smm); System.out.println("end"); } public static void main(String[] args) { EmailUtil emailUtil = new EmailUtil(); emailUtil.sendMsg(); } }
發送成功截圖如下:
好了,Spring整合email到此結束。