一、建立工程,结构如下:
二、导入jar包:
activation.jar、commons-logging.jar、mail.jar 、spring.jar
三、代码片段
1、mail.properties
# This properties file is used to configure mail settings in
# /WEB-INF/applicationContext-mail.xml.
mail.host=smtp.sina.com
mail.username=zhangbook10086@sina.com
mail.password=yourpassword
mail.from=zhangbook10086@sina.com
mail.to=zhangbook10087@sina.com
2、applicationContext-mail.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
<!-- 加载mail.properties文件 -->
<bean id="configurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:mail.properties</value>
</list>
</property>
</bean>
<!-- 声明JavaMailSenderImpl对象 -->
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="defaultEncoding" value="UTF-8" />
<property name="host" value="${mail.host}" />
<property name="username" value="${mail.username}" />
<property name="password" value="${mail.password}" />
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop> <!-- 设置认证开关 -->
<prop key="mail.debug">true</prop> <!-- 启动调试开关 -->
</props>
</property>
</bean>
<!-- 声明SimpleMailMessage对象 -->
<bean id="mailMessage" class="org.springframework.mail.SimpleMailMessage">
<property name="from" value="${mail.from}" /> <!-- 设置发送方 -->
<property name="to" value="${mail.to}" /> <!-- 设置接收方 -->
<!-- 查看SimpleMailMessage源码还可以注入标题,内容等 -->
</bean>
</beans>
3、SpringSimpleMailTest.java
package com.demo.mail;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
public class SpringSimpleMailTest {
public static void main(String[] args) {
ApplicationContext actx = new ClassPathXmlApplicationContext("applicationContext-mail.xml");
JavaMailSenderImpl ms = (JavaMailSenderImpl) actx.getBean("mailSender");
SimpleMailMessage smm = (SimpleMailMessage) actx.getBean("mailMessage");
// 主题,内容
smm.setSubject("测试mail");
smm.setText("这个是一封测试mail,无需回复");
ms.send(smm);
}
}
四、注意事项:
1、测试时请使用qq、sohu、sina邮箱,不要使用163、126邮箱,因为163、126邮箱禁止了smtp服务,即不能使用客户端发送邮件o(╯□╰)o
2、需要登录你的发送邮箱,在【设置】--【账户】中,选择【开启smtp/pop3服务】。
3、如果在运行时报错:java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream,
主要原因是 avax.mail和javax.activation这两个包已经在javaEE5当中属于基础包了,就是JDK中自带了已经,但是里面的方法与现在外面的mail.jar和activation.jar有一些出入,所以初学者在直接copy别人代码的时候往往会出现上面的错误。 解决方法是
进到X:/Program Files/MyEclipse 6.5/myeclipse/eclipse/plugins/com.genuitec.eclipse.j2eedt.core_6.5.0.zmyeclipse650200806/data/libraryset/EE_5
这个路径里,可以看到javaee.jar,用rar把这个文件打开,然后进到javax文件夹里,删除mail.jar和activation.jar