`
shift8
  • 浏览: 146603 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

JAVA MAIL 群发邮件

阅读更多
package com.hp.poc.common;

import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Properties;

import javax.mail.Address;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class EmailsSend  {
    //BCC一次100个用户
    final int BCC_SIZE = 100;
    //每隔10秒发送一次
    final int PEROID = 100000;
    final Logger Log = LoggerFactory.getLogger(EmailsSend.class);
    ArrayList<String> partsList=new ArrayList<String>();
    String subject="",body="";
    
	public EmailsSend() {
		super();
	}
	
	public EmailsSend(ArrayList<String> partsList, String subject, String body) {
		super();
		this.partsList = partsList;
		this.subject = subject;
		this.body = body;
	}
	
	public  ArrayList<String> setps(String subject,String body,ArrayList<String> to) throws Exception{
		ArrayList<String> smallArray=null;
		ArrayList<String> errArray=new ArrayList<String>();
		double c=(double)to.size()/(double)BCC_SIZE;
		int k=((Double)Math.ceil(c)).intValue();
		int i=0;
		for(int j=1;j<=k;j++){
			smallArray=new ArrayList<String>();
			for(;i<j*BCC_SIZE&&i<to.size();i++){
				smallArray.add(to.get(i));
			}
			boolean emailState=this.setp(subject, body, smallArray);
			if(emailState){
				Thread.sleep(PEROID);
			}else{
				Thread.sleep(3*PEROID);
				emailState=this.setp(subject, body, smallArray);
				if(!emailState){
					errArray.addAll(smallArray);
				}
			}
		}
		return errArray;
	}
	private  boolean setp(String subject,String body,ArrayList<String> to) throws Exception{
		HashMap<String, String> map=sendEmailByCustomerMailServer(subject,body,to,null);
		if(map.get("state").toString().equals("success")){
			return true;
		}
		return false;
	}
	private  HashMap<String, String> sendEmailByCustomerMailServer(String subject,
			String body, ArrayList<String> to, ArrayList<String> cc) {
		HashMap<String, String> map = new HashMap<String, String>();
		String message = "邮件发送成功!";
		map.put("state", "success");
		map.put("message", message);
		try {
			Properties props = new Properties();
			props.put("mail.smtp.host",
					ChannelConfig.getValue("mail.smtp.host"));
			String port = ChannelConfig.getValue("mail.smtp.port");
			String auth = ChannelConfig.getValue("mail.smtp.auth");
			String from=ChannelConfig.getValue("mail.smtp.username");
			if (auth != null && !"".equals(auth.trim()) && "true".equals(auth)) {
				props.put("mail.smtp.auth", auth);
				if (port != null && !"".equals(port.trim())) {
					props.put("mail.smtp.port", port);
				}
			} else {
				props.put("mail.smtp.auth", "false");
				props.put("mail.smtp.timeout", "0");
			}

			// Getting the Mail Session Object
			Session mailConnection = Session.getDefaultInstance(props);
			Transport transport = mailConnection.getTransport("smtp");
			if (auth != null && !"".equals(auth.trim()) && "true".equals(auth)) {
				transport.connect(ChannelConfig.getValue("mail.smtp.host"),
						ChannelConfig.getValue("mail.smtp.username"),
						ChannelConfig.getValue("mail.smtp.password"));
			} else {
				transport.connect();
			}

			Message msg = new MimeMessage(mailConnection);
			msg = buildMessage(msg, subject, body, from, to, cc);
			transport.sendMessage(msg, msg.getAllRecipients());
			org.jfree.util.Log.info(message+" "+to.toString());
			return map;
		} catch (Exception e) {
			message="邮件发送失败!错误原因:\n"+e.getMessage();  
            map.put("state", "failed");  
            map.put("message", message);  
            e.printStackTrace();
            org.jfree.util.Log.error(message+" "+to.toString());
		}
		return map;
	}

	private  Message buildMessage(Message msg, String subject,
			String body, String from, ArrayList<String> to, ArrayList<String> cc) throws UnsupportedEncodingException, MessagingException{
		Address[] toAdd = buildEmaiAddress(to);
		Address fromAdd = new InternetAddress(from);
		msg.setFrom(fromAdd);
		msg.setRecipients(Message.RecipientType.BCC, toAdd);
		if (cc != null && cc.size() > 0) {
			Address[] ccAdd = buildEmaiAddress(cc);
			msg.setRecipients(Message.RecipientType.CC, ccAdd);
		}

		msg.setSubject(MimeUtility.encodeText(subject,
				MimeUtility.mimeCharset("UTF-8"), null));
		msg.setContent(body, "text/html;charset=utf-8");
		return msg;
	}
    private  Address[] buildEmaiAddress(ArrayList<String> addressArray) throws AddressException{
        if(addressArray == null || addressArray.size() == 0) {
            return null;
        }
        Address[] addressList = new Address[addressArray.size()];
        for (int i = 0; i < addressArray.size(); i++){
            addressList[i]  = new InternetAddress(addressArray.get(i));
        }
        return addressList;
    }
	
}

 

 

@GET
	@Path("setp")
	@Produces(MediaType.TEXT_PLAIN)
    public String sendEmailsToAllPartner() throws Exception{
		String sql="SELECT DISTINCT authorities.`UserName` FROM authorities,users WHERE " +
				"authorities.`UserName`=users.`UserName` AND authorities.`authority`='ROLE_PARTNER' " +
				"AND users.`CompanyID` IS NOT NULL AND LENGTH(authorities.`UserName`)>3 ORDER BY authorities.`UserName`;";
		ArrayList<String> partsList=(ArrayList<String>) dao.findByNativeSql(sql.toString());
		
		File currPathFile=new File(Thread.currentThread().getContextClassLoader().getResource("").toURI().getPath());
		File attFile=new File(currPathFile.getParentFile().getParentFile().getPath() + File.separator + "template"+File.separator+"html_tw.html");
		String body=EmailHelper.loadPage(attFile);
		String subject="管理平台 即日起正式啟用";
		partsList=new ArrayList<String>();
//		for(int i=0;i<1133;i++){
//			partsList.add("wen@pp.com");
//		}
		EmailsSend es=new EmailsSend();
		String errAddr=es.setps(subject, body, partsList).toString();
		Log.info(errAddr);
		return errAddr;
	}

 

分享到:
评论

相关推荐

    Java Mail群发实例、邮件群发相关、打造自己的EDM系统

    Java实现邮件群发系统、简单配置即开使用。外贸企业打造自己的邮件群发平台。 本源码仅限于学习研究使用,请勿用于其它用途,谢谢。

    java mail 邮件(群发)发送的源码

    java mail 邮件(群发)发送的源码 里面带有附件的发送

    用java mail发邮件源码,支持多种邮局,支持单发和群发

    用java mail发邮件源码,支持多种邮局,支持单发和群发。

    Java mail发送邮件

    利用Java mail发送邮件,用到的一些类,一些方法,写的很简陋

    java mail 邮件群发源码

    javamail邮件群发源码,供学习和参考,是原工程

    javamail邮件群发、单发_邮件发送

    javamail发送邮件;支持群发、单次发送;文本发送,html发送

    基于java spring邮件群发的demo

    使用时需要将mail.properties和jdbc.properties的用户名密码修改为使用者自己的参数

    javamail实现群发邮件

    运行 src\mail\MailTest.java类。 其他包是集成的官方javamail接口类型 有兴趣请参考!

    java mail邮件和创建excel操作Demo

    2个小demo,一个是java实现的mail邮件发送,支持群发,多附件发送。另外一个是java生成excel,如果不能运行,你自己新建工程,把我的代码复制粘贴就行了。

    java-Mail 发邮件实例

    该实例里包含了单个邮件发送、群发邮件、单个邮件加附件、群发邮件加附件、接收邮件等功能,希望对需要的朋友有所帮忙,我想这不会让看过的人失望的。

    MeyboMail Web(Java) 邮件 群发源代码

    1、安装JDK1.4.2以上版本(注意配置java_home路径) 2、安装tomcat 3、把本下载的全部程序文件拷贝到tomcat的webapps\ROOT目录下。 4、启动tomcat,在浏览器中输入http://localhost:8080/即可运行程序。 二、安装...

    java实现邮件发送功能

    java实现邮件发送功能,支持邮件的群发和单发功能,包括可以携带附件的发送形式

    使用java发送(邮件,短信)帮助类

    使用java发送短信的方法有两个(一个是使用阿里的短信服务,一个是使用uoleem短信服务),使用java发送邮件的方法只有一个,这个方法支持群发和单发

    邮件发送 poi 二维码 条形码等java常用的工具类

    MailUtil:邮件工具类,包括发送纯文本邮件,带(1个/多个)附件的邮件, 群发邮件 NumberUtil:数字操作工具 包括精准数字运算,数据格式化 PageUtil:分页工具类, POIUtil:poi工具类,excel导出 QrCodeUtil...

    关于JAVA的jmail组件

    一方面,电子邮件的使用越来越频繁,...该软件对指定邮件服务器的邮箱进行监控,可以实现邮件到达通知、直接用邮件发送短信息、发送邮件的同时发送短消息、短信群发等功能,将信息的传递从桌面上延伸到移动通讯设备上。

    一行代码实现的java发邮件

    3,支持群发; 4,支持抄送 5,支持任何邮箱服务器(比如QQ,163),如果是自己的服务器,需要端口畅通 6,模板格式为html,可以让邮件内容丰富多彩,比如插入链接,插入图片; 7,注释齐全; 8,分分钟就能集成到自己...

    邮件发送封装

    java邮件发送封装,支持群发及附件

    Mail2MO-OE2MO(OE短信插件)

    Mail2MO(Mail to Mobile)是针对各类邮件客户端(如Outlook等)开发的插件类短信产品。用户下载安装免费插件,就可在Outlook上同时收发邮件和短信,同时利用Outlook的通讯簿协同管理联系人的邮件地址和手机号码,...

    java 发送 email

    其中包含一个java类SendEmail.java和两个jar包:mail.jar、activation.jar。 类文件通过测试,可以发送邮件、带附件的邮件,群发邮件

    期末大作业-jsp之课堂帮

    包含源代码、文档、数据库、截图、使用说明;...使用 Java mail 实现群发邮件功能; 3)知识:页面大量运用HTML、DIV+CSS、JavaScript、jQuery、jsp、servlet、访问MySQL数据库知识点,是学习Java EE的基础代码。

Global site tag (gtag.js) - Google Analytics