package com.action;
import java.util.ArrayList;import java.util.Date;import java.util.Iterator;import java.util.List;
import javax.activation.DataHandler;import javax.activation.FileDataSource;import javax.mail.Message;import javax.mail.MessagingException;import javax.mail.Multipart;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeBodyPart;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeMultipart;
import org.springframework.context.ApplicationContext;import org.springframework.context.support.FileSystemXmlApplicationContext;import org.springframework.mail.SimpleMailMessage;import org.springframework.mail.javamail.JavaMailSender;import org.springframework.mail.javamail.MimeMessagePreparator;
public class SpringMail { public static void main(String[] args) throws Exception { ApplicationContext ctx = new FileSystemXmlApplicationContext( "applicationContext.xml"); JavaMailSender sender = (JavaMailSender) ctx.getBean("mailSender"); SpringMail springMail = new SpringMail(); //测试发送只有文本信息的简单测试 springMail.sendTextMail(sender); //测试发送带附件的邮件 springMail.sendMimeMessage(sender); } /** *//** * 测试发送只有文本信息的简单测试 * @param sender 邮件发送器 * @throws Exception */ private void sendTextMail(JavaMailSender sender) throws Exception { SimpleMailMessage mail = new SimpleMailMessage(); mail.setTo("superman_wshm@126.com"); mail.setFrom("superman_wshm@126.com"); mail.setSubject("test by amigo"); mail.setText("spring Mail的简单测试"); sender.send(mail); System.out.println("成功发送文本文件!"); } /** *//** * 发送带附件的邮件 * @param sender 邮件发送器 * @throws Exception */ private void sendMimeMessage(final JavaMailSender sender) throws Exception { //附件文件集合 final List files = new ArrayList(); MimeMessagePreparator mimeMail = new MimeMessagePreparator() { public void prepare(MimeMessage mimeMessage) throws MessagingException { mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress("superman_wshm@126.com")); mimeMessage.setFrom(new InternetAddress("superman_wshm@126.com")); mimeMessage.setSubject("Spring发送带附件的邮件", "gb2312"); Multipart mp = new MimeMultipart(); //向Multipart添加正文
MimeBodyPart content = new MimeBodyPart(); content.setText("内含spring邮件发送的例子,请查收!"); //向MimeMessage添加(Multipart代表正文) mp.addBodyPart(content); files.add("com/action/SpringMail.java"); files.add("applicationContext.xml"); //向Multipart添加附件 Iterator it = files.iterator(); while(it.hasNext()) { MimeBodyPart attachFile = new MimeBodyPart(); String filename = it.next().toString(); FileDataSource fds = new FileDataSource(filename); attachFile.setDataHandler(new DataHandler(fds)); attachFile.setFileName(fds.getName()); mp.addBodyPart(attachFile); } files.clear(); //向Multipart添加MimeMessage mimeMessage.setContent(mp); mimeMessage.setSentDate(new Date()); } };
//发送带附件的邮件 sender.send(mimeMail); System.out.println("成功发送带附件邮件!"); }
}
Spring配置文件applicationContext.xml<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans> <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host"> <value>smtp.126.com</value> </property> <property name="javaMailProperties"> <props> <prop key="mail.smtp.auth">true</prop> <prop key="mail.smtp.timeout">25000</prop> </props> </property> <property name="username"> <value>superman_wshm</value> </property> <property name="password"> <value>******</value> </property> </bean>
</beans> 刚才发现一bug,当附件名为中文时,会出现中文乱码问题,对sendMimeMessage方法进行了部分修改,如下:
Powered by: BlogJava Copyright © semovy