Java发送文本邮件及附件邮件,QQ邮箱POP3与SMTP授权码(springframework+javax.mail)
利用springframework+javax.mail发邮件(普通邮件、带附件邮件、HTML格式邮件)
一、引入相关的库
<!-- spring核心库 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.5.RELEASE</version>
</dependency>
<!--发送Email-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
二、装配JavaMailSender类的配置信息
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:cache="http://www.springframework.org/schema/cache" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://www.springframework.org/schema/cache
http://www.springframework.org/schema/cache/spring-cache-4.0.xsd">
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.qq.com" />//ip,下图有
<property name="port" value="587" />//端口,下图有
<property name="username" value="本人邮箱" />
<property name="password" value="授权码" />
<property name="protocol" value="smtp" />
<property name="defaultEncoding" value="utf-8" />
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
</props>
</property>
</bean>
<!--使用注解装配Email工具类-->
<!-- <bean id="emailutil" class="com.study.it.util.EmailUtil" p:mailSender-ref="mailSender"/> -->
</beans>
三、编写工具类
import java.io.File;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
@Component("emailutil")
public class EmailUtil {
@Autowired
@Qualifier("mailSender")
private JavaMailSender mailSender=null;
public void sendEmail(String to,String title,String content){
//发送邮件
SimpleMailMessage m = new SimpleMailMessage();
m.setTo(to);
m.setFrom("发件人邮箱");
m.setSubject(title);
m.setText(content);
mailSender.send(m);
System.out.println("发送成功!");
}
public void sendEmail(String to,String title,String html,String[] filepaths,boolean isHtml){
//用复杂的格式传输复杂的邮件(带附件,html格式)
MimeMessage me = mailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(me,true,"utf-8");
helper.setTo(to);
helper.setFrom("发件人邮箱");
helper.setSubject(title);
helper.setText(html,isHtml);
if(filepaths != null && filepaths.length>0){
for(String path:filepaths){
File file = new File(path);
helper.addAttachment(MimeUtility.encodeWord(file.getName()), file);
}
}
mailSender.send(helper.getMimeMessage());
System.out.println("发送成功!");
} catch (Exception e) {
// TODO Auto-generated catch block
throw new RuntimeException("发送邮件错误"+e.getMessage(),e);
}
}
}
四、测试类
public class Test{
@Autowired
private EmailUtil emailUtil;
//发送普通文本邮件
public void sendMessage(){
//(收件人,标题,邮件内容)
emailUtil.sendEmail("收件人邮箱", "每日会员报表", "报表内容");
}
//发送文件邮件
public void sendFile(){
//(收件人,标题,邮件内容,文件名数组,是否是html格式)
emailUtil.sendEmail("收件人邮箱", "每日会员报表", "请查看每日报表", new String[]{"D:/report.xls"},true);
}
}