您的位置:首页 > 编程语言 > Java开发

spring3 发送邮件和附件

2014-03-11 10:49 357 查看
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="customerservice@mycompany.com"/>//发送者的邮箱地址
<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("test@host.com");

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("test@host.com");

// 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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息