`
chenshengzun
  • 浏览: 115611 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

JMail发送excel附件到邮箱

    博客分类:
  • Java
 
阅读更多
//很久没有上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服务勾选上。
分享到:
评论
2 楼 chenshengzun 2013-10-25  
msg.setContent(mm);
修改成内容就可以了
1 楼 chenqqabcd 2013-10-22  
我想问下,怎么发送邮件内容呢,不是附件里的内容

相关推荐

    Excel读取Jmail成绩单群发

    通过设置SMTP服务器配置,程序可以连接到邮件服务器,将成绩单以附件或正文的形式发送给每个学生的邮箱。 出错处理是任何可靠系统的关键部分。在这个程序中,可能遇到的错误包括:邮件格式错误、SMTP服务器连接问题...

    通过提取excel人员信息,再行随机选取后,通过电子邮件,给其发送选中通知

    这个过程涉及到两个主要的知识点:一是如何在Excel中操作和处理数据,二是如何利用邮件发送工具实现自动化的邮件发送。 首先,我们来详细探讨Excel的数据处理。在Excel中,我们可以方便地存储和管理大量结构化数据...

    excel 群发邮件例子

    本例子主要介绍如何利用Excel和JMail插件实现邮件的批量发送,这在企业内部沟通、营销活动或者日常工作中非常实用。下面我们将详细探讨这个过程。 首先,你需要一个包含收件人邮箱地址的数据源,这通常是一个Excel...

    Private Sub text1_keypress(keyascii As Integer) keyascii = 1 End Sub

    这个程序可能包含了一个用户界面,让用户能上传包含邮箱地址的Excel文件,然后通过设置邮件参数并调用Jmail.dll进行群发操作。Excel文件作为一个数据源,可以存储大量的接收者邮箱地址,极大地简化了批量发送邮件的...

    学生成绩单邮件群发源代码 ExceMail

    【学生成绩单邮件群发源代码 ExceMail】是一个基于Visual Basic(VB)开发的程序,用于批量发送电子邮件,将Excel文件中的学生成绩通过邮件发送到每个学生的个人邮箱地址。这个工具对于教师或者学校管理者来说非常...

Global site tag (gtag.js) - Google Analytics