`
hsys
  • 浏览: 290505 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java Mail 邮件群发

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


import java.util.*;

import javax.mail.*;
import javax.mail.internet.*;

public class mail {
	public static void main(String[] args) {
		
		String recipient = "ypz1988@gmail.com";
		int delay = 5000;
		String subject = "JavaMail";
		String m_body = "<html><body>测试群发,请点击<a href='http://www.baidu.com/'>百度</a></body></html>"; 
		boolean f = sendMail(subject,m_body,recipient);
		if(f==true){
			System.out.println("发送成功");
		}else{
			System.out.println("发送失败");
		}	
		for(int i=1;i<=50;i++){
			subject = "JavaMail:"+i;
			boolean f2 = sendMail(subject,m_body,recipient);
			if(f2==true){
				System.out.println("发送成功"+i);
			}else{
				System.out.println("发送失败"+i);
			}
			try{
				Thread.sleep(delay);
			}catch(Exception ex){
				ex.printStackTrace();
			}
		}
	}

	public static boolean sendMail(String subject, String m_body,String recipient) {
		String[] usernames={"***@servyou.com.cn","***@163.com","***@163.com","***@gmail.com"};
		String[] hosts = {"mail.servyou.com.cn","smtp.163.com","smtp.163.com","smtp.gmail.com"};

		Random random = new Random();
		int r = random.nextInt(4);
		String host = hosts[r];
		String port = "25";
		String username = usernames[r];
		System.out.println(r+" : "+username );
		String password = "*****";
		String type = "text/html;charset='gb2312'"; // 文本类型默认为text/plain
		try {
			Properties props = System.getProperties(); // 创建系统属性对象
			props.put("mail.transport.protocol", "smtp");
			props.put("mail.smtp.host", host);
			props.put("mail.smtp.port", port);
			props.put("mail.smtp.auth", "true");
			props.put("mail.smtp.starttls.enable", "true");

			PopupAuthenticator authenticator = new PopupAuthenticator();// 创建一个过程对象
			authenticator.performCheck(username, password);
			javax.mail.Session sess = javax.mail.Session.getInstance(
					props, authenticator);
			
			MimeMessage msg = new MimeMessage(sess); // 创建邮件对象
			msg.setSubject(subject);
			msg.setSentDate(new Date());
			msg.setFrom(new InternetAddress(username));
			msg.setRecipient(Message.RecipientType.TO, new InternetAddress(recipient));

			MimeMultipart content = new MimeMultipart(); // 创建邮件体对象
			MimeBodyPart part = new MimeBodyPart(); // 创建文本部分对象
			part.setText(m_body);
			part.setHeader("Content-Type", type);
			content.addBodyPart(part);
			msg.setContent(content); // 添加文本至邮件中
			msg.saveChanges();
			Transport trans = sess.getTransport(); // 创建发送对象
			Transport.send(msg);			
			trans.close();
			sess = null;
			return true;
		} catch (Exception ex) {
			ex.printStackTrace();
			return false;
		}
	}
}

class PopupAuthenticator extends Authenticator {
	String username = null;
	String password = null;

	public PopupAuthenticator() {
	}

	public PasswordAuthentication performCheck(String user, String pass) {
		username = user;
		password = pass;
		return getPasswordAuthentication();
	}

	protected PasswordAuthentication getPasswordAuthentication() {
		return new PasswordAuthentication(username, password);
	}
}
分享到:
评论

相关推荐

    java mail 邮件群发源码

    在Java开发中,当我们需要进行邮件群发功能时,Java Mail 提供了完善的API来实现这一需求。本篇文章将详细解析“Java Mail 邮件群发源码”相关的知识点,并通过分析提供的“communication1”文件中的内容来深入理解...

    java实现邮件群发

    Java 实现邮件群发是一项常见的任务,特别是在自动化通知、营销活动或者系统消息推送等场景下。下面我们将深入探讨如何利用Java来实现这个功能。 首先,Java 提供了 JavaMail API 来处理邮件发送。JavaMail API 是...

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

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

    JAVA实现邮件群发

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

    使用JAVAMail代发邮件

    JavaMail 是一个 Java API,用于在 Java 应用程序中发送和接收电子邮件。它提供了一个抽象层,允许开发者使用不同的电子邮件协议,例如 SMTP、POP3 和 IMAP。 在本文中,我们将讨论如何使用 JavaMail 库来代发邮件...

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

    Java Mail 是一个用于处理电子邮件的开源API,它允许开发者通过编程方式发送、接收和管理邮件。这个源码可能包含了一套完整的解决方案,可以与多种邮局(如Gmail, Yahoo, Hotmail等)进行交互,并且支持单个收件人和...

    基于java spring邮件群发的demo

    在这个"基于Java Spring邮件群发的demo"中,我们将探讨如何利用Spring框架的邮件服务模块实现高效的邮件群发功能。同时,这个项目还涉及到了MySQL数据库和MyBatis持久层框架,这三者共同构成了一个完整的数据驱动的...

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

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

    java邮件群发代码

    【Java邮件群发代码详解】 在Java编程中,发送电子邮件是一项常见的任务,尤其对于自动化通知、批量消息传递等场景。本篇将详细介绍一个简单的Java邮件群发代码,帮助理解如何使用JavaMail API来实现这个功能。 ...

    关于java的群发邮件

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

    java mail 发送邮件

    Java Mail 是一个用于处理电子邮件的开源API,它允许开发者通过编程方式发送、接收和管理邮件。在Java应用程序中,我们通常使用JavaMail API来实现邮件的自动化操作,比如发送带有附件的邮件、群发邮件等。下面将...

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

    JavaMail 是一个强大的开源库,用于在 Java 应用程序中处理电子邮件的发送和接收。它提供了丰富的 API,使得开发者可以方便地...通过这个简单的示例,你应该已经掌握了使用 JavaMail 进行邮件群发和单发的核心概念。

    javaemail邮件群发

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

    java 邮件群发

    Java邮件群发是一种常见的编程需求,特别是在自动化通知、营销活动或者系统消息传递中。JavaMail API是Java平台上的一个标准库,它允许开发者发送和接收电子邮件。本篇将深入探讨如何利用JavaMail进行邮件群发,并...

    java发送邮件实例

    4. 创建MimeMessage对象:这是JavaMail中的邮件对象,可以设置发件人、收件人、主题、正文等信息。 5. 发送邮件:通过Transport类的send方法发送MimeMessage对象。 以下是一个简单的Java发送邮件的示例代码: ```...

    Java开发的邮件代理服务器

    2. 收件:邮件代理服务器通过SMTP(Simple Mail Transfer Protocol)协议与邮件服务器通信,定期检查用户的邮箱,将新邮件下载到本地,以便用户快速访问。Java的JavaMail API是实现这一功能的关键,它可以方便地处理...

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

    这个案例主要涉及使用Java发送带有附件的邮件以及群发功能。以下将详细解释如何实现这一目标。 首先,JavaMail API是Java中用于处理电子邮件的核心库。要发送邮件,你需要在项目中引入JavaMail API的相关依赖,例如...

    Java mail发送邮件

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

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

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

Global site tag (gtag.js) - Google Analytics