`
shift8
  • 浏览: 150413 次
  • 性别: 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的群发邮件

    在Java编程环境中,实现邮件群发是一项常见的任务,特别是在企业级应用中,如发送通知、报告或者营销信息。本文将详细讲解如何利用Java技术进行邮件群发,同时也会涉及.NET框架的一些基本概念,以及数据库在其中的...

    java mail 邮件群发源码

    对于群发邮件,需要调用`InternetAddress`的`Address[]`类型的`setRecipients()`方法,传入收件人列表。 4. **发送邮件**:创建好`MimeMessage`后,使用`Transport`类的`send()`方法发送邮件。`Transport`也是从`...

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

    本教程将深入探讨如何使用Java Mail进行邮件群发,并讲解如何构建一个简单的EDM(Electronic Direct Marketing,电子直接营销)系统。 首先,你需要了解Java Mail的核心组件。`javax.mail`包提供了各种类和接口,...

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

    6. **群发邮件**:群发邮件只需要在`setRecipients`方法中传入多个收件人地址即可。对于多封不同的邮件,你需要为每个收件人创建并设置不同的`Message`对象。 在提供的`testMail`文件中,可能包含了测试邮件发送...

    java邮件群发代码

    【Java邮件群发代码详解】 ...`Mailer`类是一个基本的封装,通过它可以方便地构建和发送电子邮件,尤其适合群发邮件的场景。在实际开发中,可以根据需求进行扩展,例如添加附件、支持HTML格式的邮件正文等。

    JAVA实现邮件群发

    在Java编程环境中,实现邮件群发是一项常见的任务,特别是在企业级应用中,如发送通知、订阅更新或客户服务通信。这个“JAVA实现邮件群发”的示例程序提供了精炼且实用的解决方案,使得开发者能够轻松地集成邮件发送...

    java实现邮件群发

    5. **群发邮件**:在实际应用中,群发邮件可能涉及到大量收件人。为了避免将所有收件人显示在“抄送”或“密送”字段,可以创建多个 Message 对象,每个对象对应一组收件人,然后分别发送。也可以使用 Bcc(Blind ...

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

    JavaMail 是一个强大的开源库,用于在 Java 应用程序中处理电子邮件的发送和接收。它提供了丰富的 API,使得开发者可以方便地实现邮件的发送、接收、管理等操作。在这个主题中,我们将深入探讨如何使用 JavaMail ...

    java 邮件群发

    在群发邮件时,只需循环遍历收件人列表,为每个收件人创建并发送一个Message对象。注意,如果邮件内容包含HTML,可以使用MimeBodyPart和Multipart类来构建复杂的邮件结构。 ```java Multipart multipart = new ...

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

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

    基于java spring邮件群发的demo

    在群发邮件时,只需要遍历接收者列表,调用`JavaMailSender`的`send()`方法即可。 此外,项目中还提到了`jdbc.properties`文件,这表明系统可能使用了数据库来存储邮件接收者的信息或其他与邮件相关的数据。MySQL是...

    java mail 发送邮件

    在Java应用程序中,我们通常使用JavaMail API来实现邮件的自动化操作,比如发送带有附件的邮件、群发邮件等。下面将详细介绍如何使用Java Mail进行邮件发送,并结合提供的文件名称,提供相关的代码实例。 首先,要...

    Java mail发送邮件

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

    javamail实现群发邮件

    在本文中,我们将深入探讨如何使用 JavaMail 实现群发邮件的功能。 首先,要使用 JavaMail 发送邮件,我们需要添加其依赖到项目中。如果你使用的是 Maven,可以在 `pom.xml` 文件中添加以下依赖: ```xml ...

    java发送邮件的案例 包括附件 群发

    通过上述步骤,你就可以在Java程序中实现发送带有附件的群发邮件功能了。不过,实际开发时还应注意错误处理和异常捕获,确保邮件发送过程的健壮性。同时,为了提高用户体验,可以考虑使用异步方式发送邮件,避免阻塞...

    java读取数据库群发邮件.zip

    本项目“java读取数据库群发邮件”是利用Java技术来实现从Access数据库中获取数据,并根据这些数据进行邮件群发的功能。Access是一款由Microsoft开发的关系型数据库管理系统,适合小型企业和个人用户存储和管理数据...

    javaemail邮件群发

    JavaMail邮件群发是Java编程中用于发送电子邮件的API,它允许开发者通过编程方式实现邮件的发送、接收和管理。这个技术广泛应用于自动化通知、营销推广、客户服务等场景。JavaMail API提供了丰富的功能,包括SMTP...

    Java编程实现邮件发送(含身份验证)

    在IT行业中,Java编程语言因其跨平台特性及丰富的库支持,常常被用于各种应用场景,包括网络通信和邮件处理。本教程将深入讲解如何利用Java实现邮件的发送,并包含身份验证的过程,这对于自动化任务、通知系统或者...

    java 邮件 群发 源代码

    Java邮件群发是一种常见的编程需求,特别是在自动化通知、营销活动或者系统消息传递中。下面将详细解释这个主题,包括核心概念、技术要点以及如何在Java中实现邮件群发功能。 一、JavaMail API JavaMail API是Java...

    java发送qq邮件 支持群发 附件等等

    5. **群发邮件**: 要实现群发功能,可以在调用send()方法时传入多个RecipientType(TO, CC, BCC)的InternetAddress对象,分别代表收件人、抄送人和密送人。注意,为了避免被邮件服务商标记为垃圾邮件,应合理控制...

Global site tag (gtag.js) - Google Analytics