疯狂的IT人站长整理的:利用Java发送邮件(含附件)的例子:
1、邮件发送的配置propertity文件内容如下:(utils.properties文件放在src下面)

emailsmtp=smtp.qq.com
emailaddress=459104018@qq.com
emailpass=******

2、读取配置文件的类文件(ReadPropertity.java)

import java.io.IOException;
import java.util.Properties;
public class ReadPropertity {
static Properties props = new Properties();
static {
try {
props.load(ReadPropertity.class.getClassLoader().getResourceAsStream(
"utils.properties"));
} catch (IOException e1) {
e1.printStackTrace();
}
}
public static String getProperty(String key) {
return props.getProperty(key);
}
}

3、邮件处理类(EmailHandle.java)

import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
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;
/**
* 本程序用java来实现Email的发送, 所用到的协议为:smtp
* <p>Company:  疯狂的IT人</p>
* time:2013-04-05
* @author www.crazyiter.com
* @date
* @version 1.0
*/
public class EmailHandle {
private MimeMessage mimeMsg; //邮件对象
private Session session; //发送邮件的Session会话
private Properties props;//邮件发送时的一些配置信息的一个属性对象
private String sendUserName; //发件人的用户名
private String sendUserPass; //发件人密码
private Multipart mp;//附件添加的组件
private List files = new LinkedList();//存放附件文件
public EmailHandle(String smtp) {
sendUserName = "";
sendUserPass = "";
setSmtpHost(smtp);// 设置邮件服务器
createMimeMessage(); // 创建邮件
}
public void setSmtpHost(String hostName) {
if (props == null)
props = System.getProperties();
props.put("mail.smtp.host", hostName);
}
public boolean createMimeMessage(){
try {
// 用props对象来创建并初始化session对象
session = Session.getDefaultInstance(props, null);
} catch (Exception e) {
System.err.println("获取邮件会话对象时发生错误!" + e);
return false;
}
try {
mimeMsg = new MimeMessage(session);  // 用session对象来创建并初始化邮件对象
mp = new MimeMultipart();// 生成附件组件的实例
} catch (Exception e) {
return false;
}
return true;
}
/**
* 设置SMTP的身份认证
*/
public void setNeedAuth(boolean need) {
if (props == null)
props = System.getProperties();
if (need)
props.put("mail.smtp.auth", "true");
else
props.put("mail.smtp.auth", "false");
}
/**
* 进行用户身份验证时,设置用户名和密码
*/
public void setNamePass(String name, String pass) {
sendUserName = name;
sendUserPass = pass;
}
/**
* 设置邮件主题
* @param mailSubject
* @return
*/
public boolean setSubject(String mailSubject) {
try {
mimeMsg.setSubject(mailSubject);
} catch (Exception e) {
return false;
}
return true;
}
/**
* 设置邮件内容,并设置其为文本格式或HTML文件格式,编码方式为UTF-8
* @param mailBody
* @return
*/
public boolean setBody(String mailBody) {
try {
BodyPart bp = new MimeBodyPart();
bp.setContent("<meta http-equiv=Content-Type content=text/html; charset=UTF-8>"+ mailBody, "text/html;charset=UTF-8");
// 在组件上添加邮件文本
mp.addBodyPart(bp);
} catch (Exception e) {
System.err.println("设置邮件正文时发生错误!" + e);
return false;
}
return true;
}
/**
* 增加发送附件
* @param filename
* 邮件附件的地址,只能是本机地址而不能是网络地址,否则抛出异常
* @return
*/
public boolean addFileAffix(String filename) {
try {
BodyPart bp = new MimeBodyPart();
FileDataSource fileds = new FileDataSource(filename);
bp.setDataHandler(new DataHandler(fileds));
bp.setFileName(MimeUtility.encodeText(fileds.getName(),"utf-8",null));  // 解决附件名称乱码
mp.addBodyPart(bp);// 添加附件
files.add(fileds);
} catch (Exception e) {
System.err.println("增加邮件附件:" + filename + "发生错误!" + e);
return false;
}
return true;
}
public boolean delFileAffix(){
try {
FileDataSource fileds = null;
for(Iterator it =  files.iterator() ;it.hasNext();) {
fileds = (FileDataSource)it.next();
if(fileds != null && fileds.getFile() != null){
fileds.getFile().delete();
}
}
}catch (Exception e) {
return false;
}
return true;
}
/**
* 设置发件人地址
* @param from
* 发件人地址
* @return
*/
public boolean setFrom(String from) {
try {
mimeMsg.setFrom(new InternetAddress(from));
} catch (Exception e) {
return false;
}
return true;
}
/**
* 设置收件人地址
* @param to收件人的地址
* @return
*/
public boolean setTo(String to) {
if (to == null)
return false;
try {
mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
} catch (Exception e) {
return false;
}
return true;
}
/**
* 发送附件
* @param copyto
* @return
*/
public boolean setCopyTo(String copyto) {
if (copyto == null)
return false;
try {
mimeMsg.setRecipients(javax.mail.Message.RecipientType.CC,InternetAddress.parse(copyto));
} catch (Exception e) {
return false;
}
return true;
}
/**
* 发送邮件
* @return
*/
public boolean sendEmail() throws Exception{
mimeMsg.setContent(mp);
mimeMsg.saveChanges();
System.out.println("正在发送邮件....");
Session mailSession = Session.getInstance(props, null);
Transport transport = mailSession.getTransport("smtp");
// 连接邮件服务器并进行身份验证
transport.connect((String) props.get("mail.smtp.host"), sendUserName,sendUserPass);
// 发送邮件
transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.TO));
System.out.println("发送邮件成功!");
transport.close();
return true;
}
}
4、邮件发送的类文件(SendEmail.java)
/**
* 发送邮件测试
* <p>Company:  疯狂的IT人</p>
* time:2013-04-05
* @author www.crazyiter.com
* @date
* @version 1.0
*/
public class SendEmail {
public SendEmail() {
}
/***以后需要两个参数:接收方地址 、 内容***/
public static void send(String subject, String toaddress,String content)throws Exception {
String hostName = ReadPropertity.getProperty("emailsmtp");
String fromAddress = ReadPropertity.getProperty("emailaddress");
String fromAPass = ReadPropertity.getProperty("emailpass");
EmailHandle emailHandle = new EmailHandle(hostName);
emailHandle.setFrom(fromAddress);
emailHandle.setNeedAuth(true);
emailHandle.setSubject(subject);
emailHandle.setBody(content);
emailHandle.setTo(toaddress);
emailHandle.setFrom(fromAddress);
emailHandle.addFileAffix("D:/myself/help/txt/java环境变量.txt");// 附件文件路径
emailHandle.setNamePass(fromAddress, fromAPass);
emailHandle.sendEmail();
}
public static void main(String[] args) {
try {
SendEmail.send("带附件的邮件测试","459104018@qq.com","测试内容<a href='http://www.crazyiter.com'>疯狂的IT人</a>");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

 

 




5、发送邮件需要的jar包:activation.jarmail-plugin.jarmail.jar 
本文转载自疯狂的IT人:http://www.crazyiter.com/bbs/forum.php?mod=viewthread&tid=1140&extra=page%3D1

利用Java发送邮件(含附件)的例子相关推荐

  1. Java发送邮件(带附件)

    实现java发送邮件的过程大体有以下几步: 准备一个properties文件,该文件中存放SMTP服务器地址等参数. 利用properties创建一个Session对象 利用Session创建Mess ...

  2. java 发送邮件添加附件,Java实现带附件的邮件发送功能

    这篇文章主要为大家详细介绍了Java实现带附件的邮件发送功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了Java实现邮件发送功能的具体代码,供大 ...

  3. java发送邮件将附件变成压缩包_请将实训期间制作的网站打成压缩包以附件形式提交。(含相应的文档资料)...

    [填空题]催化剂在使用过程中保持其活性和选择性的性能称为 [单选题]Which of the following tells the CPU where to find the date to be ...

  4. Java发送邮件,附件乱码问题

    最近写的发送邮件用到了,但是附件却出现了问题,就是附件显示的乱码(.bin格式结尾/一串乱码==UTF8......)这样的样子,乱码如图:   面对这样的问题不要慌,原因好像是Java把附件分割截取 ...

  5. Java发送邮件Excel附件名称变为.dat文件

    Java编写发送邮件,并且添加Excel文件作为附件,邮件可以发送成功,但是附件名称似乎有些问题,总是变成ATT_*****.dat文件,在网上找了许多资料,参考了一些大神的方法,终于解决了该问题. ...

  6. java 发送邮件添加附件_java邮件自动发送时添加网络附件

    查了很多资料都是使用本地资源作为附件发送.但是数据和程序分开时,还需要先下载数据,保存到本地再发送邮件.查了很多资料后,发现apach提供了很好的一个commons-mail.jar包,做了很好的封装 ...

  7. java 发送邮件带附件

    2019独角兽企业重金招聘Python工程师标准>>> 使用jar包mail 使用客户端发送邮件需要先在邮箱里面设置授权客户端发送 public static void main(S ...

  8. java 发送邮件(SSL加密方式,含附件)

    java 发送邮件(SSL加密方式) 一.基于javamail发送邮件 二.基于Apache提供的commons-email发送邮件 一.基于javamail发送邮件 maven: <depen ...

  9. sql 发送邮件网络附件_利用VBA发送附件电子邮件

    大家好,我们今日讲解"利用VBA发送附件电子邮件",这节内容是"VBA信息获取与处理"教程中第五个专题"利用VBA发送电子邮件"的第一节. ...

  10. 利用Java反射机制调用含数组参数的方法

    http://yourmitra.wordpress.com/2008/09/26/using-java-reflection-to-invoke-a-method-with-array-parame ...

最新文章

  1. 老码农揭开行业黑幕:如何编写无法维护的代码
  2. SQL SERVER中强制类型转换cast和convert的区别
  3. workaround for %33 texture memory bug
  4. win10下如何安装vb6.0sp6_Mac如何安装win10系统?Parallels Desktop 15 Mac安装win10系统教程...
  5. 安装docker和jupyter采坑历程
  6. [ZT]ASP.NET中如何防范SQL注入式攻击
  7. linux如何运行windows游戏,如何在Linux上运行Windows应用程序和游戏 互联网技术圈 互联网技术圈...
  8. string.Format 格式化输出
  9. android 沙盒 ios,iOS中的沙盒机制
  10. 专题训练——[kuangbin带你飞]最短路练习
  11. 21天实战人工智能系列:人工智能产品经理最佳实践(3)
  12. linux 主机支持远程唤醒_linux 通过wol远程开机【转】
  13. MySQL数据库通过cmd窗口导入sql文件
  14. socket连接测试工具,window和linux下
  15. 前端安全- 常见的网络攻击
  16. 导航栏隐藏的正确方式
  17. 10个超强英语学习资源网站,学霸们都在用!
  18. python抓取汇率_09 使用Python爬取中国银行网站选择汇率最坑的一天
  19. 赛马命运已成,微盟在劫难逃
  20. 国密浏览器如何完成SM2国密SSL协议协商

热门文章

  1. startActivity报错exposed beyond app through Intent.getData()
  2. Matlab来实现DDS功能
  3. 「企业架构」TOGAF的权威指南
  4. 多行文字cad提取数据_中望CAD如何快速批量提取txt文本数据
  5. jQuery EasyUI/TopJUI上传多个附件并可以进行删除操作
  6. jracdrive变频器说明书580_ABB变频器ACS580说明书.pdf
  7. 致敬学习者丨黑马2020年度TOP榜视频教程,一键领!
  8. 微信小程序使用图标库
  9. 最新即时通讯聊天安卓APP源码+全开源/Uniapp内核
  10. c语言标准流程图,c语言设计流程图!设计流程图