`

javaEmail邮件发送多人 附件

阅读更多
工具类
MessageTools.java

 
package com.cm.util;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.AuthenticationFailedException;
import javax.mail.Authenticator;
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;
import javax.mail.internet.MimeUtility;

import com.cm.dto.EmailDto;


public class MessageTools
{
	// 邮件服务器及登录用户、密码,发送邮箱

	private static String userName;// 用户名

	private static String passWord;// 密码
	private static String smtpServer;// 邮件服务器

	private static String from;// 发件人

	private static String mail_socksProxyHost;// 本地代理host
	
	private static String mail_socksProxyPort;// 本地代理prot
	
	private static String mail_socksProxyUser;// 本地代理用户
	
	private static String mail_socksProxyPassword;// 本地代理密码


	// 从配置文件中获取相应的账户信息

	static
	{
		try
		{
			Properties props = new Properties();
			props.load(MessageTools.class.getResourceAsStream("mail.property"));
			userName = props.getProperty("mail_username");// 设置发件人用户名
			passWord = props.getProperty("mail_password");// 设置发件人密码

			smtpServer = props.getProperty("mail.smtp.server");// 设置发件人邮件服务器
			from = props.getProperty("mail_from_addr");// 设置发件人邮箱

			mail_socksProxyHost = props.getProperty("mail_socksProxyHost");//代理地址
			mail_socksProxyPort = props.getProperty("mail_socksProxyPort");//代理端口号
			mail_socksProxyUser = props.getProperty("mail_socksProxyUser");//代理用户名
			mail_socksProxyPassword = props.getProperty("mail_socksProxyPassword");//代理密码

		} catch (IOException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * @发送邮件

	 * @return 成功-true;失败-false
	 * @throws CBFException
	 */
	public static boolean send(List<String> tolist,List<String> cclist,EmailDto dto)
	{
		try
		{
			
			Properties props = System.getProperties();
			props.setProperty("proxySet", "true");
			
			if(mail_socksProxyHost!=null && !mail_socksProxyHost.equals(""))
			{
				props.setProperty("socksProxyHost", mail_socksProxyHost);//代理地址
			}
				
			if(mail_socksProxyPort!=null && !mail_socksProxyPort.equals(""))
			{
				props.setProperty("socksProxyPort", mail_socksProxyPort);//代理端口号

			}
			
			if(mail_socksProxyUser!=null && !mail_socksProxyUser.equals(""))
			{
				 props.setProperty("socksProxyUser",mail_socksProxyUser);   
			}
			if(mail_socksProxyPassword!=null && ! mail_socksProxyPassword.equals(""))
			{
				 props.setProperty("socksProxyPassword",mail_socksProxyPassword);
			}
			props.setProperty("mail.smtp.host", smtpServer);// 设置邮件发送服务器
			props.put("mail.smtp.auth", "true");
			props.put("mail.debug", "false");

			// 使用验证
			Session session = Session.getDefaultInstance(props,
					new Authenticator()
					{
						protected javax.mail.PasswordAuthentication getPasswordAuthentication()
						{
							return new javax.mail.PasswordAuthentication(
									from, passWord);
						}
					});

			MimeMessage message = new MimeMessage(session);
			
			
			if(tolist.size()>0){
				for (int i = 0; i < tolist.size(); i++) {
					
					to = tolist.get(i);
				}
			}
			
			message.setFrom(new InternetAddress(from));// 设置发件人信息
			
			//是否有收件人
			if(tolist.size()>0){
			
				Address[]  addressTO = new InternetAddress[tolist.size()]; //收件人
				
				for (int i = 0; i < tolist.size(); i++) {
					addressTO[i] = new InternetAddress(tolist.get(i));
				}
				
					message.setRecipients(Message.RecipientType.TO,addressTO);//设置收件人信息
				
				if(cclist.size()>0){
					Address[]  addressCC = new InternetAddress[cclist.size()];//抄送人
					
					for (int j = 0; j < cclist.size(); j++) {
						addressCC[j] = new  InternetAddress(cclist.get(j));
					}
					message.setRecipients(Message.RecipientType.CC, addressCC);
				}
					
					message.setSubject(dto.getSubject());//设置邮件主题
					Multipart mm = new MimeMultipart(); // 新建一个MimeMultipart对象用来存放多个BodyPart对象
					BodyPart mdp = new MimeBodyPart(); // 新建一个存放信件内容的BodyPart对象
					mdp.setContent(dto.getBody(), "text/html;charset=gb2312"); // 给BodyPart对象设置内容和格式/编码方式
					mm.addBodyPart(mdp); // 将含有信件内容的BodyPart加入到MimeMultipart对象中
		
					BodyPart mbpf = new MimeBodyPart();
		
				    FileDataSource fds = new FileDataSource(dto.getFilename());//附件
		
				    mbpf.setDataHandler(new DataHandler(fds));
		
				    mbpf.setFileName(MimeUtility.encodeWord(fds.getName(), "GB2312",null));
		
				    mm.addBodyPart(mbpf);
					
					message.setContent(mm); // 把mm作为消息对象的内容
		
					message.setSentDate(new Date());//设置发送时间
		
					message.saveChanges();
					Transport.send(message);//发送邮件操作
	
				return true;
			}
			
		} catch (AuthenticationFailedException afx)
		{
			afx.printStackTrace();
		} catch (Exception ex)
		{
			ex.printStackTrace();
		}
		return false;
	}
	
	
	public static void main(String[] args)
	{
           List<String> tolist = new ArrayList<String>(); // 发件人集合
		tolist.add("XXX@163.com");
		tolist.add("XXX@163.com");
		List<String> cclist = new ArrayList<String>();// 抄送人集合
		cclist.add("XXX@126.com");
		cclist.add("XXX@126.com");
		EmailDto dto = new EmailDto();
		dto.setSubject("这是测试邮件");// 设置邮件标题
		dto.setBody("<h1>" + "<font color='RED'>" + "邮件测试"
				+ ".</font></h1>");// 设置邮件的格式
		dto.setFilename("C:\\exp\\test.xls"); // 附件
		MessageTools tools = new MessageTools();
		tools.send(tolist, cclist, dto);
	}
}




EmailDto.java
package com.cm.dto;

import java.io.Serializable;

import com.cm.util.PageInfo;

public class EmailDto extends PageInfo implements Serializable
{
	private String id;
	private String title;	 //邮件标题
	private String emailAddr;//邮件地址
	private String content;	 //邮件内容
	private String type;	 //邮件类型
	private String crtTm;	 //创建时间
	private String remark;	 //说明
	private String stateChar;//状态

	private String sendNum;	 //发送次数

	private String updTm;    //发送时间

	private String crtCde;	 //发件人

	private String from;	 //发件人

	private String to;		 //收件人

	private String subject;  //设置邮件主题
	private String body;	 //设置邮件信息内容
	private String server;   //发送邮件服务器
	private String socksProxyHost;//设置代理服务器地址
	private String socksProxyPort;//设置代理服务器端口号
	private String socksProxyUser;//设置代理服务器用户

	private String socksProxyPassword;//设置代理服务器密码

	private String passWord;//发送者账户密码

	private String userName;//发送者账户名称
	
	private String filename;//附件

	
	public String getPassWord()
	{
		return passWord;
	}
	public void setPassWord(String passWord)
	{
		this.passWord = passWord;
	}
	public String getUserName()
	{
		return userName;
	}
	public void setUserName(String userName)
	{
		this.userName = userName;
	}
	public String getSocksProxyHost()
	{
		return socksProxyHost;
	}
	public void setSocksProxyHost(String socksProxyHost)
	{
		this.socksProxyHost = socksProxyHost;
	}
	public String getSocksProxyPort()
	{
		return socksProxyPort;
	}
	public void setSocksProxyPort(String socksProxyPort)
	{
		this.socksProxyPort = socksProxyPort;
	}
	public String getSocksProxyUser()
	{
		return socksProxyUser;
	}
	public void setSocksProxyUser(String socksProxyUser)
	{
		this.socksProxyUser = socksProxyUser;
	}
	public String getSocksProxyPassword()
	{
		return socksProxyPassword;
	}
	public void setSocksProxyPassword(String socksProxyPassword)
	{
		this.socksProxyPassword = socksProxyPassword;
	}
	public String getBody()
	{
		return body;
	}
	public void setBody(String body)
	{
		this.body = body;
	}
	public String getSubject()
	{
		return subject;
	}
	public void setSubject(String subject)
	{
		this.subject = subject;
	}
	public String getFrom()
	{
		return from;
	}
	public void setFrom(String from)
	{
		this.from = from;
	}
	public String getTo()
	{
		return to;
	}
	public void setTo(String to)
	{
		this.to = to;
	}
	public String getTitle()
	{
		return title;
	}
	public void setTitle(String title)
	{
		this.title = title;
	}
	public String getEmailAddr()
	{
		return emailAddr;
	}
	public void setEmailAddr(String emailAddr)
	{
		this.emailAddr = emailAddr;
	}
	public String getContent()
	{
		return content;
	}
	public void setContent(String content)
	{
		this.content = content;
	}
	public String getType()
	{
		return type;
	}
	public void setType(String type)
	{
		this.type = type;
	}
	public String getCrtTm()
	{
		return crtTm;
	}
	public void setCrtTm(String crtTm)
	{
		this.crtTm = crtTm;
	}
	public String getRemark()
	{
		return remark;
	}
	public void setRemark(String remark)
	{
		this.remark = remark;
	}
	public String getStateChar()
	{
		return stateChar;
	}
	public void setStateChar(String stateChar)
	{
		this.stateChar = stateChar;
	}
	public String getSendNum()
	{
		return sendNum;
	}
	public void setSendNum(String sendNum)
	{
		this.sendNum = sendNum;
	}
	public String getUpdTm()
	{
		return updTm;
	}
	public void setUpdTm(String updTm)
	{
		this.updTm = updTm;
	}
	public String getCrtCde()
	{
		return crtCde;
	}
	public void setCrtCde(String crtCde)
	{
		this.crtCde = crtCde;
	}
	public void setServer(String server)
	{
		this.server = server;
	}
	public String getServer()
	{
		return server;
	}
	public void setId(String id)
	{
		this.id = id;
	}
	public String getId()
	{
		return id;
	}
	public String getFilename() {
		return filename;
	}
	public void setFilename(String filename) {
		this.filename = filename;
	}
	
}



property文件中配置系统邮箱信息 和 代理信息
mail.property 

mail.smtp.server = smtp.163.com
mail_from_addr = XXX@163.com
mail_username = XXX
mail_password = XXX

mail_socksProxyHost =
mail_socksProxyPort =
mail_socksProxyUser =
mail_socksProxyPassword =
 
分享到:
评论

相关推荐

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

    这个"发送多人邮件+多附件工具类"是为了解决这个问题而设计的,它可以帮助开发者便捷地向多个收件人发送带有多个附件的邮件。下面将详细讲解其中涉及的关键知识点。 1. JavaMail API: JavaMail API是Java中用于...

    Java发送邮件给多人

    为了实现邮件发送,我们需要引入`javax.mail`和`javax.mail.internet`这两个Java Mail API的包。此外,由于JavaMail API本身并不支持SMTP服务器的直接连接,通常我们会借助Apache的`commons-net`库来处理网络连接。 ...

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

    在电子邮件的使用中,"email附件发送、多人发送、抄送"是三个核心功能,尤其在企业通信中极为常见。本文将深入探讨这三个知识点,并结合Java编程语言来讲解如何实现这些功能。 首先,电子邮件附件发送是指在发送...

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

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

    如何用java实现邮件方式每天发送消息

    在Java编程环境中,使用Spring Boot框架来实现每天定时发送邮件...此外,如果使用Quartz作为定时任务库,需要额外配置Quartz的相关属性,但其核心思想与Spring Task类似,都是通过定义定时任务来实现周期性的邮件发送。

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

    总的来说,JavaMail API为Java开发者提供了强大的邮件处理功能,通过合理的代码组织和配置,我们可以轻松实现邮件发送,包括添加附件和抄送功能。在`mail2java`这个压缩包文件中,可能包含了示例代码或工具,帮助你...

    java 发送email 邮件

    在Java编程语言中,发送电子邮件是一项常见的任务,尤其在系统集成和自动化通知中。本教程将深入探讨如何使用Java发送带有附件、支持多接收者且...希望这个示例能够帮助你在实际项目中实现高效、可靠的邮件发送功能。

    java实现email发送

    在Java编程语言中,发送电子邮件是一项常见的任务,尤其在企业级应用中,用于发送通知、报表或者客户服务。本文将深入探讨如何使用Java实现电子邮件的发送功能,包括向多个收件人发送邮件。我们将主要涉及JavaMail ...

    javamail实现邮件发送(支持多接收人、多附件)

    本教程将详细讲解如何使用 JavaMail 实现邮件发送功能,包括支持多个接收人、抄送人以及添加多个附件。 首先,确保你已经添加了 JavaMail 的依赖库到你的项目中。如果是 Maven 项目,可以在 pom.xml 文件中添加以下...

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

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

    java 邮件发送,简单实现

    本文将详细介绍如何使用Java Mail API实现简单的邮件发送,包括设置收件人和抄送多人。 首先,你需要在项目中引入Java Mail的相关依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml ...

    Java 邮件发送

    Java邮件发送是一个常见的任务,尤其在企业级应用中,它被用来传递通知、报告或进行自动通信。在Java中,我们可以使用JavaMail API来实现这个功能。JavaMail API是一个开源库,提供了处理邮件的全面支持,包括创建、...

    his.rar_his

    描述中提到的是"发送邮件的简单代码",这通常指的是使用编程语言实现的电子邮件发送功能。这种功能可以允许用户通过程序自动化发送电子邮件,无论是批量发送给多人,还是根据特定条件选择性发送。在实际应用中,这...

    Android Intent 用法全面总结及实例代码

    - 给多人发送邮件,包括收件人、抄送人和密送人: ```java String[] tos = {"1@abc.com", "2@abc.com"}; String[] ccs = {"3@abc.com", "4@abc.com"}; String[] bccs = {"5@abc.com", "6@abc.com"}; intent....

Global site tag (gtag.js) - Google Analytics