网上有很多的文章关于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开发中,当我们需要进行邮件群发功能时,Java Mail 提供了完善的API来实现这一需求。本篇文章将详细解析“Java Mail 邮件群发源码”相关的知识点,并通过分析提供的“communication1”文件中的内容来深入理解...
Java 实现邮件群发是一项常见的任务,特别是在自动化通知、营销活动或者系统消息推送等场景下。下面我们将深入探讨如何利用Java来实现这个功能。 首先,Java 提供了 JavaMail API 来处理邮件发送。JavaMail API 是...
java mail 邮件(群发)发送的源码 里面带有附件的发送
在Java编程环境中,实现邮件群发是一项常见的任务,特别是在企业级应用中,如发送通知、订阅更新或客户服务通信。这个“JAVA实现邮件群发”的示例程序提供了精炼且实用的解决方案,使得开发者能够轻松地集成邮件发送...
JavaMail 是一个 Java API,用于在 Java 应用程序中发送和接收电子邮件。它提供了一个抽象层,允许开发者使用不同的电子邮件协议,例如 SMTP、POP3 和 IMAP。 在本文中,我们将讨论如何使用 JavaMail 库来代发邮件...
Java Mail 是一个用于处理电子邮件的开源API,它允许开发者通过编程方式发送、接收和管理邮件。这个源码可能包含了一套完整的解决方案,可以与多种邮局(如Gmail, Yahoo, Hotmail等)进行交互,并且支持单个收件人和...
在这个"基于Java Spring邮件群发的demo"中,我们将探讨如何利用Spring框架的邮件服务模块实现高效的邮件群发功能。同时,这个项目还涉及到了MySQL数据库和MyBatis持久层框架,这三者共同构成了一个完整的数据驱动的...
本教程将深入探讨如何使用Java Mail进行邮件群发,并讲解如何构建一个简单的EDM(Electronic Direct Marketing,电子直接营销)系统。 首先,你需要了解Java Mail的核心组件。`javax.mail`包提供了各种类和接口,...
【Java邮件群发代码详解】 在Java编程中,发送电子邮件是一项常见的任务,尤其对于自动化通知、批量消息传递等场景。本篇将详细介绍一个简单的Java邮件群发代码,帮助理解如何使用JavaMail API来实现这个功能。 ...
在Java编程环境中,实现邮件群发是一项常见的任务,特别是在企业级应用中,如发送通知、报告或者营销信息。本文将详细讲解如何利用Java技术进行邮件群发,同时也会涉及.NET框架的一些基本概念,以及数据库在其中的...
Java Mail 是一个用于处理电子邮件的开源API,它允许开发者通过编程方式发送、接收和管理邮件。在Java应用程序中,我们通常使用JavaMail API来实现邮件的自动化操作,比如发送带有附件的邮件、群发邮件等。下面将...
JavaMail 是一个强大的开源库,用于在 Java 应用程序中处理电子邮件的发送和接收。它提供了丰富的 API,使得开发者可以方便地...通过这个简单的示例,你应该已经掌握了使用 JavaMail 进行邮件群发和单发的核心概念。
JavaMail邮件群发是Java编程中用于发送电子邮件的API,它允许开发者通过编程方式实现邮件的发送、接收和管理。这个技术广泛应用于自动化通知、营销推广、客户服务等场景。JavaMail API提供了丰富的功能,包括SMTP...
Java邮件群发是一种常见的编程需求,特别是在自动化通知、营销活动或者系统消息传递中。JavaMail API是Java平台上的一个标准库,它允许开发者发送和接收电子邮件。本篇将深入探讨如何利用JavaMail进行邮件群发,并...
4. 创建MimeMessage对象:这是JavaMail中的邮件对象,可以设置发件人、收件人、主题、正文等信息。 5. 发送邮件:通过Transport类的send方法发送MimeMessage对象。 以下是一个简单的Java发送邮件的示例代码: ```...
2. 收件:邮件代理服务器通过SMTP(Simple Mail Transfer Protocol)协议与邮件服务器通信,定期检查用户的邮箱,将新邮件下载到本地,以便用户快速访问。Java的JavaMail API是实现这一功能的关键,它可以方便地处理...
这个案例主要涉及使用Java发送带有附件的邮件以及群发功能。以下将详细解释如何实现这一目标。 首先,JavaMail API是Java中用于处理电子邮件的核心库。要发送邮件,你需要在项目中引入JavaMail API的相关依赖,例如...
利用Java mail发送邮件,用到的一些类,一些方法,写的很简陋
本项目“java读取数据库群发邮件”是利用Java技术来实现从Access数据库中获取数据,并根据这些数据进行邮件群发的功能。Access是一款由Microsoft开发的关系型数据库管理系统,适合小型企业和个人用户存储和管理数据...