要完成Java群发邮件功能,首先须加入mail.jar和activation.jar这两个包


下面是邮件的例子:

import java.io.File;
import java.util.Properties;
import java.util.Vector;
import javax.mail.internet.MimeUtility;
/**
* 发送邮件的信息类
* @author 仇志鹏
* @version 2016.10.19
*
*/
public class MailSenderInfo {
// 发送邮件的服务器的IP和端口
private String mailServerHost;
private String mailServerPort = “25”;
// 邮件发送者的地址
private String fromAddress;
// 邮件接收者的地址
private String[] toAddress;
// 登陆邮件发送服务器的用户名和密码
private String userName;
private String password;
// 是否需要身份验证
private boolean validate = false;
// 邮件主题
private String subject;
// 邮件的文本内容
private String content;
// 邮件附件的文件名
private String fileName = “” ;
//附件文件集合
private Vector file = new Vector() ; /**
* 获得邮件会话属性
* @return
*/
public Properties getProperties(){
Properties p = new Properties();
p.put(“mail.smtp.host”, this.mailServerHost);
p.put(“mail.smtp.port”, this.mailServerPort);
p.put(“mail.smtp.auth”, validate ? “true” : “false”);
return p;
}
public String getMailServerHost() {
return mailServerHost;
}
public void setMailServerHost(String mailServerHost) {
this.mailServerHost = mailServerHost;
}
public String getMailServerPort() {
return mailServerPort;
}
public void setMailServerPort(String mailServerPort) {
this.mailServerPort = mailServerPort;
}
public boolean isValidate() {
return validate;
}
public void setValidate(boolean validate) {
this.validate = validate;
}
public String getFromAddress() {
return fromAddress;
}
public void setFromAddress(String fromAddress) {
this.fromAddress = fromAddress;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String[] getToAddress() {
return toAddress;
}
public void setToAddress(String[] toAddress) {
this.toAddress = toAddress;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getContent() {
return content;
}
public void setContent(String textContent) {
this.content = textContent;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public Vector getFile() {
return file;
}
public void setFile(Vector file) {
this.file = file;
}
/**
*
* 方法说明:把主题转换为中文
* 输入参数:String strText
* 返回类型:
*/
public String transferChinese(String strText) {
try {
strText = MimeUtility.encodeText(new String(strText.getBytes(),
“GB2312”), “GB2312”, “B”);
} catch (Exception e) {
e.printStackTrace();
}
return strText;
}
}
———————————————————
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
/**
* 发邮件的身份验证器
* @author 仇志鹏
* @version 2016.10.19
*
*/
public class MyAuthenticator extends Authenticator{
String userName=null;
String password=null; public MyAuthenticator(){ }
public MyAuthenticator(String username, String password) {
this.userName = username;
this.password = password;
}
protected PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication(userName, password);
}
}
———————————————————————
import java.io.File;
import java.util.Date;
import java.util.Enumeration;
import java.util.Properties;
import java.util.Vector; import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart; public class SimpleMailSender {
/** *//**
* 以文本格式发送邮件
* @param mailInfo 待发送的邮件的信息
*/
public boolean sendTextMail(MailSenderInfo mailInfo) {
// 判断是否需要身份认证
MyAuthenticator authenticator = null;
Properties pro = mailInfo.getProperties();
if (mailInfo.isValidate()) {
// 如果需要身份认证,则创建一个密码验证器
authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
}
// 根据邮件会话属性和密码验证器构造一个发送邮件的session
Session sendMailSession = Session.getDefaultInstance(pro,authenticator);
try {
// 根据session创建一个邮件消息
Message mailMessage = new MimeMessage(sendMailSession);
// 创建邮件发送者地址 authenticator
Address from = new InternetAddress(mailInfo.getFromAddress());
// 设置邮件消息的发送者
mailMessage.setFrom(from);
// 创建邮件的接收者地址,并设置到邮件消息中
String[] mailToAddress = mailInfo.getToAddress() ;
int len = mailToAddress.length ;
Address to[] = new InternetAddress[len] ;
for(int i=0;i<len;i++){
to[i] = new InternetAddress(mailToAddress[i]) ;
}
// Message.RecipientType.TO属性表示接收者的类型为TO
//TO表示主要接收人,CC表示抄送人,BCC表示秘密抄送人。
mailMessage.setRecipients(Message.RecipientType.TO,to);
// 设置邮件消息的主题
mailMessage.setSubject(mailInfo.getSubject());
// 设置邮件消息发送的时间
mailMessage.setSentDate(new Date());
// 设置邮件消息的主要内容
String mailContent = mailInfo.getContent();
mailMessage.setText(mailContent);
// 发送邮件
Transport.send(mailMessage);
return true;
} catch (MessagingException ex) {
ex.printStackTrace();
}
return false;
} /** *//**
* 以HTML格式发送邮件
* @param mailInfo 待发送的邮件信息
*/
public boolean sendHtmlMail(MailSenderInfo mailInfo){
// 判断是否需要身份认证
MyAuthenticator authenticator = null;
Properties pro = mailInfo.getProperties();
//如果需要身份认证,则创建一个密码验证器
if (mailInfo.isValidate()) {
authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
}
// 根据邮件会话属性和密码验证器构造一个发送邮件的session
Session sendMailSession = Session.getDefaultInstance(pro,authenticator);
try {
// 根据session创建一个邮件消息
Message mailMessage = new MimeMessage(sendMailSession);
// 创建邮件发送者地址
Address from = new InternetAddress(mailInfo.getFromAddress());
// 设置邮件消息的发送者
mailMessage.setFrom(from);
// 创建邮件的接收者地址,并设置到邮件消息中
String[] mailToAddress = mailInfo.getToAddress() ;
int len = mailToAddress.length ;
Address to[] = new InternetAddress[len] ;
for(int i=0;i<len;i++){
to[i] = new InternetAddress(mailToAddress[i]) ;
}
// Message.RecipientType.TO属性表示接收者的类型为TO
//mailMessage.setRecipient(Message.RecipientType.TO, to) ;
mailMessage.setRecipients(Message.RecipientType.TO,to);
// 设置邮件消息的主题
mailMessage.setSubject(mailInfo.getSubject());
// 设置邮件消息发送的时间
mailMessage.setSentDate(new Date());
// MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象
Multipart mainPart = new MimeMultipart();
// 创建一个包含HTML内容的MimeBodyPart
BodyPart html = new MimeBodyPart();
// 设置HTML内容
html.setContent(mailInfo.getContent(), “text/html; charset=utf-8″);
mainPart.addBodyPart(html);
//向multipart中添加附件
Vector file = mailInfo.getFile() ;
String fileName = mailInfo.getFileName() ;
Enumeration efile = file.elements() ;
while(efile.hasMoreElements()){
MimeBodyPart mdpFile = new MimeBodyPart() ;
fileName = efile.nextElement().toString() ;
FileDataSource fds = new FileDataSource(fileName) ;
mdpFile.setDataHandler(new DataHandler(fds)) ;
//这个方法可以解决乱码问题
String fileName1 = new String(fds.getName().getBytes(),”ISO-8859-1”) ;
mdpFile.setFileName(fileName1) ;
mainPart.addBodyPart(mdpFile) ;
}
file.removeAllElements() ;
// 将MiniMultipart对象设置为邮件内容
mailMessage.setContent(mainPart);
// 发送邮件
Transport.send(mailMessage);
return true;
} catch (Exception ex) {
ex.printStackTrace();
}
return false;
}
}
————————————————————————————–
import java.io.File;
import java.util.Vector; import com.sun.mail.util.MailSSLSocketFactory; public class SendMail {
public static void main(String[] args) {
try {
MailSenderInfo mailInfo = new MailSenderInfo();
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true); // 设置邮件服务器类型 smtp.qq.com smtp.exmail.qq.com
mailInfo.setMailServerHost(“smtp.qq.com”);
//设置端口号 25
mailInfo.setMailServerPort(“587”);
//设置是否验证
mailInfo.setValidate(true);
//设置用户名、密码、发送人地址
mailInfo.setUserName(“1909083200”); // 不用带@qq.com
mailInfo.setPassword(“dolsgbvwttttchhd”);// 这个是在邮箱中获取的授权码
mailInfo.setFromAddress(“1909083200@qq.com”); //这个必须填完整
/**
* 附件
*/
Vector file = new Vector() ;
File f1 = new File(“d:/1.txt”) ;
file.add(f1) ;
mailInfo.setFile(file) ;
/**
* 收件人邮箱
* wuhaixu449261417@sina.com
*/
String[] mailToAddress = {“gentlemango@vip.qq.com”} ;
mailInfo.setToAddress(mailToAddress);
mailInfo.setSubject(“测试”);
mailInfo.setContent(“注册地址 百度“);
// 这个类主要来发送邮件
SimpleMailSender sms = new SimpleMailSender();
// sms.sendTextMail(mailInfo);// 发送文体格式
if(sms.sendHtmlMail(mailInfo)){
System.out.println(“mail send True!”);
}// 发送html格式
else{
System.out.println(“mail send False!”);
}
} catch (Exception e) {
e.printStackTrace() ;
}
}
} 以上实现了javamail的群发送功能。

  

161013、java实现邮件群发带附件的更多相关文章

  1. java mail邮件发送(带附件) 支持SSL

    java mail邮件发送(带附件)有三个类 MailSenderInfo.java package mail; import java.util.Properties; import java.ut ...

  2. 利用springframework+javax.mail发邮件(普通邮件、带附件邮件、HTML格式邮件)

    Spring提供了发送电子邮件的支持,可以发送普通邮件.带附件邮件.HTML格式邮件,甚至还可以使用Velocity模板定制化邮件内容. 一.引入相关的库 1 2 3 4 5 6 7 8 9 10 1 ...

  3. Java SpringBoot使用126邮箱发送html内容邮件,带附件

    package mail.demo; import org.junit.Test; import org.junit.runner.RunWith; import org.springframewor ...

  4. struts2集成javamail发邮件(带附件)实践记录

    一.代码预览 这两天在做struts2上的邮件发送.以前的项目有用到spring,用spring提供的邮件支持类很方便可以完成这个功能,但是现在只用struts2的话,就碰到了一系列的问题. 代码是从 ...

  5. Spring的javaMail邮件发送(带附件)

    项目中经常用到邮件功能,在这里简单的做一下笔记,方便日后温习. 首先需要在配置文件jdbc.properties添加: #------------ Mail ------------ mail.smt ...

  6. 一个支持邮件带附件群发的java类

    import java.io.UnsupportedEncodingException;import java.util.ArrayList;import java.util.Date;import ...

  7. spring boot 邮件发送(带附件)

    首先开启QQ邮箱的POP.SMTP服务器,获取授权码. 设置-->账户-->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 pom.xml需要加载三个ja ...

  8. Python使用SMTP发送邮件[HTML格式、送带附件]

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. python的smtplib提供了一 ...

  9. centos 使用mutt发送邮件带附件

    1.安装mutt工具 yum install -y mutt 2.使用mutt发邮件并带附件echo "统计日志" | /usr/bin/mutt -s "统计日志&qu ...

随机推荐

  1. Unicode 编码概念

    Unicode 编码概念 Unicode 编码可能是我们日常开发中接触最多的字符编码方式之一,其它常见的中文编码方式还包括 GB2132-80 / GB13000 / GBK / GB18030 .在 ...

  2. SQL Server Transaction Log Truncate && Shrink

    目录 什么是事务日志 事务日志的组成 事务日志大小维护方法 Truncate Shrink 索引碎片 总结 什么是事务日志 Transaction log   是对数据库管理系统执行的一系列动作的记录 ...

  3. C#高级编程 反射 代码示例

    反射 反射(Reflection)是.NET中的重要机制,通过反射,可以在运行时获得.NET中每一个类型(包括类.结构.委托.接口和枚举等)的成员,包括方法.属性.事件,以及构造函数等. 还可以获得每 ...

  4. XCode环境变量及路径设置

    一般我们在xcode里面配置包含工程目录下头文件的时候,都要关联着相对路径和绝对路径,如果只是自己用这个项目,用绝对路径的问题不大,但是如果你把工程发给别人,别人就要在改这个绝对路径,这时候绝对路径的 ...

  5. Glossary of view transformations

    Glossary of view transformations The following terms are used to define view orientation, i.e. trans ...

  6. Visual Studio 2013发布网站

  7. 关于IOS框架的解释

  8. 第8章 委托、Lamdba表达式和事件

    本章内容: 委托    Lambda表达式 事件 8.1.3   简单的委托示例 首先定义一个类MathOperations,它有两个静态方法,对double类型的值执行两个操作. public cl ...

  9. sockopt note

    1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO ...

  10. npm 介绍

    安装NPM NPM的全称是Node Package Manager,如果你熟悉ruby的gem,Python的PyPL.setuptools,PHP的pear,那么你就知道NPM的作用是什么了.没 错 ...