目前在网易邮箱测试通过,QQ和其他邮箱存在问题,注意必须先在邮箱里开启smtp功能。
1.用maven引入jar:
spring相关jar:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>3.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>3.2.6.RELEASE</version>
</dependency>
mail相关jar:
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
2.spring配置文件bean.xml
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:mail.properties</value>
</list>
</property>
</bean>
<!-- 邮件发送器 163 -->
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${mail.host}" />
<property name="username" value="${mail.username}" />
<property name="password" value="${mail.password}" />
<property name="defaultEncoding" value="UTF-8"></property>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">${mail.smtp.auth}</prop>
<prop key="mail.smtp.timeout">${mail.smtp.timeout}</prop>
</props>
</property>
</bean>
<!-- 邮件发送器 gmail -->
<!-- <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${mail.host}" />
<property name="username" value="${mail.username}" />
<property name="password" value="${mail.password}" />
<property name="defaultEncoding" value="UTF-8"></property>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">${mail.smtp.auth}</prop>
<prop key="mail.smtp.timeout">${mail.smtp.timeout}</prop>
<prop key="mail.smtp.port">465</prop>
<prop key="mail.smtp.socketFactory.port">465</prop>
<prop key="mail.smtp.socketFactory.fallback">false</prop>
<prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
</props>
</property>
</bean> -->
3.mail.properties配置文件:
##### 163 ###
mail.from=lifeng_it@163.com
mail.host=smtp.163.com
mail.password=****
mail.smtp.auth=true
mail.smtp.timeout=25000
mail.username=lifeng_it@163.com
##### qq ###
#mail.from=729088240@qq.com
#mail.host=smtp.qq.com
#mail.password=****
#mail.smtp.auth=true
#mail.smtp.timeout=2500000
#mail.username=729088240@qq.com
###### gmail ##########
#mail.from=wzqdemo@163.com
#mail.host=smtp.gmail.com
#mail.password=********
#mail.smtp.auth=true
#mail.smtp.timeout=25000
#mail.username=wzqdemo@gmail.com
4.MailBean实体类,set。get略:
public class MailBean {
private String from;
private String fromName;
private String[] toEmails;
private String subject;
private String context;
5.编写核心类:
package com.lifeng.shiro.jmail;
import java.io.UnsupportedEncodingException;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
@Service
public class MailSenderService {
@Autowired
private JavaMailSenderImpl javaMailSenderImpl;
/**
* 创建MimeMessage
* @param mailBean
* @return
* @throws MessagingException
* @throws UnsupportedEncodingException
*/
public MimeMessage createMimeMessage(MailBean mailBean) throws MessagingException, UnsupportedEncodingException{
MimeMessage mimeMessage = javaMailSenderImpl.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
messageHelper.setFrom(mailBean.getFrom(), mailBean.getFromName());
messageHelper.setSubject(mailBean.getSubject());
messageHelper.setTo(mailBean.getToEmails());
messageHelper.setText(mailBean.getContext(), true); // html: true
return mimeMessage;
}
public void sendMail(MailBean mailBean) throws UnsupportedEncodingException, MessagingException{
MimeMessage msg = createMimeMessage(mailBean);
javaMailSenderImpl.send(msg);
}
}
6.测试类:
package com.lifeng.shiro.jmail;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MailSenderUtil {
/**
* 参考:http://wang3065.iteye.com/blog/1718381
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception{
ApplicationContext ac = new ClassPathXmlApplicationContext("spring-mail.xml");
MailSenderService mailSenderService = (MailSenderService) ac.getBean("mailSenderService");
MailBean mailBean = new MailBean();
mailBean.setFrom("lifeng_it@163.com");
mailBean.setFromName("XXX");
mailBean.setSubject("你好");
mailBean.setToEmails(new String[]{"729088240@qq.com","182957182222@139.com"});
mailBean.setContext("<a href='www.baidu.com'><font color='red'>fdsfdsf</font></a>");
mailSenderService.sendMail(mailBean);
}
}