要完成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. Linux系统 ssh图形界面远程

    远程Linux系统有图形界面 1.下载xming 并安装启动 2.通过putty登陆虚拟机 3.输入gnome-session

  2. RouterOS 软路由配置固定IP上网+DHCP

    实现要求: 局域网所有PC机自动获取IP地址,能相互访问并且能访问外网 环境要求: 一台PC机安装两张网卡 ( 使用常用的网卡芯片,例如Intel芯片.RTL瑞昱芯片等 ) 配置说明 1.外网IP地址 ...

  3. Spring Security HTTP Basic for RESTFul and FormLogin (Cookies) for web - Annotations

    @Configuration @EnableWebMvcSecurity @EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabl ...

  4. 发现前端框架 bui-min.js

    http://www.builive.com/apps/default/main.html#menu/code http://www.builive.com/demo/grid-plugin.php# ...

  5. Java基础之写文件——缓冲区中的多条记录(PrimesToFile3)

    控制台程序,上一条博文(PrimesToFile2)每次将一个素数写入到文件中,所以效率不是很高.最好是使用更大的缓冲区并加载多个素数. 本例重复使用三个不同的视图缓冲区加载字节缓冲区并尽可能加入更多 ...

  6. PAT 解题报告 1048. Find Coins (25)

    1048. Find Coins (25) Eva loves to collect coins from all over the universe, including some other pl ...

  7. 单链表的回文判断(O(n)时间复杂度和O(1)的空间复杂度)

    对于单链表来说,判断回文最简单的方法就是遍历链表,将链表中的元素复制到数组中,然后对数组进行判断是否是回文数组,但是这不符合O(1)的空间复杂度. 由于空间复杂度的要求,需要就地操作链表,不能开辟多余 ...

  8. Static Const

    Static 内部的 Const 不可变的 一般写法 在.m文件中, static NSString *const ID = @"shop"; static const CGFlo ...

  9. navicat内的主键和外键

    数据库内的一个重点是主键另一个是外键 实体完整性{ 主键的全称:主关键字    它能够进行唯一标示某一列的 主键的三大特点是:唯一  非空  排序 一个没有主键的表不是一个完整的表,只要表设置了主键那 ...

  10. 转:Java实现几种常见排序方法

    日常操作中常见的排序方法有:冒泡排序.快速排序.选择排序.插入排序.希尔排序,甚至还有基数排序.鸡尾酒排序.桶排序.鸽巢排序.归并排序等. 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一 ...