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编写的邮件群发程序 精悍短小 实在方便 立即下载

相关推荐

java 邮件群发

NULL 博文链接:https://programming.iteye.com/blog/1874939

三分钟搞定 || java邮件发送(支持附件,多发)

使用Hutools工具快速发送文件

赵同学的博客 1267

javamail实现群发邮件

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

java实现邮件的群发及附件的发送

MultipartFile是springMVC封装的一种存储文件的方法,这里实现的是接口调用该方法可以直接将文件和正文等内容进行发送。以上便是大致的代码,测试是否运行的话,可以在本地进行调试。

учёба 1046

javaMail实现单发/群发邮件操作

自己收藏 经常用其发邮件 因为代码中是自己的邮箱和密码 所以已经改掉了 导入项目后自己更改个可用的邮箱名和密码就好

COMSOL模拟CO2驱替CH4:多物理场耦合建模与工程应用详解

在非常规天然气开发与碳封存工程中,多孔介质内的渗流、吸附与岩石变形相互耦合,使得CO2驱替CH4的产能预测和CO2封存评估无法仅靠经验公式完成。以达西定律描述裂隙流动、以扩展Langmuir方程刻画竞争吸附、用应力-吸附-渗透率关系关联煤岩变形,是多物理场耦合数值模拟的核心路径。COMSOL Multiphysics凭借内置渗流、固体力学与组分传递接口,能够将这些机制整合为可参数化扫描的仿真模型,为注气压力、井距、渗透率演化等方案设计提供量化依据。围绕CO2驱替CH4模拟的建模流程、参数取法与结果判读,可形

weixin_29574585的博客 160

047-Java 发送邮件

JavaMail 是一个功能强大的邮件发送工具,结合 SMTP 和 MIME,可以满足绝大多数邮件发送的需求。在实际项目中,建议对邮件的异常处理和安全性进行充分考虑,以确保服务的稳定性和可靠性。在掌握了基本的邮件发送功能之后,可以进一步探索更高级的应用场景,例如群发邮件、多附件、多线程发送邮件、嵌入图片等。在实际项目中,建议将邮件发送功能封装为工具类,并结合队列或异步任务处理邮件发送,以提高系统的并发能力和可靠性。以下是 Java 发送邮件的详细教程,包括基础用法、常见配置和高级场景。

小宝哥Code的专栏 6891

MIC卡的OFED驱动安装

 IB网络和OFED驱动安装 IB InfiniBand是一个统一的互联结构,可以处理存储I/O、网络I/O和进程间通信(IPC)。它可以将磁盘阵列、SANs、LANs、服务器和集群服务器进行互联,也可以连接外部网络(比如WAN、VPN、互联网)。设计InfiniBand的目的主要是用于企业数据中心,大型的或小型的。目标主要是实现高的可靠性、可用性、可扩展性和高的性能。Inf

beglorious的专栏 5106

java 群发邮件_java群发邮件

利用java代码发送邮件,结合网上搜来的资料,一米软件适当进行了改造,改为利用java代码群发邮件,下面就来教教大家java群发邮件怎么做。 注意事项:纯java开发的话,JDK1.6以外,需要导入这里自己打包的mail.jar.另外前三个类必须放同一包中。当然如果是javaEE,你完全不用担心了,直接建类复制,或者下载用都行)。第一个类 : 邮件发送类第二个类 : 发送邮件类第三个类 : 邮件认...

weixin_32722209的博客 888

【温室气体数据集】CAMS 发布的温室气体(GHG)数据集总结

【温室气体数据集】CAMS 发布的温室气体(GHG)数据集总结

WW、forever的博客 555

【WorkBuddy专栏40】从「帮你干活」到「帮你创造」——WorkBuddy设计创意功能深度拆解

【WorkBuddy专栏40】从「帮你干活」到「帮你创造」——WorkBuddy设计创意功能深度拆解

AI人人懂 1296

如何使用Java Mail发邮件(包括单发和群发),含演示代码下载

JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。我们可以基于JavaMail开发出类似于Microsoft Outlook的应用程序。使用JavaMail可以很方便的在Java客户端实现 发邮件的功能。

madifu的博客 5869

YOLOv11原创改进专栏|原创自研篇|DAA模块手把手添加教程

个人简介:大家好!我是 DAA 注意力机制,堪称深度学习中的“聚光灯”。我的任务是帮助模型聪明地识别关键特征,就像一位经验丰富的侦探,能够在繁杂的数据中找到重要线索。通过结合通道和空间的注意力,我能确保模型把重点放在最有价值的信息上,从而提升识别准确率。简单来说,我就是帮助你的模型变得更加专注、敏锐,让它在一堆数据中轻松找到“宝藏”,为检测精度加分!动态适应性特征提取DAA通过动态生成卷积核来适应输入特征的变化,从而实现针对不同数据的自适应特征提取。

mywhyyds的博客 379

java mail 群发限制_java 实现群发邮件

package sendemail;import java.io.UnsupportedEncodingException;import java.util.Properties;import javax.activation.DataHandler;import javax.activation.FileDataSource;import javax.mail.BodyPart;import j...

weixin_33902301的博客 391

【ComfyUI】Animate 保留原视频背景角色替换视频生成

本文介绍了智能创作与视频生成的工作流设计,强调其作为围绕业务目标、数据流转和模型能力的有机整体。工作流由数据输入、模型处理、结果合成和输出展示构成,通过节点化连接实现高效复用与扩展。文章重点解析了核心模型(如CLIP Vision、WanVideo等)的功能和协作方式,以及各类节点(输入、处理、控制、输出)的作用。最后展示了工作流在视频角色替换、虚拟试衣等场景的应用价值,并提供了相关开发资源链接。该设计通过模块化实现了灵活适配不同业务需求的能力。

Mr数据杨 1862

MIKE水动力笔记2_水动力基础理论知识

本文所讲内容是水动力基础理论知识,所参考的主要书籍是《水动力学和水质》(第二版,季振刚著,海洋出版社)。

晏长街的博客 1万+

java mail 群发邮件_javamail群发邮件

电子群发邮件目前应用仍然非常广泛,一米软件将通过本文给家简单介绍javamail群发邮件的具体操作过程。 1. 电子邮件协议电子邮件的在网络中传输和网页一样需要遵从特定的协议,常用的电子邮件协议包括 SMTP,POP3,IMAP。其中邮件的创建和发送只需要用到 SMTP协议,所以本文也只会涉及到SMTP协议。SMTP 是 Simple Mail Transfer Protocol 的简称,即简单邮...

weixin_33195817的博客 497

如何程序化的将 Wire 文件转换成 STEP、CATIA、DWG、NX、FBX 等格式

Wire 文件是专有格式,只有 Autodesk Alias 软件能够直接打开和编辑。 虽然可以在 Alias 软件中手动打开文件并导出为 STEP,但在实际工作中,经常会遇到需要转换数十甚至数百个文件的场景。如果每次都手动操作软件进行转换,不仅效率低下,还容易出错,批量场景下会非常麻烦。因此,程序化、自动化的转换方案变得至关重要。

weixin_44211633的博客 450

java mail 群发_如何用javamail实现邮件群发?

|呵呵,你看看这段代码。importjava.util.Properties;importjavax.mail.*;importjavax.mail.internet.*;publicclassMailExample{publicstaticvoidmain(Stringargs[])throwsException{Stringhost=args[0];Strin...

weixin_30456153的博客 329

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

简单的java mail邮件群发系统

import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import javax.mail.Authenticator; import javax.mail.PasswordAuthentication; /** * Created by tarzan liu on 2020/5/9. */ @Data @NoArgsConstructor @AllArgsConstructor .

洛阳泰山的博客 3308

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

java mail 群发_javamail 邮件群发

package gmailsender;import java.security.Security;import java.util.Date;import java.util.Properties;import javax.mail.Authenticator;import javax.mail.Message;import javax.mail.MessagingException;impor...

weixin_35079944的博客 210

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Java Mail 邮件群发

网上有很多的文章关于Java Mail发送邮件的问题,但是也有很多的文章没有说到发送邮箱的身份验证,还有一些关于群发的文章,也没有提到群发频率过快被视为垃圾邮件,或者根本就发布出去,应该邮件服务商把的连接断开了。 我这里用了四个发送邮箱,轮流发送,每发送一封停5000ms,这样被视为垃圾邮箱的概率大大降低,发送邮箱越多,越容易发送成功。 [code="java"] import ja...

yangpingzhun的博客 146

java mail 群发限制_给任何群发群发邮件都不怕没权限,SpringBoot搭建邮箱服务

一般非QQ群管理员,是没有群发邮件的权限,不过不要着急,下面就普及下怎么以普通群成员群发邮件。打开QQ群官网,然后成员管理,选择对应的QQ群,这样就可以拿到这个群的全部QQ号,利用正则表达式匹配出所有的QQ号,然后末尾加上@qq.com就可以拿到群里所有人的邮件。正常来讲这个时候就可以利用个人邮箱群发邮件了,但是实际上这么操作有很大的限制。自己搭建一套邮箱发送项目,这样就有很大的自由。可以挨个人发...

weixin_42470196的博客 641

java邮件群发代码_用java mail 发邮件的代码,支持群发

public class Mail {private String m_Host = "smtp.qq.com";public String getHost() {return m_Host;}public void setHost(String host) {m_Host = host;}/*** 发送邮件** @param subject* 邮件主题* @param bo...

weixin_39568889的博客 206

用java mail 发邮件的代码,支持群发

public class Mail { private String m_Host = "smtp.qq.com"; public String getHost() { return m_Host; } public void setHost(String host) { m_Host = host; } /**

小水管有大流量 958
上一篇: java mail 发送附件
shift8
博客等级 码龄18年 0粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值