三、程序举例
1.首先是连接SMTP服务器,JAVAMAIL1.2不能实现SMTP服务的功能,但可以连接已有的SMTP服务器。
//创建一个属性对象
Properties props=System.getProperties(); //创建系统属性对象
props.setProperty("mail.transport.protocol","smtp"); //设置使用smtp协议
props.setProperty("mail.smtp.host",server); //设置SMTP服务器地址
props.setProperty("mail.smtp.port",""+port); //设置SMTP端口号
props.setProperty("mail.smtp.auth","true"); //SMTP服务用户认证
//创建一个过程对象
javax.mail.Session sess = javax.mail.Session.getDefaultInstance(props, null);
2.创建一封新邮件,一般定义该MimeMessage创建一个邮件对象。
MimeMessage msg=new MimeMessage(sess); //创建邮件对象
msg.setSubject(“邮件群发”); //设置邮件主题
msg.setSentDate(new Date()); //设置发信日期
msg.setFrom(Address address); //设置发信人
邮件地址只要符合带有“@”符号并且使用“.”分成三段的字符串都会被SMTP服务器接受,发送广告邮件的商家一般都会在这里修改发信人地址,所以我们的收件箱中看见的广告邮件显示中发信人内容一些的根本不存在邮件地址。如果想查看真正地发信人,应该查看邮件头中Received的内容。
//设置主收件人
msg.setRecipients(Message.RecipientType.TO,Address toaddress);
//设置抄送收件人
msg.addRecipients(Message.RecipientType.CC,Address coaddress);
//设置暗抄送人
msg.addRecipients(Message.RecipientType.BCC,Address bcoaddress);
SMTP允许一封邮件有多个接受者,我们可以利用这个特点,在这三个收件人中填写多个收件人地址来提高大规模发邮件效率。另外Bcc这个字段可以隐藏收件人的地址,你有时可能发现邮件的收件人不是自己却收到了这封邮件,就是利用了暗抄这个属性。
3.邮件体一般分为邮件正文本部分和附件部分。正文部分需要设置文本的格式,包括text文本类型,messafe报文类型,image图象类型,video视频类型,audio声音类型,application应用程序类型,multipart混合类型等。如下例,
String m_body; //为需要添加文本内容
MimeMultipart content=new MimeMultipart(); //创建邮件体对象
if(content==null) return false;
MimeBodyPart part=new MimeBodyPart(); //创建文本部分对象
String type="text/plain"; //文本类型默认为text/plain
if(m_body.startsWith("<html>") || m_body.startsWith("<HTML>"))
type="text/html"; //如果是网页形式的内容,则改变类型为text/html
part.setText(m_body);
part.setHeader("Content-Type",type);
content.addBodyPart(part);
msg.setContent(content); //添加文本至邮件中
msg.saveChanges(); //保存修改
4.如何向的邮件中添加附件,利用多用途互联网邮件扩展(MIME)协议可以直接二进制数据添加到标准的RFC822邮件中。在JAVAMAIL中实现方法如下,
String filename; //用于存储文件名称与存放路径
if(filename!=null || filename.length()>0){
MimeBodyPart part=new MimeBodyPart();//创建MIME对象
DataSource fds = new FileDataSource(filename); //创建文件流对象
part.setDataHandler(new DataHandler(fds));
part.setFileName(MimeUtility.encodeText(fds.getName()));
content.addBodyPart(part); //添加二进制编码至邮件体中
}
msg.setContent(content); //添加文本至邮件中
msg.saveChanges(); //保存修改
5.邮件的基本内容设置完毕,发送SMTP电子邮件。
Transport trans=sess.getTransport(); //创建发送对象
trans.send (msg); //发送
6.如何群发邮件,首先我们要有一个邮件地址列表,邮件地址列表可以向从公共网站获得,也可以根据某单位名称按字典法生成,或者购买用户表。邮件地址列表应该按行存放每个邮件地址。
发信的速度和SMTP的响应速度有密切的关系,所以因该充分利用一封邮件可以有多个接受地址的条件,将邮件地址按组读入进行发送,才能提高邮件群发地效率。下面的例子是每一封信发给10个邮件地址。
import java.io.*;
import java.net.*;
import java.util.*;
import javax.mail.*;
import javax.activation.*;
import javax.mail.internet.*;
class massmail(){
try{
FileReader fis = new FileReader(“邮件列表文件”);
BufferedReader dis = new BufferedReader(fis);
int i=0;
while((fileline = dis.readLine())!=null){
if((i%10)==0)
MimeMessage msg=new MimeMessage(sess);
……
if((i%10)!=0){ //多个邮件地址之间要加“,”
maillist = maillist + “,” + fileline;
}else{
maillist = fileline;
}
i++;
if((i%10)==0){ //一封邮件在暗抄地址处加10个收件人
msg.addRecipients(Message.RecipientType.BCC, maillist);
…… //设置邮件内容
Transport trans=sess.getTransport(); //创建发送对象
trans.send (msg); //发送
}
}
fis.close();
}catch(Exception error){
System.out.println("Exception:" + error);
}
相关推荐
【Java邮件群发代码详解】 在Java编程中,发送电子邮件是一项常见的任务,尤其对于自动化通知、批量消息传递等场景。本篇将详细介绍一个简单的Java邮件群发代码,帮助理解如何使用JavaMail API来实现这个功能。 ...
Java 实现邮件群发是一项常见的任务,特别是在自动化通知、营销活动或者系统消息推送等场景下。下面我们将深入探讨如何利用Java来实现这个功能。 首先,Java 提供了 JavaMail API 来处理邮件发送。JavaMail API 是...
在Java编程环境中,实现邮件群发是一项常见的任务,特别是在企业级应用中,如发送通知、报告或者营销信息。本文将详细讲解如何利用Java技术进行邮件群发,同时也会涉及.NET框架的一些基本概念,以及数据库在其中的...
在Java编程环境中,实现邮件群发是一项常见的任务,特别是在企业级应用中,如发送通知、订阅更新或客户服务通信。这个“JAVA实现邮件群发”的示例程序提供了精炼且实用的解决方案,使得开发者能够轻松地集成邮件发送...
在这个"基于Java Spring邮件群发的demo"中,我们将探讨如何利用Spring框架的邮件服务模块实现高效的邮件群发功能。同时,这个项目还涉及到了MySQL数据库和MyBatis持久层框架,这三者共同构成了一个完整的数据驱动的...
Java邮件群发是一种常见的编程需求,特别是在自动化通知、营销活动或者系统消息传递中。JavaMail API是Java平台上的一个标准库,它允许开发者发送和接收电子邮件。本篇将深入探讨如何利用JavaMail进行邮件群发,并...
Java邮件群发是一种常见的编程需求,特别是在自动化通知、营销活动或者系统消息传递中。下面将详细解释这个主题,包括核心概念、技术要点以及如何在Java中实现邮件群发功能。 一、JavaMail API JavaMail API是Java...
邮件群发程序,由Java编写.程序由本人原创,如有问题可加我QQ(12356918)交流.
JavaMail 是一个强大的开源库,用于在 Java 应用程序中处理电子邮件的发送和接收。它提供了丰富的 API,使得开发者可以方便地...通过这个简单的示例,你应该已经掌握了使用 JavaMail 进行邮件群发和单发的核心概念。
JavaMail邮件群发是Java编程中用于发送电子邮件的API,它允许开发者通过编程方式实现邮件的发送、接收和管理。这个技术广泛应用于自动化通知、营销推广、客户服务等场景。JavaMail API提供了丰富的功能,包括SMTP...
本教程将深入探讨如何使用Java Mail进行邮件群发,并讲解如何构建一个简单的EDM(Electronic Direct Marketing,电子直接营销)系统。 首先,你需要了解Java Mail的核心组件。`javax.mail`包提供了各种类和接口,...
在Java开发中,当我们需要进行邮件群发功能时,Java Mail 提供了完善的API来实现这一需求。本篇文章将详细解析“Java Mail 邮件群发源码”相关的知识点,并通过分析提供的“communication1”文件中的内容来深入理解...
这个案例主要涉及使用Java发送带有附件的邮件以及群发功能。以下将详细解释如何实现这一目标。 首先,JavaMail API是Java中用于处理电子邮件的核心库。要发送邮件,你需要在项目中引入JavaMail API的相关依赖,例如...
本项目“java读取数据库群发邮件”是利用Java技术来实现从Access数据库中获取数据,并根据这些数据进行邮件群发的功能。Access是一款由Microsoft开发的关系型数据库管理系统,适合小型企业和个人用户存储和管理数据...
Java发送邮件是一个常见的任务,尤其在自动化通知、报表发送或者用户验证等场景中。下面将详细解释这个过程,包括SMTP(Simple Mail Transfer Protocol)的工作原理、JavaMail API的使用以及可能遇到的问题及其解决...
以上就是使用Java和SpringBoot发送QQ邮件,支持群发和附件的基本知识点。在实际项目中,可能还需要考虑到邮件模板、多语言支持、邮件发送状态追踪等多种复杂情况,这些都需要根据具体需求进行扩展和实现。
Java邮件发送组件是Java开发中用于发送电子邮件的工具,它使得开发者能够轻松地在应用程序中实现邮件功能。Java Mail API是实现这一功能的核心库,它提供了丰富的接口和类,允许程序进行邮件的创建、发送以及处理。...
以下是一个简单的Java邮件群发类的概述,这个类名为Mailer。 Mailer类的核心是使用了JavaMail API,这是一个开放源码的库,提供了处理电子邮件的全面功能。首先,我们导入了必要的JavaMail和Java Util包: ```java...
本文将详述如何使用Java Server Pages(JSP)技术来实现邮件群发,并结合SQL Server 2000数据库来存储和管理邮件列表。 首先,我们需要理解JSP的基本原理。JSP是Java平台上的一个服务器端脚本语言,用于生成动态...
java mail 邮件(群发)发送的源码 里面带有附件的发送