spring3 發送郵件和附件

spring3框架提供了非常有用的郵件功能,org.springframework.mail 提供了對郵件的發送的jar包,最好還是自己去看一下里面的函數。spring framework提供了簡單和帶附件的郵件發送功能。

假設這是個業務邏輯層代碼,假設我們需要給客戶發送關於訂單信息的郵件

publicinterface OrderManager {

    void placeOrder(Order order);
}

簡單郵件發送功能

import org.springframework.mail.MailException;
import org.springframework.mail.MailSender;
import org.springframework.mail.SimpleMailMessage;

publicclass SimpleOrderManager implements OrderManager {

   private MailSender mailSender;//spring 提供的一個已經封裝好的庫,具體的實現可以參考API

private SimpleMailMessage templateMessage; publicvoid setMailSender(MailSender mailSender) { this.mailSender = mailSender; } publicvoid setTemplateMessage(SimpleMailMessage templateMessage) { this.templateMessage = templateMessage; } public void placeOrder(Order order) { // Do the business calculations...// Call the collaborators to persist the order...// Create a thread safe "copy" of the template message and customize it SimpleMailMessage msg = new SimpleMailMessage(this.templateMessage); 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{ this.mailSender.send(msg); } catch(MailException ex) { // simply log it and go on... System.err.println(ex.getMessage()); } }

}

xml的配置文件,當然你也可以使用註解

<beanid="mailSender"class="org.springframework.mail.javamail.JavaMailSenderImpl">

 <propertyname="host"value="mail.mycompany.com"/>//郵箱的服務主機

 <property name="port" value="25"/>

<property name="port" value="25" />

<property name="javaMailProperties">

<props>

<prop key="mail.smtp.auth">true</prop>

<prop key="mail.smtp.timeout">25000</prop>

</props>

</property>

<property name="username" value="**********" />//用戶名

<property name="password" value="*******"></property>//密碼

</bean> <!-- this is a template message that we can pre-load with default state --> <beanid="templateMessage"class="org.springframework.mail.SimpleMailMessage"> <property name="from"v alue="[email protected]"/>//發送者的郵箱地址 <property name="subject"value="Your order"/> </bean> <beanid="orderManager"class="com.mycompany.businessapp.support.SimpleOrderManager"> <propertyname="mailSender"ref="mailSender"/> <propertyname="templateMessage"ref="templateMessage"/> </bean>


發送附件和內嵌的htm啊

JavaMail and MimeMessageHelper

1 附件的發送

JavaMailSenderImpl sender = new JavaMailSenderImpl();

MimeMessage message = sender.createMimeMessage();

// use the true flag to indicate you need a multipart message
MimeMessageHelper helper = new MimeMessageHelper(message, true);//true 表示你發送的是帶有附件的郵件
helper.setTo("[email protected]");

helper.setText("Check out this image!");

// let's attach the infamous windows Sample file (this time copied to c:/)

FileSystemResource file = new FileSystemResource(new File("c:/Sample.jpg"));

//spring 2.5的版本需要

//FileSystemResource file = new FileSystemResource(new File("file:c:/Sample.jpg"));

helper.addAttachment("CoolImage.jpg", file);

// helper.addAttachment(MimeUtility.encodeWord("個人申請表.pdf"),new FileSystemResource(new File(pdfP//ath)));

sender.send(message);

2 發送帶有html的郵件

JavaMailSenderImpl sender = new JavaMailSenderImpl();
sender.setHost("mail.host.com");

MimeMessage message = sender.createMimeMessage();

// use the true flag to indicate you need a multipart message
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setTo("[email protected]");

// use the true flag to indicate the text included is HTML
helper.setText("<html><body><img src='cid:identifier1234'></body></html>", true);

// let's include the infamous windows Sample file (this time copied to c:/)
FileSystemResource res = new FileSystemResource(new File("c:/Sample.jpg"));
helper.addInline("identifier1234", res);

sender.send(message);


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章