首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

Java Mail 发送多人、抄送多人,附件上传 邮件发送效能

2013-07-09 
Java Mail 发送多人、抄送多人,附件上传 邮件发送功能return p}?public String getMailServerHost() {retu

Java Mail 发送多人、抄送多人,附件上传 邮件发送功能

return p;

}

?

public String getMailServerHost() {

return mailServerHost;

}

?

public void setMailServerHost(String mailServerHost) {

this.mailServerHost = mailServerHost;

}

?

public String getMailServerPort() {

return mailServerPort;

}

?

public void setMailServerPort(String mailServerPort) {

this.mailServerPort = mailServerPort;

}

?

public boolean isValidate() {

return validate;

}

?

public void setValidate(boolean validate) {

this.validate = validate;

}

?

public List getAttachFileNames() {

return attachFileNames;

}

?

public void setAttachFileNames(List fileNames) {

this.attachFileNames = fileNames;

}

?

public void addAttachFileNames(String fileNames) {

if (attachFileNames == null) {

this.attachFileNames = new ArrayList();

}

this.attachFileNames.add(fileNames);

}

?

public Map getAttachFile() {

return attachFile;

}

?

public void setAttachFile(Map attachFile) {

if (attachFile == null) {

this.attachFile = new HashMap();

}

this.attachFile = attachFile;

}

?

public String getFromAddress() {

String fromAdd = "";

if (fromAddress != null && fromAddress != "") {

fromAdd = fromAddress;

} else {

fromAdd = userName.split("@")[0]

+ "@"

+ mailServerHost.substring(mailServerHost.indexOf(".") + 1,

mailServerHost.length());

?

}

return fromAdd;

}

?

public void setFromAddress(String fromAddress) {

this.fromAddress = fromAddress;

}

?

public String getPassword() {

return password;

}

?

public void setPassword(String password) {

this.password = password;

}

?

public List getToAddress() {

return toAddress;

}

?

public void addToAddress(String toAddress) {

if (toAddress == null) {

this.toAddress = new ArrayList();

}

this.toAddress.add(toAddress);

}

?

public String getUserName() {

return userName;

}

?

public void setUserName(String userName) {

this.userName = userName;

}

?

public String getSubject() {

return subject;

}

?

public void setSubject(String subject) {

this.subject = subject;

}

?

public String getContent() {

return content;

}

?

public void setContent(String textContent) {

this.content = textContent;

}

?

public List getCcAddress() {

return ccAddress;

}

?

public void addCcAddress(String ccAddress) {

if (ccAddress == null) {

this.ccAddress = new ArrayList();

}

this.ccAddress.add(ccAddress);

}

?

public void setToAddress(List toAddress) {

this.toAddress = toAddress;

}

?

public void setCcAddress(List ccAddress) {

this.ccAddress = ccAddress;

}

}

?

package com.tobacco.ermsuite.interfaces.mail;

?

import java.io.UnsupportedEncodingException;

import java.util.Date;

import java.util.HashMap;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

import java.util.Properties;

?

import javax.activation.DataHandler;

import javax.mail.Address;

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.AddressException;

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;

import javax.mail.util.ByteArrayDataSource;

?

public class MailUtil {

/**

* 以HTML格式发送邮件

*?

* @param mailInfo

* ? ? ? ? ? ?待发送的邮件信息

*/

public synchronized static Map sendHtmlMail(MailProperties mailPro) {

Map resultMap = new HashMap();

resultMap.put("state", "success");

String message = "邮件发送成功!";

// 判断是否需要身份认证

MailAuthenticator authenticator = null;

Properties pro = mailPro.getProperties();

// 如果需要身份认证,则创建一个密码验证器

if (mailPro.isValidate()) {

authenticator = new MailAuthenticator(mailPro.getUserName(),

mailPro.getPassword());

}

// 根据邮件会话属性和密码验证器构造一个发送邮件的session

Session sendMailSession = Session

.getDefaultInstance(pro, authenticator);

try {

// 根据session创建一个邮件消息

MimeMessage mailMessage = new MimeMessage(sendMailSession);

// 创建邮件发送者地址

Address from = new InternetAddress(mailPro.getFromAddress());

// 设置邮件消息的发送者

mailMessage.setFrom(from);

// 创建邮件的接收者地址,并设置到邮件消息中

List to = mailPro.getToAddress();

List cc = mailPro.getCcAddress();

mailMessage.setRecipients(Message.RecipientType.TO,

listToAddressArray(to));

if (cc != null) {

mailMessage.setRecipients(Message.RecipientType.CC,

listToAddressArray(cc));

}

?

// 设置邮件消息的主题

mailMessage.setSubject(mailPro.getSubject());

// 设置邮件消息发送的时间

mailMessage.setSentDate(new Date());

// MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象

Multipart mainPart = new MimeMultipart();

// 创建一个包含HTML内容的MimeBodyPart

BodyPart html = new MimeBodyPart();

// 设置HTML内容

html.setContent(mailPro.getContent(), "text/html; charset=utf-8");

mainPart.addBodyPart(html);

?

// 附件上传

Map attachFile = mailPro.getAttachFile();

if (attachFile != null) {

Iterator it = attachFile.entrySet().iterator();

while (it.hasNext()) {

MimeBodyPart mbp = new MimeBodyPart();

Map.Entry entry = (Map.Entry) it.next();

mbp.setDataHandler(new DataHandler(new ByteArrayDataSource(

(byte[]) entry.getValue(),

"application/octet-stream")));

try {

mbp.setFileName(MimeUtility.encodeText(String

.valueOf(entry.getKey())));

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

message = "邮件发送失败!错误原因:附件名称解析出错\n";

resultMap.put("state", "failed");

e.printStackTrace();

}

mainPart.addBodyPart(mbp);

}

// for(int i=0;i<attachFile.size();i++){

// MimeBodyPart mbp=new MimeBodyPart();

// FileDataSource source = new

// FileDataSource("E:\\FTP\\你好.java");

// mbp.setDataHandler(new DataHandler(source));

// mbp.setDataHandler(new DataHandler(new

// ByteArrayDataSource((byte[])attachFile.get(i),"application/octet-stream")));

// try {

// mbp.setFileName(MimeUtility.encodeText("211111"));

// } catch (UnsupportedEncodingException e) {

// // TODO Auto-generated catch block

// message="邮件发送失败!错误原因:附件名称解析出错\n";

// resultMap.put("state", "failed");

// e.printStackTrace();

// }

// mainPart.addBodyPart(mbp);

// }

}

?

// 将MiniMultipart对象设置为邮件内容

mailMessage.setContent(mainPart);

// 发送邮件

Transport.send(mailMessage);

?

} catch (MessagingException ex) {

message = "邮件发送失败!错误原因:\n" + ex.getMessage();

resultMap.put("state", "failed");

ex.printStackTrace();

}

resultMap.put("message", message);

return resultMap;

}

?

private static Address[] listToAddressArray(List list) {

Address[] array = new Address[list.size()];

for (int i = 0; i < list.size(); i++) {

String str = String.valueOf(list.get(i));

Address address = null;

try {

address = new InternetAddress(str);

} catch (AddressException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

array[i] = address;

}

return array;

?

}

}

?

?

package com.tobacco.ermsuite.interfaces.util;

?

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

?

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

?

import com.tobacco.ermsuite.interfaces.mail.MailFactory;

?

public class TestWebService extends Thread {

?

public static void main(String[] args) {

?

?

List toAddress = new ArrayList();

List ccAddress = new ArrayList();

Map map = new HashMap();

map.put("你好.docx", readToByte("E:\\项目资料\\浙江项目\\SVN\\3.设计阶段\\3.1概要设计\\01浙江烟草商业物流管控信息系统概要设计报告(省局报表).docx"));

toAddress.add("wengzil@163.com");

ccAddress.add("wengzil@163.com");

String subject = "测试上传流附件";

String content = "<B>你好吗!清单</B>";

?

Map resmap = MailFactory.sendMail(subject, content, toAddress,map);

System.out.println(resmap.get("message"));

?

}

?

public static byte[] readToByte(String fileName) {

File file = new File(fileName);

Long filelength = file.length();

byte[] filecontent = new byte[filelength.intValue()];

try {

FileInputStream in = new FileInputStream(file);

in.read(filecontent);

in.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

return filecontent;

?

}

?

}

?

?

热点排行