日韩性视频-久久久蜜桃-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ⅴ激情无码久久久无码 | 国产精品福利一区二区三区 | 日韩福利片在线观看 | 69久久精品无码一区二区 | 户外少妇对白啪啪野战 | www国产精品视频 | 国产精品久久久久久久久借妻 | 国产尤物视频在线 | 欧美极品jizzhd欧美爆 | 国产美女激情 | 久久成人毛片 | 欧美成人黑人猛交 | 超碰人人99 | 91丨porny丨在线中文 | 欧美精品在线一区 | 色婷婷六月天 | 少妇高潮一区二区三区99刮毛 | 久久精品国产亚洲av成人 | 美国一级片网站 | 亚洲av成人片色在线观看高潮 | 麻豆91视频 | 国产伦精品免费视频 | 欧美成年人视频在线观看 | 亚洲精品国产免费 | 男生草女生视频 | 少妇脚交调教玩男人的视频 | 亚洲免费在线播放 | 亚洲男人第一网站 | 亚洲三级视频 | 草草影院在线 | 欧美久久久精品 | 国产一区二区三区视频播放 | 久久av一区二区三区亚洲 | 天堂va蜜桃一区二区三区漫画版 | 97激情 | 久久av高潮av无码av喷吹 | 亚洲av永久无码精品国产精品 | 国产综合av| 深夜福利一区二区 | 亚洲人 女学生 打屁股 得到 | 国产一区二区三区成人 | 免费的黄色的网站 | 国产综合视频一区二区 | 麻豆传媒映画官网 | 91福利视频在线 | 天堂中文视频 | 丁香综合 | 丁香花电影高清在线阅读免费 | 猛1被调教成公厕尿便失禁网站 | 成人在线高清 | 暖暖免费观看日本版 | 精品国偷自产一区二区三区 | 国产99久久久国产精品免费看 | 男生女生搞鸡视频 | 亚洲激情在线观看 | 亚洲一区二区在线观看视频 | 亚洲天堂免费在线观看视频 | 男人透女人免费视频 | 日本伦理一区 | 91亚洲精品国偷拍自产在线观看 | 欧美在线天堂 | 欧美专区在线 | 欧美黄色片免费看 | 亚洲黄色视屏 | 亚洲精品xxx | 色婷婷av一区二区三 | 丰满人妻一区二区三区四区 | 亚洲综合激情五月久久 | 人人超碰97| 亚洲美女视频在线 | 中国丰满老太hd | 国产有码在线 | 在线观看中文字幕 | 老司机深夜网站 | 精品不卡一区二区三区 | 国产精品综合一区二区 | 亚洲精品乱码久久 | 激情综合影院 | 2025国产精品视频 | 少妇精品久久久久www | 日韩高清影视 | 国产亚洲综合av | 欧美久久久久久又粗又大 | 欧类av怡春院 | 日韩美女黄色片 | 亚洲午夜在线 | 精品视频免费在线观看 | 免费视频久久 | 久久99精品国产麻豆婷婷 | 久久色在线观看 | 日韩精品人妻一区二区三区免费 | 91丨porny在线 | 一级女性全黄久久生活片免费 | 永久免费av无码网站性色av | 国产欧美精品一区二区色综合朱莉 | 福利视频在线免费观看 | 91精品国产综合久久久密臀九色 | 看黄色网址|