`
larry_lv
  • 浏览: 4495 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

转载:用JavaMail API编写可带附件的邮件发送程序

阅读更多
利用Sun公司提供的JavaMail API可以很方便的开发邮件发送程序。也许你已经可以利用它来发送一段简单的文本了,但想不想使你的程序像OUTLOOK一样也能发送附件呢?本文在简单介绍了JavaMail之后,详细讲解了一段完整的送信的JavaBean及一个十分轻巧的servlet。


(没有装载JavaMail API的读者,可以到此站点下载,并按照Readme.txt设置好ClassPath)


一、JavaMail中一些我们需要的类


1.Properties


JavaMail需要Properties来创建一个session对象,其属性值就是发送邮件的主机,如:


Properties props = new Properties ();
props.put("mail.smtp.host", "smtp.xxxx.com");//可以换上你的smtp主机名,就像你在OutLook中设置smtp主机名一样。



2.Session


所有的基于JavaMail的程序都至少需要一个或全部的对话目标。


Session session = Session.getInstance(props, null);



3.MimeMessage


信息对象将把你所发送的邮件真实的反映出来。


MimeMessage msg = new MimeMessage(session);



4.Transport


邮件的发送是由Transport来完成的:


Transport.send(msg);



二、我们自己创建的可发送附件的类


import java.util.* ;
import java.io.* ;
import javax.mail.* ;
import javax.mail.internet.* ;
import javax.activation.* ;
public class Mail {
//定义发件人、收件人、主题等
String to="";
String from="";
String host="";
String filename="";
String subject="";
//用于保存发送附件的文件名的集合
Vector file = new Vector();
//做一个可以传发件人等参数的构造
public Mail (String to,String from,String smtpServer,String subject){
//初始化发件人、收件人、主题等
this.to=to;
this.from=from;
this.host=smtpServer;
this.subject=subject;
}
//该方法用于收集附件名
public void attachfile(String fname){
file.addElement(fname);
}
//开始发送信件的方法
public boolean startSend(){
//创建Properties对象
Properties props = System.getProperties();
//创建信件服务器
props.put("mail.smtp.host", host);
//得到默认的对话对象
Session session=Session.getDefaultInstance(props, null); try {
//创建一个消息,并初始化该消息的各项元素
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address={new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO,address);
msg.setSubject(subject);
//后面的BodyPart将加入到此处创建的Multipart中
Multipart mp = new MimeMultipart();
//利用枚举器方便的遍历集合
Enumeration efile=file.elements();
//检查序列中是否还有更多的对象
while(efile.hasMoreElements()){
MimeBodyPart mbp=new MimeBodyPart();
//选择出每一个附件名
filename=efile .nextElement().toString();
//得到数据源
FileDataSource fds=new FileDataSource(filename);
//得到附件本身并至入BodyPart
mbp.setDataHandler(new DataHandler(fds));
//得到文件名同样至入BodyPart
mbp.setFileName(fds.getName());
mp.addBodyPart(mbp);
}
//移走集合中的所有元素
file.removeAllElements();
//Multipart加入到信件
msg.setContent(mp);
//设置信件头的发送日期
msg.setSentDate(new Date());
//发送信件
Transport.send(msg);
} catch (MessagingException mex) {
mex.printStackTrace();
Exception ex = null;
if ((ex=mex.getNextException())!=null){
ex.printStackTrace();
}
return false;
}
return true;
}
}



三、一个简单的servlet


import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class SendMail extends
HttpServlet implements SingleThreadModel{
public void init(ServletConfig Conf)
throws ServletException {
super.init(Conf);
}
public void doPost(HttpServletRequest
Req, HttpServletResponse Res)
throws ServletException, IOException {
try{
//实例化刚才我们做的类,并按其构造传进相应的参数
Mail sendmail=newMail(" zhang@263.net 该E-mail地址已受到防止垃圾邮件机器人的保护,您必须启用浏览器的Java Script才能看到。 ",
" chtwoy@21cn.com 该E-mail地址已受到防止垃圾邮件机器人的保护,您必须启用浏览器的Java Script才能看到。 ","smtp.21cn.com","test");
sendmail.attachfile("table.pdf");
sendmail.startSend();
}catch(Exception e){
e.printStackTrace();
}
}
public void destroy() {
}
}



四、小结


至此,你已经可以在邮件中添加附件了,而且可以是多个。像这样,将响应与逻辑相分离对代码的扩展和维护是相当有好处的。若Beans与servlet不在同一个包下,别忘了“import”。
分享到:
评论

相关推荐

    javamail发送邮件小程序,类以及写好,只要放包,下载一个就可以

    JavaMail 是一个开源的 Java 库,用于在 Java 应用程序中实现电子邮件的发送和接收。这个小程序可能包含了一套完整的类,可以帮助开发者快速构建邮件发送功能,无需从头开始编写所有必需的代码。 JavaMail 提供了对...

    JavaMail发送邮件的例子

    JavaMail是一种在Java环境中发送和接收电子邮件的标准API,它提供了丰富的功能来处理复杂的邮件操作。在Struts2框架中集成JavaMail服务,可以方便地在Web应用中实现邮件的发送功能。下面我们将深入探讨JavaMail的...

    JavaMail(JAVA邮件服务) API详解

    JavaMail API 是 Java 平台上用于读取、撰写以及发送电子邮件的一种可选包。它为开发人员提供了构建邮件用户代理 (Mail User Agent, MUA) 的工具,这类应用包括常见的 Eudora、Foxmail 和 MS Outlook Express 等。...

    fundamentals of the javamail api

    3. **编写代码**:使用JavaMail API提供的类和方法编写邮件相关的功能。 #### 五、核心类回顾 JavaMail API的核心类主要包括: - **Session**:用于创建邮件会话,包含邮件发送的所有设置。 - **Properties**:...

    JavaMail_API,JavaMail_API简介,JavaMail

    JavaMail API 是一个可选的标准扩展,用于读取、编写和发送电子邮件。它允许开发者创建类似于 Eudora、Pine 或 Microsoft Outlook 的邮件用户代理 (Mail User Agent, MUA),而不是像 Sendmail 或其他邮件传输代理 ...

    FAQ.zip_javamail api_zip

    通过这套API,开发者可以编写应用程序来发送、接收和管理邮件,而无需深入了解SMTP、POP3或IMAP4等邮件协议的细节。 2. **核心组件**:JavaMail API主要由以下组件构成: - `Session`:代表与邮件系统的一次会话,...

    JavaMail-1.5 API

    这意味着,JavaMail API可以用来实现从创建邮件、添加附件、发送邮件、读取邮件、管理邮件存储等几乎所有邮件客户端需要的功能。 JavaMail API支持多种邮件服务器,包括但不限于Apache James、Microsoft Exchange...

    06_传智播客张孝祥java邮件开发_编写一个JavaMail发送邮件的程序.rar

    在这个"06_传智播客张孝祥java邮件开发_编写一个JavaMail发送邮件的程序"教程中,我们将深入学习如何利用JavaMail API创建一个能够发送邮件的Java程序。 首先,要发送邮件,我们需要设置一些基本的配置,例如SMTP...

    java 发送附件mail

    总结一下,Java发送带有附件的邮件涉及到JavaMail API的使用,包括配置SMTP服务器、创建邮件对象、添加内容和附件,以及发送邮件等步骤。理解这些步骤和相关类的作用是实现此功能的关键。在处理不同类型的邮件时,...

    JavaMail API.pdf

    JavaMail API是一种基于Java的可选扩展包,用于读取、编写和发送电子消息,主要用于创建类似于Eudora、Pine或Microsoft Outlook这样的邮件用户代理(MUA)程序。MUA是直接与用户交互的邮件客户端程序,而不同于邮件...

    JavaMail+JAF+JavaMail_API+JavaMail_API详解

    JavaMail 是一个开源的Java库,它为Java程序员提供了处理电子邮件的...通过学习和使用这些资源,开发者可以熟练掌握如何使用JavaMail和JAF来实现复杂的邮件操作,例如发送带附件的邮件、处理邮件事件、读取IMAP邮箱等。

    邮件发送javamail所需jar包.rar

    正确配置后,你就可以利用JavaMail API编写发送和接收邮件的代码了。 总之,"邮件发送javamail所需jar包.rar"提供的库文件是开发Java应用程序发送和接收邮件的基础。通过理解和使用JavaMail API的组件,开发者可以...

    基于JaVaMail的Web邮件客户端的设计与实现

    JavaMail API是Sun Microsystems提供的一套用于发送、接收和处理电子邮件的标准接口集合。它建立在JavaBeans的基础上,提供了丰富的特性来支持各种邮件协议(如SMTP、POP3、IMAP等)。JavaMail不仅支持文本邮件,还...

    javamail API基础

    学习JavaMail API时,你需要理解上述概念,并通过编写实际代码来练习发送、接收和处理邮件。这包括设置SMTP服务器配置、创建和配置`Message`对象、处理邮件附件、使用`Transport`发送邮件,以及如何连接到邮箱读取...

    EMAILviaJAVA:javamail api下载

    JavaMail API是Java平台上的一个标准API,它允许开发者编写能够发送、接收和处理电子邮件的应用程序。 JavaMail API提供了对邮件服务器的访问,支持SMTP(简单邮件传输协议)、POP3(邮局协议第3版)和IMAP(因特网...

    JavaMail简易教程

    JavaMail API是一个用于读取、编写和发送电子邮件的标准扩展包。通过这个API,开发者能够构建类似Eudora、Pine或Microsoft Outlook这样的邮件用户代理(MUA)程序。与邮件传输代理(MTA)不同,MUA主要用于用户与...

    JavaMail_API细节详细解析大全

    JavaMail API 是一套用于处理电子邮件的Java库,它允许开发者编写能够读取、撰写和发送电子邮箱的应用程序,类似于Eudora、Foxmail或MS Outlook Express等邮件用户代理(MUA)。这个API的设计目标是独立于具体的邮件...

    电子邮件发送程序源代码,可发送附件.zip

    这个压缩包包含的资源,如SMTPFileEMail.rar和电子邮件发送程序源代码.txt,很可能是为了帮助开发者理解并构建一个能够发送带有附件的电子邮件的应用。以下是相关知识点的详细说明: 1. **SMTP(Simple Mail ...

    JavaMail实现邮件发送的简单封装(包括文本、图片、html、附件)

    JavaMail 是一个强大的开源库,用于在Java应用程序中发送和接收电子邮件。这个库提供了一组API,使得开发者能够轻松地处理复杂的邮件操作,比如发送文本、图片、HTML内容以及附件。在本文中,我们将深入探讨如何使用...

Global site tag (gtag.js) - Google Analytics