前言:JavaMail API为Java应用程序提供了邮件发送和接收的服务。JavaMail提供了一个平台无关和协议无关的框架,可以在JavaMail API的基础上构建一套电子邮件应用。然而如果只想写一个邮件发送客户端程序的话,JavaMail提供的API还是稍微有些麻烦,幸好有Spring,为我么提供了Mail功能的包装,本文将讲述如何用Spring写一个邮件发送程序。
1. 所需要的jar包
spring.jar
activation.jar
mail.jar
commons-logging.jar
不懂Spring的朋友先看看视频入门:http://www.javaye.com/blog/post/spring.html
2. applicationContext.xml 详细配置(以Gmail为例)
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.gmail.com"></property>
<property name="port" value="465"></property>
<property name="username" value="xxxxxxxx"></property>
<property name="password" value="xxxxxxx"></property>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.starttls.enable">true</prop>
<prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
</props>
</property>
</bean>
红色部分换成你自己的用户名和密码即可,smtp.gmail.com换成你自己邮箱的smtp服务器。
3. 发送邮件的主程序
package mail.test;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
public class Main {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
JavaMailSender mimeSender = (JavaMailSender) context.getBean("mimeSender");
MimeMessage mime = mimeSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(mime,true,"UTF-8");
helper.setFrom(xxx@gmail.com); //发件人,可以冒名顶替哦,如果对方不细查的话
helper.setTo(yyy@gmail.com); //收件人
helper.setSubject("强哥哥"); //标题
helper.setText("<h1>囧Z 囧Z 囧Z</h1>",true); //内容
helper.addInline("frog", new ClassPathResource("frog.bmp")); //可以携带附件
mimeSender.send(mime); //发
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
怎么样,简单吧,而且是高度可配置的,我们只需要在applicationContext.xml中配置好MailSender就行了。
4. 补充
第一节中邮件服务器配置是以Gmail 为例,如果你的邮件服务器不走SSL的话,相应部分请进行修改:
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.starttls.enable">true</prop>
<prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
</props>
改为:
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.starttls.enable">false</prop>
</props>

订阅我的BLOG(RSS)