要完成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

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

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的群发送功能。

java群发邮件_161013、java实现邮件群发带附件相关推荐

  1. mysql查询结果作为附件_python3+mysql查询数据并通过邮件群发excel附件

    python3+mysql查询数据并通过邮件群发excel附件 来源:中文源码网    浏览: 次    日期:2018年9月2日 python3+mysql查询数据并通过邮件群发excel附件 本文 ...

  2. VIP邮箱能群发邮件嘛?邮箱邮件群发能发送多少封?

    最贴心的祝福,我只想发给最重要的他,但无奈重要的他有好几个,还有非常多的她-- 别误会,我们说的是商务往来中每一位重要的客户,逢年过节谁都少不了互发问候和感谢信,怎么样让问候显得更真诚,而不让对方觉得 ...

  3. java 发送html格式的邮件(包含附件)

    目录 一.需求描述 二.实现方法 二.错误写法,防止踩坑 三. 正确写法 四.邮件中携带附件 五.邮件发送 一.需求描述 图1显示的是系统中已经配置好的邮件模板,是html格式的内容.要我们把这个模板 ...

  4. Spring boot锦集(二):整合邮件发送的四种方法 | 纯文本的邮件、带有图片的邮件、带Html的邮件、带附件的邮件(很详细)

    前言 邮件发送,听着很神秘,然而对于Spring Boot来说,这个功能已被集成好,只需引入spring-boot-starter-mail依赖后,少量代码即可实现大部分邮件发送需求. 本文以异常教程 ...

  5. javamail复杂格式邮件,带附件,html格式,d图片,超链接

    导入jar包: package com.test.javamail; import java.io.FileOutputStream; import java.io.OutputStream; imp ...

  6. android发送QQ邮件(带附件)

    本文转载自https://my.oschina.net/chenhao901007/blog/373883,谢谢! package com.dailywork.util;import java.io. ...

  7. python 发邮件 timeout_Python邮件发送/带附件发送

    #coding:utf-8 #强制使用utf-8编码格式 import smtplib #加载smtplib模块 from email.mime.text importMIMETextfrom ema ...

  8. C# jmail收取邮件(带附件)

    /* jmail组件的使用方法在网上很容易找到 */ //测试邮箱地址为 recieveceshi@163.com POP3 pop = new POP3(); try {     //创建连接   ...

  9. python-使用python实现发普通邮件和带附件的邮件

    下面是发普通邮件的代码: import smtplib from email.mime.text import MIMEText from email.header import Header #引入 ...

最新文章

  1. MySQL数据库分组和聚合函数组合使用
  2. Linux服务器常见问题
  3. python学习之第二课时--运行程序和字符编码
  4. python查询mysql 乱码_python查询mysql中文乱码问题
  5. XGBoost缺失值引发的问题及其深度分析
  6. $(document).ready(); $().ready(); $()
  7. C++ throw:抛出自己的异常
  8. 大数据时代,数据科学都有些啥?
  9. 后盾网经典原创视频教程php,《后盾网经典原创视频教程:PHP》139集
  10. 赛码网算法: 军训队列( python实现 )
  11. 【转载】飞鸽传书2013【绿色版】
  12. bug in MicrosoftAjax.debug.js
  13. pytorch学习笔记(二十七):Batch-Norm
  14. js排序的时间复杂度_javascript的array.indexOf的时间复杂度是多少?
  15. 西门子1200走总线FB284控制3台V90伺服和相机调整角 度,DP通讯控制FANUC机器人
  16. 给硬件工程师的入门课-硬件工程师的基本素质和技能要求
  17. window10怎么设置共享计算机,Win10系统网络共享功能怎么用?Windows10网络共享功能使用方法...
  18. openlayers加载天地图及天地图地形图影像图
  19. 实验5-11 空心的数字金字塔
  20. 橡胶密封件老化原因有哪些?

热门文章

  1. 方法调用中的别名问题
  2. 导入开源的文件云存储平台-Seafile
  3. VMware 虚拟机安装OSX el capitan 11.12
  4. 用Swift完成不同View Controller之间的切换
  5. Maven +Tomcat+m2eclipse的热部署(hot deploy)
  6. HTML DOM教程 37-HTML DOM Meta 对象
  7. Keepalive工作原理
  8. go https 笔记
  9. service get list一般规范
  10. APPCAN学习笔记003---原生开发与HTML5技术