Jmail发送Excel附件

//很久没有上javaeye,最近写了一个报表统计的发邮件的程序,感觉有一点实用的给大家共享一下吧,这里是一excel附件的形式发送邮件到qq邮箱
package com;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
public class MailService {

Session mailSession = null;

public  Session getMailSession() {
if (mailSession == null) {
Properties props = new Properties();  
props.put("mail.smtp.auth", "true");   
mailSession = Session.getInstance(props, null);
}
return mailSession;
}

public void sendAttachBySys(Map<String,List<String>> map,String fromEmail,String toEmail){ 
String subject = "测试excel邮件";
try {
getMailSession().setDebug( true );
Message msg = new MimeMessage( getMailSession() );
msg.setFrom( new InternetAddress( fromEmail ) );
msg.setRecipients( Message.RecipientType.TO, InternetAddress.parse( toEmail ) );
msg.setSubject( subject );
msg.setSentDate( new java.util.Date() );

//添加附件
Multipart mm = new MimeMultipart();
BodyPart mdp = new MimeBodyPart();  
StringBuffer sb = new StringBuffer();
sb.append( "第一列\t第二列\t第三列\n" );
if(map != null && !map.isEmpty()){
for(String key : map.keySet()){
List<String> list = map.get( key );
for(int i=0;i<list.size();i++){
String value = list.get( i );
if(i == 0){
sb.append( value );
}else{
sb.append( "\t"+value );
}

}
sb.append( "\n" );
}
}

DataHandler dh = new DataHandler(sb.toString(),"text/plain;charset=gb2312");
mdp.setFileName( "test.xls" );
mdp.setDataHandler( dh );
mm.addBodyPart( mdp );
msg.setContent(mm);
Transport transport = mailSession.getTransport("smtp");  
transport.connect("smtp.qq.com", "*****", "****");  
transport.sendMessage(msg, msg.getAllRecipients());  

}
catch( Exception ex ) {
ex.printStackTrace();
}
}

/**
* @param args
*/
public static void main( String[] args ) {
Map<String,List<String>> map = new HashMap<String, List<String>>();
List<String> list1=  new ArrayList<String>();
list1.add( "第2行第1列" );
list1.add( "第2行第2列" );
list1.add( "第2行第3列" );
List<String> list2=  new ArrayList<String>();
list2.add( "第3行第1列" );
list2.add( "第3行第2列" );
list2.add( "第3行第3列" );
map.put( "1", list1 );
map.put( "2", list2 );

MailService mailService = new MailService();
mailService.sendAttachBySys( map, "****@qq.com", "*****");
}

}


这个我测试成功了,但你首先要开启你的qq邮箱的SMTP服务,
进入qq邮箱->设置->帐户->POP3/IMAP/SMTP服务,里面的开启POP3/SMTP服务和开启IMAP/SMTP服务勾选上。


这个有点问题,不能发送内容,只有附件
分享到:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值