`
wawa129
  • 浏览: 321132 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java实现邮件抄送,密送,多个附件发送

 
阅读更多
package com.asia.home.cn.utils;

import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
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;
import javax.mail.internet.MimeUtility;

/**
* 邮件多人发送,可设置发送,抄送,密送
* @author zhutongyu
*
*/
public class SendMail {

private static SendMail instance = null;

private SendMail() {

}

public static SendMail getInstance() {
if (instance == null) {
instance = new SendMail();
}
return instance;
}

public void send(String to[],String cs[],String ms[],String subject,String content,String formEmail,String fileList[]) {
try {
Properties p = new Properties(); // Properties p =
// System.getProperties();
p.put("mail.smtp.auth", "true");
p.put("mail.transport.protocol", "smtp");
p.put("mail.smtp.host", "smtp.asia-media.cn");
p.put("mail.smtp.port", "25");
// 建立会话
Session session = Session.getInstance(p);
Message msg = new MimeMessage(session); // 建立信息
            BodyPart messageBodyPart = new MimeBodyPart();
            Multipart multipart = new MimeMultipart();
msg.setFrom(new InternetAddress(formEmail)); // 发件人

String toList = null;
String toListcs = null;
String toListms = null;

//发送,
if(to!=null)
{
toList = getMailList(to);
InternetAddress[] iaToList = new InternetAddress().parse(toList);
msg.setRecipients(Message.RecipientType.TO, iaToList); // 收件人
}

//抄送
if(cs!=null)
{
    toListcs = getMailList(cs);
InternetAddress[] iaToListcs = new InternetAddress().parse(toListcs);
msg.setRecipients(Message.RecipientType.CC, iaToListcs); // 抄送人
}

//密送
if(ms!=null)
{
    toListms = getMailList(ms);
InternetAddress[] iaToListms = new InternetAddress().parse(toListms);
msg.setRecipients(Message.RecipientType.BCC, iaToListms); // 密送人
}
msg.setSentDate(new Date()); // 发送日期
msg.setSubject(subject); // 主题
msg.setText(content); // 内容
//显示以html格式的文本内容
messageBodyPart.setContent(content,"text/html;charset=gbk");
multipart.addBodyPart(messageBodyPart);

// 2.保存多个附件
  if(fileList!=null){
      addTach(fileList,multipart);
  }

msg.setContent(multipart);
// 邮件服务器进行验证
Transport tran = session.getTransport("smtp");
tran.connect("smtp.asia-media.cn", "postmaster@asia-media.cn", "asiamedia");
tran.sendMessage(msg, msg.getAllRecipients()); // 发送
System.out.println("邮件发送成功");

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


//添加多个附件
public void addTach(String fileList[],Multipart multipart) throws MessagingException, UnsupportedEncodingException{
    for (int index = 0;index <  fileList.length;index++)
        {
         MimeBodyPart mailArchieve = new MimeBodyPart();
         FileDataSource fds = new FileDataSource(fileList[index]);
         mailArchieve.setDataHandler(new DataHandler(fds));
         mailArchieve.setFileName(MimeUtility.encodeText(fds.getName(),"GBK","B"));
         multipart.addBodyPart(mailArchieve);
        }  
}

private String getMailList(String[] mailArray) {

StringBuffer toList = new StringBuffer();
int length = mailArray.length;
if (mailArray != null && length < 2) {
toList.append(mailArray[0]);
} else {
for (int i = 0; i < length; i++) {
toList.append(mailArray[i]);
if (i != (length - 1)) {
toList.append(",");
}

}
}
return toList.toString();

}

public static void main(String args[])
{
SendMail send = SendMail.getInstance();
String to[] = { "zhutongyu@asia-media.cn" };
String cs[] = null;
String ms[] = null;
String subject="测试一下";
String content="这是邮件内容,仅仅是测试,不需要回复";
String formEmail="zhutongyu@asia-media.cn";
  String[] arrArchievList = new String[4];
          arrArchievList[0] = "c:\\2012052914033429140297.rar";
          arrArchievList[1] = "c:\\topSearch.html";
          arrArchievList[2] = "c:\\topSearch2.html";
          arrArchievList[3] = "c:\\logo_white.png";
         // 2.保存多个附件
send.send(to,cs,ms,subject,content,formEmail,arrArchievList);
}

}
分享到:
评论
1 楼 15381049808 2016-11-10  
楼主写的很赞 我对中间的批量发送拿过来现在还好用 受益匪浅

相关推荐

Global site tag (gtag.js) - Google Analytics