`
wengzil
  • 浏览: 34371 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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

阅读更多

package com.tobacco.ermsuite.interfaces.mail;

import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;

public class MailAuthenticator extends Authenticator {
String userName = null;
String password = null;

public MailAuthenticator() {
}

public MailAuthenticator(String username, String password) {
this.userName = username;
this.password = password;
}

protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(userName, password);
}

}

package com.tobacco.ermsuite.interfaces.mail;

 

import java.util.HashMap;

import java.util.List;

import java.util.Map;

 

public class MailFactory {

private static MailProperties defaultProp;

static {

defaultProp = new MailProperties();

defaultProp.setMailServerHost("smtp.163.com");

defaultProp.setMailServerPort("25");

defaultProp.setValidate(true);

defaultProp.setUserName("oops22");

defaultProp.setPassword("wen789789");// 您的邮箱密码

}

 

public static Map sendMail(String subject, String content, List toAddress,

List ccAddress,Map attachFile) {

Map resultMap = new HashMap();

if (toAddress != null && toAddress.size() > 0) {

defaultProp.setToAddress(toAddress);

defaultProp.setCcAddress(ccAddress);

defaultProp.setAttachFile(attachFile);

defaultProp.setSubject(subject);

defaultProp.setContent(content);

resultMap = MailUtil.sendHtmlMail(defaultProp);

} else {

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

resultMap.put("message", "邮件发送失败!错误原因:收件人为空");

}

 

return resultMap;

}

 

public static Map sendMail(String subject, String content, List toAddress,Map attachFile) {

Map resultMap = sendMail(subject, content, toAddress, null,attachFile);

return resultMap;

}

 

}

 

package com.tobacco.ermsuite.interfaces.mail;

 

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import java.util.Properties;

 

public class MailProperties {

// 发送邮件的服务器的IP和端口

private String mailServerHost;

private String mailServerPort = "25";

// 邮件发送者的地址

private String fromAddress;

// 邮件接收者的地址

private List toAddress;

// 抄送的地址

private List ccAddress;

// 登陆邮件发送服务器的用户名和密码

private String userName;

private String password;

// 是否需要身份验证

private boolean validate = false;

// 邮件主题

private String subject = "";

// 邮件的文本内容

private String content = "";

// 邮件附件

private Map attachFile;

// 邮件附件的文件名

private List attachFileNames;

 

/**

* 获得邮件会话属性

*/

public Properties getProperties() {

Properties p = new Properties();

p.put("mail.smtp.host", this.mailServerHost);

p.put("mail.smtp.port", this.mailServerPort);

p.put("mail.smtp.auth", validate ? "true" : "false");

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;

 

}

 

}

 

 

分享到:
评论

相关推荐

    java 发送多人邮件+多附件工具类

    总之,这个"发送多人邮件+多附件工具类"利用JavaMail API实现了发送带有多个附件的邮件功能,并支持同时向多个收件人发送。开发者可以根据自己的需求,通过配置SMTP服务器信息和邮件内容,轻松实现邮件的发送。在...

    email附件发送、多人发送、抄送

    总的来说,理解和掌握电子邮件的附件发送、多人发送及抄送功能对于Java开发者来说非常重要,尤其是在构建企业级应用或系统集成时。熟悉JavaMail API并能灵活运用,可以有效提升开发效率,实现高效、稳定的邮件服务。

    java 发送附件mail

    在Java编程中,发送带有附件的邮件是一项常见的任务,尤其在企业级应用或者自动化脚本中。这个场景通常涉及到JavaMail API的使用,一个强大的库,可以用来处理SMTP(简单邮件传输协议)邮件服务。接下来,我们将深入...

    JavaMail实现邮件发送功能,可发送、抄送、密送多人,支持多附件的发送

    本篇将详细介绍如何利用 JavaMail 实现邮件发送,包括发送、抄送、密送多人以及添加多附件。 首先,你需要在项目中引入 JavaMail 的依赖。如果是 Maven 项目,可以在 `pom.xml` 文件中添加如下依赖: ```xml ...

    邮箱outlook宏支持多人发送邮件增加抄送人功能

    邮箱outlook宏支持多人发送邮件增加抄送人功能,邮件中可发送图片文件等

    JAVA_Mail_邮件_发送_接收_抄送_密送_附件

    JAVA_Mail_邮件_发送_接收_抄送_密送_附件 该资源是一个Java项目,可用Eclipse导入即可运行。 共4个类: 1:ReceiveMail.java -接收普通邮件 2:ReciveMailWithAttachMent.java --接收含有附件的邮件 3:SendMail....

    Java发送邮件_单附件_多附件_加抄送多人 _2个示例zip

    这个"Java发送邮件_单附件_多附件_加抄送多人 _2个示例zip"的资源包含两个核心类:EmailManager.java和AnnexMailService.java,它们提供了一个强大的邮件发送功能,支持单个或多个附件,以及添加抄送人。下面将详细...

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

    封装好了方法, 传入发送邮件的邮箱和收邮件的邮箱即可测试使用

    java Mail 发送邮件及邮件附件

    Java Mail 发送邮件及邮件附件 Java Mail 是一个广泛使用的 Java 库,用于发送电子邮件。以下是 Java Mail 发送邮件及邮件附件的知识点。 Java Mail 简介 Java Mail 是一个 Java 库,提供了发送电子邮件的功能。...

    javamail自动发送邮件【多人多抄送多附件正文含表单正文嵌入图片】

    这是我项目中自用的javamail,可通过定时任务自动发送邮件,可以发送多人,抄送多人(但没有测试过发送人的数量上限),可以带附件,邮件正文有一个表单,表单下面还嵌入了一张饼图的png图片,满足了一般的发送邮件...

    java mail 支持text、html正文,多附件,发送、抄送、密送均多人

    在这个主题中,我们将深入探讨如何使用Java Mail API来发送包含text、HTML正文以及多个附件的邮件,并且实现发送、抄送和密送给多个收件人。 首先,我们需要导入Java Mail所需的库。主要的依赖包括`javax.mail`和`...

    java 发邮件 多收件人 多抄送人 多附件

    java 发邮件工具类 多收件人 多抄送人 多附件 内有三个重载方法 使用方便

    java发送邮件源代码带附件可抄送

    本文将详细讲解如何使用Java发送带有附件并可以抄送多人的电子邮件。 首先,JavaMail API是Java中用于处理邮件的核心库,它提供了一套完整的API来实现SMTP(简单邮件传输协议)和POP3(邮局协议)等功能。要使用...

    Java实现发送邮件内容+附件

    要实现“Java实现发送邮件内容+附件”,我们需要理解SMTP(Simple Mail Transfer Protocol)协议,并使用JavaMail API来创建和发送电子邮件。以下是一份详细的步骤和知识点解释: 1. **JavaMail API**:JavaMail ...

    JavaMail(2)——给多人发送、抄送.docx

    "JavaMail多人发送电子邮件" JavaMail是一种常用的Java邮件处理库,通过使用JavaMail,可以轻松地发送电子邮件。在实际应用中,经常需要发送电子邮件给多个收件人,本文将介绍如何使用JavaMail实现给多人发送电子...

    java实现发送邮件功能源码+jar

    Java 实现邮件发送功能是许多开发者在开发过程中需要用到的基础技术之一。邮件发送功能不仅可以用于邮箱验证,例如在用户注册时确认邮箱的有效性,还可以用于发送系统通知、定期报告或者客户服务等场景。本教程将...

    java mail 发送邮件代码与架包

    在Java Mail中,你可以设置各种参数,如发件人、收件人、主题、邮件内容等,还可以添加附件、设置抄送和密送等。 在标题和描述中提到的"java mail 发送邮件代码",通常涉及以下几个关键知识点: 1. **JavaMail API...

    java发送邮件功能

    Java发送邮件功能是Java开发中常见的一项任务,它允许开发者通过编程的方式实现电子邮件的发送,包括正文内容、附件以及抄送等高级功能。在Java中,我们主要利用JavaMail API来实现这一目标。 JavaMail API是一个...

    Java调用SMTP命令发邮件,实现抄送,附件--无需邮件搭建邮件服务器直接发送

    本教程将详细讲解如何使用Java通过SMTP(Simple Mail Transfer Protocol)协议来发送邮件,包括抄送和添加附件,而无需搭建自己的邮件服务器。 首先,我们需要引入JavaMail API,这是一个开源库,提供了在Java中...

    java mail 邮件发送

    java mail 邮件发送,可发送附件;多个附件以,号分开;可抄送、密送等多个抄送、密送以,号分开。详细发送DEMO参考SendMailTest.java类: SendMailInfo mailInfo = new SendMailInfo("mail.china1168.com", true, ...

Global site tag (gtag.js) - Google Analytics