springMVC发送邮件
本文内容纲要:
**springMVC发送邮件**
利用javax.mail发送邮件,图片与附件都可发送
1,Controller类
packagecom.web.controller.api;
importjavax.annotation.Resource;
importorg.slf4j.Logger;
importorg.slf4j.LoggerFactory;
importorg.springframework.stereotype.Controller;
importorg.springframework.web.bind.annotation.RequestMapping;
importcom.service.EmailService;
@Controller
@RequestMapping("api")
publicclassEmailTaskController{
privatestaticfinalLoggerlogger=LoggerFactory.getLogger(EmailTaskController.class);
@Resource
EmailServiceemailService;
@RequestMapping("sendEmailTask")
publicvoidsendEmailTask(){
logger.info("-------------执行发送邮件START---------------");
//写入excel
//insuranceService.excelManage();
//发邮件
emailService.emailManage();
logger.info("-------------执行发送邮件END---------------");
}
}
2,service类
packagecom.service;
importcom.entity.MailModel;
publicinterfaceEmailService{
/**
*email配置
*@return
*/
publicbooleanemailManage();
/**
*发送邮件
*@parammail
*/
publicbooleansendEmail(MailModelmail);
}
packagecom.service.impl;
importjava.io.File;
importjava.util.ArrayList;
importjava.util.Date;
importjava.util.HashMap;
importjava.util.Iterator;
importjava.util.List;
importjava.util.Map;
importjavax.annotation.Resource;
importjavax.mail.MessagingException;
importjavax.mail.internet.MimeMessage;
importorg.apache.log4j.Logger;
importorg.springframework.beans.factory.annotation.Value;
importorg.springframework.core.io.FileSystemResource;
importorg.springframework.mail.SimpleMailMessage;
importorg.springframework.mail.javamail.JavaMailSender;
importorg.springframework.mail.javamail.MimeMessageHelper;
importorg.springframework.stereotype.Service;
importcom.entity.MailModel;
importcom.service.EmailService;
importcom.SimpleException;
@Service
publicclassEmailServiceImplimplementsEmailService{
privatestaticLoggerlogger=Logger.getLogger(EmailServiceImpl.class);
privateStringexcelPath="d://";
@Resource
privateJavaMailSenderjavaMailSender;
@Resource
privateSimpleMailMessagesimpleMailMessage;
@Override
publicvoidemailManage(){
MailModelmail=newMailModel();
//主题
mail.setSubject("清单");
//附件
Map<String,String>attachments=newHashMap<String,String>();
attachments.put("清单.xlsx",excelPath+"清单.xlsx");
mail.setAttachments(attachments);
//内容
StringBuilderbuilder=newStringBuilder();
builder.append("<html><body>你好!<br/>");
builder.append("    附件是个人清单。<br/>");
builder.append("    其中人信息;<br/>");
builder.append("</body></html>");
Stringcontent=builder.toString();
mail.setContent(content);
sendEmail(mail);
}
/**
*发送邮件
*
*@authorchenyq
*@date2016-5-9上午11:18:21
*@throwsException
*/
@Override
publicvoidsendEmail(MailModelmail){
//建立邮件消息
MimeMessagemessage=javaMailSender.createMimeMessage();
MimeMessageHelpermessageHelper;
try{
messageHelper=newMimeMessageHelper(message,true,"UTF-8");
//设置发件人邮箱
if(mail.getEmailFrom()!=null){
messageHelper.setFrom(mail.getEmailFrom());
}else{
messageHelper.setFrom(simpleMailMessage.getFrom());
}
//设置收件人邮箱
if(mail.getToEmails()!=null){
String[]toEmailArray=mail.getToEmails().split(";");
List<String>toEmailList=newArrayList<String>();
if(null==toEmailArray||toEmailArray.length<=0){
thrownewSimpleException("收件人邮箱不得为空!");
}else{
for(Strings:toEmailArray){
if(s!=null&&!s.equals("")){
toEmailList.add(s);
}
}
if(null==toEmailList||toEmailList.size()<=0){
thrownewSimpleException("收件人邮箱不得为空!");
}else{
toEmailArray=newString[toEmailList.size()];
for(inti=0;i<toEmailList.size();i++){
toEmailArray[i]=toEmailList.get(i);
}
}
}
messageHelper.setTo(toEmailArray);
}else{
messageHelper.setTo(simpleMailMessage.getTo());
}
//邮件主题
if(mail.getSubject()!=null){
messageHelper.setSubject(mail.getSubject());
}else{
messageHelper.setSubject(simpleMailMessage.getSubject());
}
//true表示启动HTML格式的邮件
messageHelper.setText(mail.getContent(),true);
//添加图片
if(null!=mail.getPictures()){
for(Iterator<Map.Entry<String,String>>it=mail.getPictures().entrySet()
.iterator();it.hasNext();){
Map.Entry<String,String>entry=it.next();
Stringcid=entry.getKey();
StringfilePath=entry.getValue();
if(null==cid||null==filePath){
thrownewRuntimeException("请确认每张图片的ID和图片地址是否齐全!");
}
Filefile=newFile(filePath);
if(!file.exists()){
thrownewRuntimeException("图片"+filePath+"不存在!");
}
FileSystemResourceimg=newFileSystemResource(file);
messageHelper.addInline(cid,img);
}
}
//添加附件
if(null!=mail.getAttachments()){
for(Iterator<Map.Entry<String,String>>it=mail.getAttachments()
.entrySet().iterator();it.hasNext();){
Map.Entry<String,String>entry=it.next();
Stringcid=entry.getKey();
StringfilePath=entry.getValue();
if(null==cid||null==filePath){
thrownewRuntimeException("请确认每个附件的ID和地址是否齐全!");
}
Filefile=newFile(filePath);
if(!file.exists()){
thrownewRuntimeException("附件"+filePath+"不存在!");
}
FileSystemResourcefileResource=newFileSystemResource(file);
messageHelper.addAttachment(cid,fileResource);
}
}
messageHelper.setSentDate(newDate());
//发送邮件
javaMailSender.send(message);
logger.info("------------发送邮件完成----------");
}catch(MessagingExceptione){
e.printStackTrace();
}
}
}
MailModel实体类
packagecom.support.entity;
importjava.util.Map;
publicclassMailModel{
/**
*发件人邮箱服务器
*/
privateStringemailHost;
/**
*发件人邮箱
*/
privateStringemailFrom;
/**
*发件人用户名
*/
privateStringemailUserName;
/**
*发件人密码
*/
privateStringemailPassword;
/**
*收件人邮箱,多个邮箱以“;”分隔
*/
privateStringtoEmails;
/**
*邮件主题
*/
privateStringsubject;
/**
*邮件内容
*/
privateStringcontent;
/**
*邮件中的图片,为空时无图片。map中的key为图片ID,value为图片地址
*/
privateMap<String,String>pictures;
/**
*邮件中的附件,为空时无附件。map中的key为附件ID,value为附件地址
*/
privateMap<String,String>attachments;
privateStringfromAddress;//发送人地址1个
privateStringtoAddresses;//接收人地址,可以为很多个,每个地址之间用";"分隔,比方说450065208@qq.com;lpf@sina.com
privateString[]attachFileNames;//附件
publicStringgetFromAddress(){
returnfromAddress;
}
publicvoidsetFromAddress(StringfromAddress){
this.fromAddress=fromAddress;
}
publicStringgetToAddresses(){
returntoAddresses;
}
publicvoidsetToAddresses(StringtoAddresses){
this.toAddresses=toAddresses;
}
publicStringgetSubject(){
returnsubject;
}
publicvoidsetSubject(Stringsubject){
this.subject=subject;
}
publicStringgetContent(){
returncontent;
}
publicvoidsetContent(Stringcontent){
this.content=content;
}
publicString[]getAttachFileNames(){
returnattachFileNames;
}
publicvoidsetAttachFileNames(String[]attachFileNames){
this.attachFileNames=attachFileNames;
}
publicStringgetEmailHost(){
returnemailHost;
}
publicvoidsetEmailHost(StringemailHost){
this.emailHost=emailHost;
}
publicStringgetEmailFrom(){
returnemailFrom;
}
publicvoidsetEmailFrom(StringemailFrom){
this.emailFrom=emailFrom;
}
publicStringgetEmailUserName(){
returnemailUserName;
}
publicvoidsetEmailUserName(StringemailUserName){
this.emailUserName=emailUserName;
}
publicStringgetEmailPassword(){
returnemailPassword;
}
publicvoidsetEmailPassword(StringemailPassword){
this.emailPassword=emailPassword;
}
publicStringgetToEmails(){
returntoEmails;
}
publicvoidsetToEmails(StringtoEmails){
this.toEmails=toEmails;
}
publicMap<String,String>getPictures(){
returnpictures;
}
publicvoidsetPictures(Map<String,String>pictures){
this.pictures=pictures;
}
publicMap<String,String>getAttachments(){
returnattachments;
}
publicvoidsetAttachments(Map<String,String>attachments){
this.attachments=attachments;
}
}
spring.xml添加配置信息
<?xmlversion="1.0"encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!--发送邮件-->
<beanid="javaMailSender"class="org.springframework.mail.javamail.JavaMailSenderImpl">
<propertyname="host">
<value>${mail.host}</value>
</property>
<propertyname="javaMailProperties">
<props>
<propkey="mail.smtp.auth">true</prop>
<propkey="mail.smtp.timeout">25000</prop>
</props>
</property>
<propertyname="username">
<value>${mail.username}</value>
</property>
<propertyname="password">
<value>${mail.password}</value>
</property>
<propertyname="defaultEncoding">
<value>UTF-8</value>
</property>
</bean>
<beanid="simpleMailMessage"class="org.springframework.mail.SimpleMailMessage">
<propertyname="from"value="${mail.from}"/>
<propertyname="subject"value="${mail.subject}"/>
<propertyname="to"value="${mail.to}"/>
<!--
<propertyname="text"value="邮件内容"/>
-->
</bean>
</beans>
dev.properties配置
#emailconfiguration
mail.host=smtp.163.com
mail.username=chenyanqing5945
mail.password=123456
mail.from=chenyanqing5945@163.com#发件人
mail.to=164792930@qq.com#收件人(多个用,隔开)
mail.subject=testEmail#主题
文件夹里有提供zip包
偶遇晨光原创
2016-05-20
本文内容总结:
原文链接:https://www.cnblogs.com/chenyq/p/5512134.html