工具类
MessageTools.java
package com.cm.util;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.AuthenticationFailedException;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message;
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;
import javax.mail.internet.MimeUtility;
import com.cm.dto.EmailDto;
public class MessageTools
{
// 邮件服务器及登录用户、密码,发送邮箱
private static String userName;// 用户名
private static String passWord;// 密码
private static String smtpServer;// 邮件服务器
private static String from;// 发件人
private static String mail_socksProxyHost;// 本地代理host
private static String mail_socksProxyPort;// 本地代理prot
private static String mail_socksProxyUser;// 本地代理用户
private static String mail_socksProxyPassword;// 本地代理密码
// 从配置文件中获取相应的账户信息
static
{
try
{
Properties props = new Properties();
props.load(MessageTools.class.getResourceAsStream("mail.property"));
userName = props.getProperty("mail_username");// 设置发件人用户名
passWord = props.getProperty("mail_password");// 设置发件人密码
smtpServer = props.getProperty("mail.smtp.server");// 设置发件人邮件服务器
from = props.getProperty("mail_from_addr");// 设置发件人邮箱
mail_socksProxyHost = props.getProperty("mail_socksProxyHost");//代理地址
mail_socksProxyPort = props.getProperty("mail_socksProxyPort");//代理端口号
mail_socksProxyUser = props.getProperty("mail_socksProxyUser");//代理用户名
mail_socksProxyPassword = props.getProperty("mail_socksProxyPassword");//代理密码
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @发送邮件
* @return 成功-true;失败-false
* @throws CBFException
*/
public static boolean send(List<String> tolist,List<String> cclist,EmailDto dto)
{
try
{
Properties props = System.getProperties();
props.setProperty("proxySet", "true");
if(mail_socksProxyHost!=null && !mail_socksProxyHost.equals(""))
{
props.setProperty("socksProxyHost", mail_socksProxyHost);//代理地址
}
if(mail_socksProxyPort!=null && !mail_socksProxyPort.equals(""))
{
props.setProperty("socksProxyPort", mail_socksProxyPort);//代理端口号
}
if(mail_socksProxyUser!=null && !mail_socksProxyUser.equals(""))
{
props.setProperty("socksProxyUser",mail_socksProxyUser);
}
if(mail_socksProxyPassword!=null && ! mail_socksProxyPassword.equals(""))
{
props.setProperty("socksProxyPassword",mail_socksProxyPassword);
}
props.setProperty("mail.smtp.host", smtpServer);// 设置邮件发送服务器
props.put("mail.smtp.auth", "true");
props.put("mail.debug", "false");
// 使用验证
Session session = Session.getDefaultInstance(props,
new Authenticator()
{
protected javax.mail.PasswordAuthentication getPasswordAuthentication()
{
return new javax.mail.PasswordAuthentication(
from, passWord);
}
});
MimeMessage message = new MimeMessage(session);
if(tolist.size()>0){
for (int i = 0; i < tolist.size(); i++) {
to = tolist.get(i);
}
}
message.setFrom(new InternetAddress(from));// 设置发件人信息
//是否有收件人
if(tolist.size()>0){
Address[] addressTO = new InternetAddress[tolist.size()]; //收件人
for (int i = 0; i < tolist.size(); i++) {
addressTO[i] = new InternetAddress(tolist.get(i));
}
message.setRecipients(Message.RecipientType.TO,addressTO);//设置收件人信息
if(cclist.size()>0){
Address[] addressCC = new InternetAddress[cclist.size()];//抄送人
for (int j = 0; j < cclist.size(); j++) {
addressCC[j] = new InternetAddress(cclist.get(j));
}
message.setRecipients(Message.RecipientType.CC, addressCC);
}
message.setSubject(dto.getSubject());//设置邮件主题
Multipart mm = new MimeMultipart(); // 新建一个MimeMultipart对象用来存放多个BodyPart对象
BodyPart mdp = new MimeBodyPart(); // 新建一个存放信件内容的BodyPart对象
mdp.setContent(dto.getBody(), "text/html;charset=gb2312"); // 给BodyPart对象设置内容和格式/编码方式
mm.addBodyPart(mdp); // 将含有信件内容的BodyPart加入到MimeMultipart对象中
BodyPart mbpf = new MimeBodyPart();
FileDataSource fds = new FileDataSource(dto.getFilename());//附件
mbpf.setDataHandler(new DataHandler(fds));
mbpf.setFileName(MimeUtility.encodeWord(fds.getName(), "GB2312",null));
mm.addBodyPart(mbpf);
message.setContent(mm); // 把mm作为消息对象的内容
message.setSentDate(new Date());//设置发送时间
message.saveChanges();
Transport.send(message);//发送邮件操作
return true;
}
} catch (AuthenticationFailedException afx)
{
afx.printStackTrace();
} catch (Exception ex)
{
ex.printStackTrace();
}
return false;
}
public static void main(String[] args)
{
List<String> tolist = new ArrayList<String>(); // 发件人集合
tolist.add("XXX@163.com");
tolist.add("XXX@163.com");
List<String> cclist = new ArrayList<String>();// 抄送人集合
cclist.add("XXX@126.com");
cclist.add("XXX@126.com");
EmailDto dto = new EmailDto();
dto.setSubject("这是测试邮件");// 设置邮件标题
dto.setBody("<h1>" + "<font color='RED'>" + "邮件测试"
+ ".</font></h1>");// 设置邮件的格式
dto.setFilename("C:\\exp\\test.xls"); // 附件
MessageTools tools = new MessageTools();
tools.send(tolist, cclist, dto);
}
}
EmailDto.java
package com.cm.dto;
import java.io.Serializable;
import com.cm.util.PageInfo;
public class EmailDto extends PageInfo implements Serializable
{
private String id;
private String title; //邮件标题
private String emailAddr;//邮件地址
private String content; //邮件内容
private String type; //邮件类型
private String crtTm; //创建时间
private String remark; //说明
private String stateChar;//状态
private String sendNum; //发送次数
private String updTm; //发送时间
private String crtCde; //发件人
private String from; //发件人
private String to; //收件人
private String subject; //设置邮件主题
private String body; //设置邮件信息内容
private String server; //发送邮件服务器
private String socksProxyHost;//设置代理服务器地址
private String socksProxyPort;//设置代理服务器端口号
private String socksProxyUser;//设置代理服务器用户
private String socksProxyPassword;//设置代理服务器密码
private String passWord;//发送者账户密码
private String userName;//发送者账户名称
private String filename;//附件
public String getPassWord()
{
return passWord;
}
public void setPassWord(String passWord)
{
this.passWord = passWord;
}
public String getUserName()
{
return userName;
}
public void setUserName(String userName)
{
this.userName = userName;
}
public String getSocksProxyHost()
{
return socksProxyHost;
}
public void setSocksProxyHost(String socksProxyHost)
{
this.socksProxyHost = socksProxyHost;
}
public String getSocksProxyPort()
{
return socksProxyPort;
}
public void setSocksProxyPort(String socksProxyPort)
{
this.socksProxyPort = socksProxyPort;
}
public String getSocksProxyUser()
{
return socksProxyUser;
}
public void setSocksProxyUser(String socksProxyUser)
{
this.socksProxyUser = socksProxyUser;
}
public String getSocksProxyPassword()
{
return socksProxyPassword;
}
public void setSocksProxyPassword(String socksProxyPassword)
{
this.socksProxyPassword = socksProxyPassword;
}
public String getBody()
{
return body;
}
public void setBody(String body)
{
this.body = body;
}
public String getSubject()
{
return subject;
}
public void setSubject(String subject)
{
this.subject = subject;
}
public String getFrom()
{
return from;
}
public void setFrom(String from)
{
this.from = from;
}
public String getTo()
{
return to;
}
public void setTo(String to)
{
this.to = to;
}
public String getTitle()
{
return title;
}
public void setTitle(String title)
{
this.title = title;
}
public String getEmailAddr()
{
return emailAddr;
}
public void setEmailAddr(String emailAddr)
{
this.emailAddr = emailAddr;
}
public String getContent()
{
return content;
}
public void setContent(String content)
{
this.content = content;
}
public String getType()
{
return type;
}
public void setType(String type)
{
this.type = type;
}
public String getCrtTm()
{
return crtTm;
}
public void setCrtTm(String crtTm)
{
this.crtTm = crtTm;
}
public String getRemark()
{
return remark;
}
public void setRemark(String remark)
{
this.remark = remark;
}
public String getStateChar()
{
return stateChar;
}
public void setStateChar(String stateChar)
{
this.stateChar = stateChar;
}
public String getSendNum()
{
return sendNum;
}
public void setSendNum(String sendNum)
{
this.sendNum = sendNum;
}
public String getUpdTm()
{
return updTm;
}
public void setUpdTm(String updTm)
{
this.updTm = updTm;
}
public String getCrtCde()
{
return crtCde;
}
public void setCrtCde(String crtCde)
{
this.crtCde = crtCde;
}
public void setServer(String server)
{
this.server = server;
}
public String getServer()
{
return server;
}
public void setId(String id)
{
this.id = id;
}
public String getId()
{
return id;
}
public String getFilename() {
return filename;
}
public void setFilename(String filename) {
this.filename = filename;
}
}
property文件中配置系统邮箱信息 和 代理信息
mail.property
mail.smtp.server = smtp.163.com
mail_from_addr = XXX@163.com
mail_username = XXX
mail_password = XXX
mail_socksProxyHost =
mail_socksProxyPort =
mail_socksProxyUser =
mail_socksProxyPassword =
分享到:
相关推荐
这个"发送多人邮件+多附件工具类"是为了解决这个问题而设计的,它可以帮助开发者便捷地向多个收件人发送带有多个附件的邮件。下面将详细讲解其中涉及的关键知识点。 1. JavaMail API: JavaMail API是Java中用于...
为了实现邮件发送,我们需要引入`javax.mail`和`javax.mail.internet`这两个Java Mail API的包。此外,由于JavaMail API本身并不支持SMTP服务器的直接连接,通常我们会借助Apache的`commons-net`库来处理网络连接。 ...
在电子邮件的使用中,"email附件发送、多人发送、抄送"是三个核心功能,尤其在企业通信中极为常见。本文将深入探讨这三个知识点,并结合Java编程语言来讲解如何实现这些功能。 首先,电子邮件附件发送是指在发送...
本篇将详细介绍如何利用 JavaMail 实现邮件发送,包括发送、抄送、密送多人以及添加多附件。 首先,你需要在项目中引入 JavaMail 的依赖。如果是 Maven 项目,可以在 `pom.xml` 文件中添加如下依赖: ```xml ...
在Java编程环境中,使用Spring Boot框架来实现每天定时发送邮件...此外,如果使用Quartz作为定时任务库,需要额外配置Quartz的相关属性,但其核心思想与Spring Task类似,都是通过定义定时任务来实现周期性的邮件发送。
总的来说,JavaMail API为Java开发者提供了强大的邮件处理功能,通过合理的代码组织和配置,我们可以轻松实现邮件发送,包括添加附件和抄送功能。在`mail2java`这个压缩包文件中,可能包含了示例代码或工具,帮助你...
在Java编程语言中,发送电子邮件是一项常见的任务,尤其在系统集成和自动化通知中。本教程将深入探讨如何使用Java发送带有附件、支持多接收者且...希望这个示例能够帮助你在实际项目中实现高效、可靠的邮件发送功能。
在Java编程语言中,发送电子邮件是一项常见的任务,尤其在企业级应用中,用于发送通知、报表或者客户服务。本文将深入探讨如何使用Java实现电子邮件的发送功能,包括向多个收件人发送邮件。我们将主要涉及JavaMail ...
本教程将详细讲解如何使用 JavaMail 实现邮件发送功能,包括支持多个接收人、抄送人以及添加多个附件。 首先,确保你已经添加了 JavaMail 的依赖库到你的项目中。如果是 Maven 项目,可以在 pom.xml 文件中添加以下...
在这个主题中,我们将深入探讨如何使用Java Mail API来发送包含text、HTML正文以及多个附件的邮件,并且实现发送、抄送和密送给多个收件人。 首先,我们需要导入Java Mail所需的库。主要的依赖包括`javax.mail`和`...
本文将详细介绍如何使用Java Mail API实现简单的邮件发送,包括设置收件人和抄送多人。 首先,你需要在项目中引入Java Mail的相关依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml ...
Java邮件发送是一个常见的任务,尤其在企业级应用中,它被用来传递通知、报告或进行自动通信。在Java中,我们可以使用JavaMail API来实现这个功能。JavaMail API是一个开源库,提供了处理邮件的全面支持,包括创建、...
描述中提到的是"发送邮件的简单代码",这通常指的是使用编程语言实现的电子邮件发送功能。这种功能可以允许用户通过程序自动化发送电子邮件,无论是批量发送给多人,还是根据特定条件选择性发送。在实际应用中,这...
- 给多人发送邮件,包括收件人、抄送人和密送人: ```java String[] tos = {"1@abc.com", "2@abc.com"}; String[] ccs = {"3@abc.com", "4@abc.com"}; String[] bccs = {"5@abc.com", "6@abc.com"}; intent....