用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",
"chtwoy@21cn.com","smtp.21cn.com","test");
sendmail.attachfile("table.pdf");
sendmail.startSend();
}catch(Exception e){
e.printStackTrace();
}
}
public void destroy() {
}
}
四、小结
至此,你已经可以在邮件中添加附件了,而且可以是多个。像这样,将响应与逻辑相分离对代码的扩展和维护是相当有好处的。若Beans与servlet不在同一个包下,别忘了“import”。
分享到:
相关推荐
JavaMail 是一个开源的 Java 库,用于在 Java 应用程序中实现电子邮件的发送和接收。这个小程序可能包含了一套完整的类,可以帮助开发者快速构建邮件发送功能,无需从头开始编写所有必需的代码。 JavaMail 提供了对...
JavaMail是一种在Java环境中发送和接收电子邮件的标准API,它提供了丰富的功能来处理复杂的邮件操作。在Struts2框架中集成JavaMail服务,可以方便地在Web应用中实现邮件的发送功能。下面我们将深入探讨JavaMail的...
这意味着,JavaMail API可以用来实现从创建邮件、添加附件、发送邮件、读取邮件、管理邮件存储等几乎所有邮件客户端需要的功能。 JavaMail API支持多种邮件服务器,包括但不限于Apache James、Microsoft Exchange...
JavaMail API 是一个可选的标准扩展,用于读取、编写和发送电子邮件。它允许开发者创建类似于 Eudora、Pine 或 Microsoft Outlook 的邮件用户代理 (Mail User Agent, MUA),而不是像 Sendmail 或其他邮件传输代理 ...
在这个"06_传智播客张孝祥java邮件开发_编写一个JavaMail发送邮件的程序"教程中,我们将深入学习如何利用JavaMail API创建一个能够发送邮件的Java程序。 首先,要发送邮件,我们需要设置一些基本的配置,例如SMTP...
JavaMail API是一种基于Java的可选扩展包,用于读取、编写和发送电子消息,主要用于创建类似于Eudora、Pine或Microsoft Outlook这样的邮件用户代理(MUA)程序。MUA是直接与用户交互的邮件客户端程序,而不同于邮件...
总结一下,Java发送带有附件的邮件涉及到JavaMail API的使用,包括配置SMTP服务器、创建邮件对象、添加内容和附件,以及发送邮件等步骤。理解这些步骤和相关类的作用是实现此功能的关键。在处理不同类型的邮件时,...
JavaMail 是一个开源的Java库,它为Java程序员提供了处理电子邮件的...通过学习和使用这些资源,开发者可以熟练掌握如何使用JavaMail和JAF来实现复杂的邮件操作,例如发送带附件的邮件、处理邮件事件、读取IMAP邮箱等。
3. **编写代码**:使用JavaMail API提供的类和方法编写邮件相关的功能。 #### 五、核心类回顾 JavaMail API的核心类主要包括: - **Session**:用于创建邮件会话,包含邮件发送的所有设置。 - **Properties**:...
JavaMail API 是 Java 平台上用于读取、撰写以及发送电子邮件的一种可选包。它为开发人员提供了构建邮件用户代理 (Mail User Agent, MUA) 的工具,这类应用包括常见的 Eudora、Foxmail 和 MS Outlook Express 等。...
通过这套API,开发者可以编写应用程序来发送、接收和管理邮件,而无需深入了解SMTP、POP3或IMAP4等邮件协议的细节。 2. **核心组件**:JavaMail API主要由以下组件构成: - `Session`:代表与邮件系统的一次会话,...
JavaMail API 是Java编程语言中用于处理电子邮件的一个核心库,它允许开发者编写能够发送、接收和管理邮件的应用程序。这个API设计的目标是提供一种与邮件服务器通信的抽象层,使其独立于具体的邮件协议,如SMTP...
同时,为了提高代码的可维护性和测试性,可以考虑使用依赖注入来管理`Session`对象,以及使用策略模式处理不同类型的邮件内容(如纯文本、HTML或带附件的邮件)。 总结,通过JavaMail API和163邮箱的SMTP服务,我们...
JavaMail 是一个强大的开源库,用于在Java应用程序中发送和接收电子邮件。这个库提供了一组API,使得开发者能够轻松地处理复杂的邮件操作,比如发送文本、图片、HTML内容以及附件。在本文中,我们将深入探讨如何使用...
正确配置后,你就可以利用JavaMail API编写发送和接收邮件的代码了。 总之,"邮件发送javamail所需jar包.rar"提供的库文件是开发Java应用程序发送和接收邮件的基础。通过理解和使用JavaMail API的组件,开发者可以...
这个压缩包包含的资源,如SMTPFileEMail.rar和电子邮件发送程序源代码.txt,很可能是为了帮助开发者理解并构建一个能够发送带有附件的电子邮件的应用。以下是相关知识点的详细说明: 1. **SMTP(Simple Mail ...
JavaMail API 是一套用于处理电子邮件的Java库,它允许开发者编写能够读取、撰写和发送电子邮箱的应用程序,类似于Eudora、Foxmail或MS Outlook Express等邮件用户代理(MUA)。这个API的设计目标是独立于具体的邮件...
总的来说,Java发送邮件涉及到JavaMail API的使用,包括配置SMTP服务器、创建邮件内容以及发送过程。这个完整的程序可以帮助开发者快速理解和应用这一功能,无需从零开始编写代码。在实际开发中,还可以根据需求扩展...
通过以上步骤,你就能使用JavaMail API编写一个简单的邮件发送程序了。对于初学者,理解这些基本概念和API使用方式至关重要。在实践中,可以根据需求进行扩展和优化,比如添加日志记录、错误重试机制等。希望这个...