日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Spring - Java/J2EE Application Framework 应用框架 第 17 章 使用Spring邮件抽象层发送Email

發(fā)布時(shí)間:2025/3/21 java 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring - Java/J2EE Application Framework 应用框架 第 17 章 使用Spring邮件抽象层发送Email 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

第?17?章?使用Spring郵件抽象層發(fā)送Email

17.1.?簡(jiǎn)介

Spring提供了一個(gè)發(fā)送電子郵件的高級(jí)抽象層,它向用戶屏蔽了底層郵件系統(tǒng)的一些細(xì)節(jié),同時(shí)負(fù)責(zé)低層次的代表客戶端的資源處理。

17.2.?Spring郵件抽象結(jié)構(gòu)

Spring郵件抽象層的主要包為org.springframework.mail。它包括了發(fā)送電子郵件的主要接口MailSender和 封裝了簡(jiǎn)單郵件的屬性如from,?to,cc,?subject,?text值對(duì)象叫做SimpleMailMessage。 一個(gè)以MailException為root的checked Exception繼承樹,它們提供了對(duì)底層郵件系統(tǒng)異常的高級(jí)別抽象。 請(qǐng)參考JavaDocs來得到關(guān)于郵件異常層次的更多的信息。

為了使用JavaMail中的一些特色如MIME類型的消息,Spring也提供了一個(gè)MailSender的子接口, 名為org.springframework.mail.javamail.JavaMailSender,同時(shí)也提供了一個(gè)對(duì)JavaMail的MIME類型的消息分塊的回調(diào)interface, 名為org.springframework.mail.javamail.MimeMessagePreparator

MailSender:

public interface MailSender {/*** Send the given simple mail message.* @param simpleMessage message to send* @throws MailException in case of message, authentication, or send errors*/public void send(SimpleMailMessage simpleMessage) throws MailException;/*** Send the given array of simple mail messages in batch.* @param simpleMessages messages to send* @throws MailException in case of message, authentication, or send errors*/public void send(SimpleMailMessage[] simpleMessages) throws MailException;}

JavaMailSender:

public interface JavaMailSender extends MailSender {/*** Create a new JavaMail MimeMessage for the underlying JavaMail Session* of this sender. Needs to be called to create MimeMessage instances* that can be prepared by the client and passed to send(MimeMessage).* @return the new MimeMessage instance* @see #send(MimeMessage)* @see #send(MimeMessage[])*/public MimeMessage createMimeMessage();/*** Send the given JavaMail MIME message.* The message needs to have been created with createMimeMessage.* @param mimeMessage message to send* @throws MailException in case of message, authentication, or send errors* @see #createMimeMessage*/public void send(MimeMessage mimeMessage) throws MailException;/*** Send the given array of JavaMail MIME messages in batch.* The messages need to have been created with createMimeMessage.* @param mimeMessages messages to send* @throws MailException in case of message, authentication, or send errors* @see #createMimeMessage*/public void send(MimeMessage[] mimeMessages) throws MailException;/*** Send the JavaMail MIME message prepared by the given MimeMessagePreparator.* Alternative way to prepare MimeMessage instances, instead of createMimeMessage* and send(MimeMessage) calls. Takes care of proper exception conversion.* @param mimeMessagePreparator the preparator to use* @throws MailException in case of message, authentication, or send errors*/public void send(MimeMessagePreparator mimeMessagePreparator) throws MailException;/*** Send the JavaMail MIME messages prepared by the given MimeMessagePreparators.* Alternative way to prepare MimeMessage instances, instead of createMimeMessage* and send(MimeMessage[]) calls. Takes care of proper exception conversion.* @param mimeMessagePreparators the preparator to use* @throws MailException in case of message, authentication, or send errors*/public void send(MimeMessagePreparator[] mimeMessagePreparators) throws MailException;}

MimeMessagePreparator:

public interface MimeMessagePreparator {/*** Prepare the given new MimeMessage instance.* @param mimeMessage the message to prepare* @throws MessagingException passing any exceptions thrown by MimeMessage* methods through for automatic conversion to the MailException hierarchy*/void prepare(MimeMessage mimeMessage) throws MessagingException;}

17.3.?使用Spring郵件抽象

讓我們來假設(shè)有一個(gè)業(yè)務(wù)接口名為OrderManager

public interface OrderManager {void placeOrder(Order order); }

同時(shí)有一個(gè)use case為:需要生成帶有訂單號(hào)的email信息,并向客戶發(fā)送該訂單。 為了這個(gè)目的我們會(huì)使用MailSender和SimpleMailMessage。

請(qǐng)注意,通常情況下,我們?cè)跇I(yè)務(wù)代碼中使用接口而讓Spring ioc容器負(fù)責(zé)組裝我們需要的合作者。

這里為OrderManager的一個(gè)實(shí)現(xiàn)

import org.springframework.mail.MailException; import org.springframework.mail.MailSender; import org.springframework.mail.SimpleMailMessage;public class OrderManagerImpl implements OrderManager {private MailSender mailSender;private SimpleMailMessage message;public void setMailSender(MailSender mailSender) {this.mailSender = mailSender;}public void setMessage(SimpleMailMessage message) {this.message = message;}public void placeOrder(Order order) {//... * Do the businness calculations....//... * Call the collaborators to persist the order//Create a threadsafe "sandbox" of the messageSimpleMailMessage msg = new SimpleMailMessage(this.message);msg.setTo(order.getCustomer().getEmailAddress());msg.setText("Dear "+ order.getCustomer().getFirstName()+ order.getCustomer().getLastName()+ ", thank you for placing order. Your order number is "+ order.getOrderNumber());try{mailSender.send(msg);}catch(MailException ex) {//log it and go onSystem.err.println(ex.getMessage()); }} }

上面的代碼的bean的定義應(yīng)該是這樣的:

<bean id="mailSender"class="org.springframework.mail.javamail.JavaMailSenderImpl"><property name="host"><value>mail.mycompany.com</value></property> </bean><bean id="mailMessage"class="org.springframework.mail.SimpleMailMessage"><property name="from"><value>customerservice@mycompany.com</value></property><property name="subject"><value>Your order</value></property> </bean><bean id="orderManager"class="com.mycompany.businessapp.support.OrderManagerImpl"><property name="mailSender"><ref bean="mailSender"/></property><property name="message"><ref bean="mailMessage"/></property> </bean>

下面是OrderManager的實(shí)現(xiàn),使用了MimeMessagePreparator回調(diào)接口。 請(qǐng)注意這里的mailSender屬性類型為JavaMailSender,這樣做是為了能夠使用JavaMail的MimeMessage:

import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeMessage; import org.springframework.mail.MailException; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessagePreparator;public class OrderManagerImpl implements OrderManager {private JavaMailSender mailSender;public void setMailSender(JavaMailSender mailSender) {this.mailSender = mailSender;}public void placeOrder(final Order order) {//... * Do the businness calculations....//... * Call the collaborators to persist the orderMimeMessagePreparator preparator = new MimeMessagePreparator() {public void prepare(MimeMessage mimeMessage) throws MessagingException {mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(order.getCustomer().getEmailAddress()));mimeMessage.setFrom(new InternetAddress("mail@mycompany.com"));mimeMessage.setText("Dear "+ order.getCustomer().getFirstName()+ order.getCustomer().getLastName()+ ", thank you for placing order. Your order number is "+ order.getOrderNumber());}};try{mailSender.send(preparator);}catch(MailException ex) {//log it and go onSystem.err.println(ex.getMessage()); }} }

如果你想使用JavaMail MimeMessage以獲得全部的能力,只需要你指尖輕觸鍵盤即可使用MimeMessagePreparator。

請(qǐng)注意這部分郵件代碼是一個(gè)橫切關(guān)注點(diǎn),是一個(gè)可以重構(gòu)至一個(gè)定制的SpringAOP advice的完美候選者, 這樣就可以不費(fèi)力的應(yīng)用到目標(biāo)對(duì)象OrderManager上來。關(guān)于這一點(diǎn)請(qǐng)看AOP章節(jié)。

17.3.1.?可插拔的MailSender實(shí)現(xiàn)

Spring提供兩種MailSender的實(shí)現(xiàn):標(biāo)準(zhǔn)的JavaMail實(shí)現(xiàn)和在http://servlets.com/cos?(com.oreilly.servlet)里的Jason Hunter's?MailMessage類之上的實(shí)現(xiàn)。請(qǐng)參考JavaDocs以得到進(jìn)一步的信息。

from:?http://docs.huihoo.com/spring/zh-cn/mail.html

總結(jié)

以上是生活随笔為你收集整理的Spring - Java/J2EE Application Framework 应用框架 第 17 章 使用Spring邮件抽象层发送Email的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 免费一级做a爰片久久毛片潮 | 精品视频 | 欧美性tv| 椎名由奈av一区二区三区 | 久久午夜精品视频 | 九九精品久久 | 日本大尺度激情做爰hd | 成人激情自拍 | 欧美一级性视频 | 天天干天天玩 | 丝袜一区二区三区 | 丝袜老师办公室里做好紧好爽 | 亚州欧美日韩 | 亚洲永久免费av | 一区二区三区免费网站 | 亚洲福利视频一区 | 观看毛片 | 九九色综合网 | 亚洲你我色 | 国产正在播放 | 中文字幕在线观看的网站 | 国产日韩欧美视频在线观看 | 亚洲一区二区三区香蕉 | 美女综合网 | 99久久久无码国产精品性色戒 | 亚洲一区二区三区无码久久 | 天天在线免费视频 | 成人软件在线观看 | 日韩一卡二卡三卡四卡 | 亚洲国内自拍 | 毛片亚洲av无码精品国产午夜 | 91高跟黑色丝袜呻吟在线观看 | 久久高清内射无套 | 欧美贵妇videos办公室 | 黄色日比视频 | 曰本黄色大片 | 九一国产视频 | 在线观看免费看片 | 天天爱天天射 | 久久久一区二区三区 | 日韩美女在线 | 天天干人人干 | 中文字幕日韩一区二区三区不卡 | 亚洲色图19p | 污网在线观看 | 欧美爱爱一区二区 | 一本到在线视频 | 黄色片91| 亚洲黄色在线视频 | 一区二区三区四区国产 | 岳奶大又白下面又肥又黑水多 | 国产一区二区在线视频 | 免费啪视频在线观看 | 少妇精品久久久久www | 91精品国产电影 | 爱的色放在线 | 欧美一a一片一级一片 | 亚洲图片在线播放 | 亚洲久久在线 | 自由成熟xxxx色视频 | 色视频免费观看 | 亚洲一区二区三区四区五区六区 | 91九色国产ts另类人妖 | 日韩精品视频一区二区三区 | 四虎在线观看视频 | 四虎少妇做爰免费视频网站四 | 亚洲第一大综合区 | xxxx色| 麻豆免费在线观看视频 | 怨女1988国语版在线观看高清 | 免费观看亚洲视频 | 伊人91 | 怡春院一区二区 | 国产精品一区二区小说 | 亚洲大尺度在线观看 | 日韩国产高清在线 | 少妇太紧太爽又黄又硬又爽 | jizzjizz在线播放 | 在线黄色网 | 日韩精品一区二区三区无码专区 | 人人干干人人 | 午夜在线观看视频网站 | 最新精品在线 | 91禁在线动漫 | 午夜在线观看av | 秘密的基地 | 闷骚老干部cao个爽 av九九九 | 美女操出白浆 | 97播播| 国产日韩精品suv | 精品日韩av | 99亚洲精品 | 欧美黄色免费大片 | 色多多视频在线 | 青青草国产一区二区三区 | 天堂视频免费看 | 简单av网 | 欧美国产免费 | 最新av|