使用spring实现邮件的发送(含测试,源码,注释)
生活随笔
收集整理的這篇文章主要介紹了
使用spring实现邮件的发送(含测试,源码,注释)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
????? 此篇主要講的是使用spring配置實現郵件發送,與之前的底層實現簡便了不少,只需要幾個配置就可以了,那么請往下看:
?? 先寫個接口
/** * @Title: IMailserdService.java * @Package org.service * @Description: TODO該方法的主要作用: * @author A18ccms A18ccms_gmail_com * @date 2017-5-30 上午10:36:34 * @version V1.0 */ package org.service;/** * * 項目名稱:spring_Schop8 * 類名稱:IMailserdService * 類描述: * 創建人:Mu Xiongxiong * 創建時間:2017-5-30 上午10:36:34 * 修改人:Mu Xiongxiong * 修改時間:2017-5-30 上午10:36:34 * 修改備注: * @version * */ public interface IMailsendService {/*** * @Title: sendMessage* @Description: 該方法的主要作用:發送郵件* @param 設定文件 * @return 返回類型:void * @throws*/void sendMessage(); }
然后在寫個實現該接口的類:
/** * @Title: AttMailsendServiceImpl.java * @Package org.service.impl * @Description: TODO該方法的主要作用: * @author A18ccms A18ccms_gmail_com * @date 2017-5-30 上午11:12:02 * @version V1.0 */ package org.service.impl;import java.io.IOException;import javax.mail.MessagingException; import javax.mail.internet.MimeMessage;import org.service.IMailsendService; import org.springframework.core.io.ClassPathResource; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper;/** * * 項目名稱:spring_Schop8 * 類名稱:AttMailsendServiceImpl * 類描述: 使用spring實現對郵件的發送* 創建人:Mu Xiongxiong * 創建時間:2017-5-30 上午11:12:02 * 修改人:Mu Xiongxiong * 修改時間:2017-5-30 上午11:12:02 * 修改備注: * @version * */ public class AttMailsendServiceImpl implements IMailsendService {private JavaMailSender javaMailSender;/**(非 Javadoc)* <p>Title: sendMessage</p>* <p>Description(描述):發送帶附件的郵件 </p>* @see org.service.IMailsendService#sendMessage()*/@Overridepublic void sendMessage() {MimeMessage message = javaMailSender.createMimeMessage();MimeMessageHelper helper;try {helper = new MimeMessageHelper(message,true,"utf-8");helper.setFrom("jerry@mail.com");helper.setTo("tina@mail.com");helper.setSubject("帶附件的郵件");//普通格式的//helper.setText("發送一個附件內容!<a href='http://www.baidu.com'>百度搜索</a>");//html格式的helper.setText("發送一個附件內容!<a href='http://www.baidu.com'>百度搜索</a>",true);//添加附件1ClassPathResource file1 = new ClassPathResource("/org/doc/doc.txt");helper.addAttachment(file1.getFilename(),file1.getFile());//添加附件2ClassPathResource file2 = new ClassPathResource("/org/doc/text.txt");helper.addAttachment(file2.getFilename(), file2.getFile());javaMailSender.send(message);} catch (MessagingException e) {// TODO 異常執行塊!e.printStackTrace();} catch (IOException e) {// TODO 異常執行塊!e.printStackTrace();}}public JavaMailSender getJavaMailSender() {return javaMailSender;}public void setJavaMailSender(JavaMailSender javaMailSender) {this.javaMailSender = javaMailSender;}}
上面的這個類還可以發送帶附件的郵件,里面含兩個附件(文件),我弄上來吧:
還有一種是使用模板發送帶html格式的郵件:
我直接上實現類:
/** * @Title: CreateMatterServiceImpl.java * @Package org.service.impl * @Description: TODO該方法的主要作用: * @author A18ccms A18ccms_gmail_com * @date 2017-5-30 上午11:46:53 * @version V1.0 */ package org.service.impl;import java.io.IOException; import java.util.HashMap; import java.util.Map;import javax.mail.MessagingException; import javax.mail.internet.MimeMessage;import org.service.IMailsendService; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException;/** * * 項目名稱:spring_Schop8 * 類名稱:CreateMatterServiceImpl * 類描述: * 創建人:Mu Xiongxiong * 創建時間:2017-5-30 上午11:46:53 * 修改人:Mu Xiongxiong * 修改時間:2017-5-30 上午11:46:53 * 修改備注: * @version * */ public class CreateMatterServiceImpl implements IMailsendService {private JavaMailSender javaMailSender;private Configuration configuration;/**(非 Javadoc)* <p>Title: sendMessage</p>* <p>Description(描述):使用后模板發送郵件 </p>* @see org.service.IMailsendService#sendMessage()*/@Overridepublic void sendMessage() {MimeMessage message = javaMailSender.createMimeMessage();try {MimeMessageHelper helper = new MimeMessageHelper(message,true,"UTF-8");helper.setFrom("jerry@mail.com");helper.setTo("tina@mail.com");helper.setSubject("使用模板進行發送郵件");helper.setText(getText(),true);//從模板里面讀取javaMailSender.send(message);} catch (MessagingException e) {// TODO 異常執行塊!e.printStackTrace();}}//讀取模板private String getText(){String txt = "";try {Template template = configuration.getTemplate("mail.ftl");//通過map傳遞動態數據Map map = new HashMap();map.put("username","雄雄");//解析模板文件txt = FreeMarkerTemplateUtils.processTemplateIntoString(template,map);} catch (IOException e) {// TODO 異常執行塊!e.printStackTrace();} catch (TemplateException e) {// TODO 異常執行塊!e.printStackTrace();}return txt;}public JavaMailSender getJavaMailSender() {return javaMailSender;}public void setJavaMailSender(JavaMailSender javaMailSender) {this.javaMailSender = javaMailSender;}public Configuration getConfiguration() {return configuration;}public void setConfiguration(Configuration configuration) {this.configuration = configuration;}}
模板文件如下:
然后在看看spring里面是怎么配置的呢?
<?xml version="1.0" encoding="UTF-8"?> <beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd"><bean id="mailsender" class="org.springframework.mail.javamail.JavaMailSenderImpl"><property name="host" value="mail.com"></property><property name="port" value="25"></property><property name="username" value="jerry"></property><property name="password" value="123" ></property><property name="protocol" value="smtp"></property><property name="defaultEncoding" value="utf-8"></property><property name="javaMailProperties"><props><prop key="mail.smtp.auth">true</prop></props></property></bean><!-- 配置FreeMarker--><bean id="freeMarkerConfiguration" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean"><!-- 指定模板文件路徑 --><property name="templateLoaderPath" value="org/doc/"></property><!-- 設置freekMarker環境變量 --><property name="freemarkerSettings"><props><prop key="default_encoding">UTF-8</prop></props></property></bean><!-- 簡單郵件 --><bean id="simpleMailsendService" class="org.service.impl.SimpleMailsendServiceImpl"><property name="sender" ref="mailsender"></property></bean><!-- html和帶附件的郵件 --><bean id="AttMailsendService" class="org.service.impl.AttMailsendServiceImpl"><property name="javaMailSender" ref="mailsender"></property></bean><!-- 使用模板發送郵件--><bean id="createMatterService" class="org.service.impl.CreateMatterServiceImpl"><property name="configuration" ref="freeMarkerConfiguration"></property><property name="javaMailSender" ref="mailsender"></property></bean></beans>
當前時間已經是00點多了,又累又困,我就不詳細解釋這個applicationContexct.xml里面的內容了,里面有注釋,看不懂的可以評論,我第一時間改進!
接著我們測試一下:
TestMail:
package org.test;import org.junit.Test; import org.service.IMailsendService; import org.service.impl.Mail; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestMail {@Testpublic void testMail() {ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); //簡單郵件//IMailsendService mailsendService=(IMailsendService) ctx.getBean("simpleMailsendService");//復雜郵件//IMailsendService mailsendService=(IMailsendService) ctx.getBean("AttMailsendService");//使用模板的文件IMailsendService mailsendService=(IMailsendService) ctx.getBean("createMatterService");mailsendService.sendMessage();System.out.println("發送成功!");}}
注明一下:簡單郵件是直接發的文本內容,復雜郵件是包含html格式和附件的,模板發送是html格式的另一種方式,
我們來看看運行的結果:
先看看帶附件,還有html格式的郵件:
接下來是簡單郵件:
接下來的一種是使用模板發送郵件,用戶名是動態上去的:
看不懂的歡迎留言!
總結
以上是生活随笔為你收集整理的使用spring实现邮件的发送(含测试,源码,注释)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java实现邮件发送准备工作(前期配置)
- 下一篇: java三大框架实现任务调度——IRem