疯狂的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.jar
mail-plugin.jar
mail.jar
6、打包下载:
<ignore_js_op style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, Helvetica, SimSun, sans-serif; font-size: 13px; line-height: 19px;"> 疯狂的IT人整理java邮件发送(源码).rar (146 Bytes, 下载次数: 3)
- 浏览: 98275 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
ausit:
调价 应该是 条件
java面试中oracle几种查询(经典) -
hanmiao:
才写了44篇文章就搬迁了,個人感觉太浪费资源了。
博客迁移到独立博客了,再见ITEYE! -
hanmiao:
"不管机遇怎样,成功的人都有共同的特点——他们勤奋且 ...
清华差生10年奋斗经历:各种反省各种彻悟 -
white_crucifix:
理解,加油吧~
博客迁移到独立博客了,再见ITEYE! -
jianggege:
white_crucifix 写道映入眼帘的满是广告……是的, ...
博客迁移到独立博客了,再见ITEYE!
发表评论
-
博客迁移到独立博客了,再见ITEYE!
2013-11-07 22:20 1657鉴于自己对技术的痴狂,于是自己用wordpress搭建了一个技 ... -
抢购小米1s青春版
2012-11-25 21:41 984一个白发苍苍的老人在院子里嗮太阳。突然来了个快递员,爷爷,您好 ... -
帝都上班族的真实写照
2012-11-25 21:40 1013每天8小时工作、2小时公交或地铁、7小时睡眠;吃着三流的餐饮, ... -
清华差生10年奋斗经历:各种反省各种彻悟
2012-11-25 21:38 2051清华“差生”10年奋斗 ... -
千万要避免的五种程序注释方式
2012-11-25 21:35 979你是否有过复查程序时发现有些注释毫无用处?程序注释是为了提 ... -
程序人生、钓鱼人生—我的三年程序经验分享
2012-09-01 11:35 1386我是09年开始跟着老师 ... -
Native App和Web App未来的趋势是咋样的?
2012-07-27 09:07 1108未来是Web App的天下,还是Native App的天下?作 ... -
关于Facebook的28件小事
2012-05-23 07:47 867Facebook已经于5月18日晚登陆纳斯达克,此 ... -
15个可以做签名的高权重论坛
2012-05-23 07:46 970经过了这么长时间的Seo学习和探索,结合自己博客分享的实 ... -
从百度一下看用户体验设计的重要性
2012-05-17 23:07 899近日,在百度搜索引擎上搜索网站,比如:ITeye的时候,搜索结 ... -
腾讯也有蛋疼的时候!!!!
2012-05-14 16:59 1223今天下午打开大成网的一篇文章,页面除了错,很拉风,截图为证: ... -
最新Apache2.2和Tomcat7集成负载均衡(软件和文档)
2012-05-10 10:40 1080在原有的apache2.0和tomcat5的基础上重新整理了最 ... -
ITeye,还IT淫一个简洁的首页吧!
2012-05-09 12:34 1262尊敬的Iteye站长: 您看到这一篇文章了吗?对 ... -
对于Iteye在5月8号改版自己的一点看法
2012-05-08 17:50 7374今天下午五点钟左右的 ... -
我最喜欢的10条编程语录(转的)
2012-05-04 17:47 80110. If debugging is the process ... -
程序猿表白专用html5网页(没老婆的下载看看)
2012-05-03 12:55 5321程序猿表白专用html5网页(没老婆的下载看看): 今 ...
相关推荐
总之,Java发送邮件及邮件附件的功能是通过JavaMail API实现的,涉及到的关键类包括Session、MimeMessage、Multipart以及BodyPart。通过理解和实践这段代码,你可以轻松地在Java程序中实现邮件发送功能,包括添加...
通过Java编程,我们可以利用SMTP(Simple Mail Transfer Protocol)协议与邮件服务器进行交互,从而完成邮件的发送。 首先,我们需要导入JavaMail API库,它提供了发送邮件所需的各种类和接口。这个API包含在javax....
在这个场景中,我们将会深入探讨如何利用Java的定时器来实现定时发送邮件的功能。 首先,Java的定时器类(`java.util.Timer`)允许我们调度任务在未来某一时刻执行或周期性执行。`Timer`类提供了`schedule()`和`...
6. **发送邮件**:使用`Transport`类的`send()`方法发送邮件。 ```java Transport.send(message); ``` 7. **添加附件**:如果需要发送附件,可以使用`Multipart`和`BodyPart`类。创建一个`MimeMultipart`对象,...
本文将深入探讨如何利用Java Mail API实现这一功能,并结合提供的`mail-1.4.4.jar`库进行讲解。 首先,我们需要引入Java Mail API的相关依赖。`mail.jar`是Java Mail API的核心库,它提供了处理邮件的基本接口和类...
Spring框架通过其MailSender接口和JavaMailSenderImpl实现了邮件服务,使得在Java应用中发送邮件变得简单。 首先,为了在Spring应用中启用邮件服务,我们需要在配置类中添加对应的bean。这通常涉及到创建一个`...
本资源包含两种不同的Java发送邮件的源代码实现以及相关的jar包,为开发者提供了方便。以下是这两种方法的基本介绍和相关知识点。 首先,JavaMail API是Java平台上的标准邮件发送库,它允许开发者创建、发送和接收...
Java发送邮件是编程中常见的一项任务,特别是在自动化通知、数据报告或者用户服务中。...通过学习和理解这段代码,你可以轻松地在自己的项目中实现Java发送邮件的功能,无论是简单的文本邮件还是包含附件的复杂邮件。
本篇文章将深入探讨如何在Java Swing应用中实现截图并将其通过电子邮件发送的功能。 首先,我们需要了解Java Swing的基本组件和事件处理。`Robot`类是Java AWT库的一部分,可以用来模拟用户的键盘和鼠标操作,包括...
在Java编程中,发送邮件是一项常见的任务,尤其在自动化通知...总的来说,Java发送邮件功能强大且灵活,可以满足各种复杂的邮件需求。通过理解并实践上述代码,你将能够创建一个能够发送包含附件和网络文件的邮件系统。
以上是一个基本的JavaMail发送邮件的例子,实际应用中可能还需要处理更多复杂情况,比如添加附件、使用SSL/TLS加密连接等。例如,要添加附件,可以使用Multipart对象: ```java MimeBodyPart attachmentPart = new ...
在这个例子中,Servlet可能解析请求参数,构造MIMEMessage,然后使用Session(JavaMail API的一部分)的Transport.send方法发送邮件。 8. **安全性**: 在处理用户上传的附件时,需要注意安全问题,如防止恶意文件的...
接着,创建一个邮件服务类,该类将利用Spring的`JavaMailSender`接口发送邮件。在发送邮件时,我们可以使用Freemarker来生成邮件的HTML内容。首先,编写一个Freemarker模板文件,比如`email.ftl`,在这个模板中可以...
在这个例子中,我们将深入探讨如何利用James服务器和JavaMail API来实现这一目标,同时处理中文内容和附件。 首先,James(Apache James)是一个开源的邮件服务器,它支持SMTP、POP3和IMAP协议,可以作为企业级的...
在JavaMail中发送邮件主要涉及以下组件: 1. **Properties对象**:这个对象用来存储邮件服务器的相关配置信息,如SMTP服务器地址、端口号、用户名和密码。例如,`props.put("mail.smtp.host", "smtp.example.com");...
标签“java发送邮件”意味着此示例主要关注Java语言中发送邮件的功能,而“javamail邮箱发送”则表明我们利用JavaMail库来实现这一功能。这个过程涉及到Java网络编程和邮件协议的理解,如SMTP(简单邮件传输协议)和...
本教程将详细介绍如何利用Java通过SMTP命令发送带有抄送和附件的邮件,而无需搭建邮件服务器。 首先,我们需要了解SMTP的工作原理。SMTP是一个基于文本的协议,它允许客户端与邮件服务器之间进行通信,以传递邮件。...
6. **连接SMTP服务器并发送邮件**:最后,使用`send()`方法发送邮件。 ```java try { email.send(); } catch (EmailException e) { e.printStackTrace(); } ``` 在"EmailTestPrj"项目中,你可能会看到一个完整的...