蒙在股里 发表于 2015-1-18 11:42:48

JAVA编程:用JavaMail API编写可带附件的邮件发送...

还是要自己一点一点写代码,然后编译,改错再编译好那。还有最重要的是.net的编译环境非常好,你甚是不需要了解太多工具,对于简单的系统,你可以之了解一些语法就哦了。程序使用Sun公司供应的JavaMailAPI能够很便利的开辟邮件发送程序。大概你已能够使用它来发送一段复杂的文本了,但想不想使你的程序像OUTLOOK一样也能发送附件呢?本文在复杂先容了JavaMail以后,具体解说了一段完全的送信的JavaBean及一个非常轻便的servlet。

(没有装载JavaMailAPI的读者,能够到此站点下载,并依照Readme.txt设置好ClassPath)
1、JavaMail中一些我们必要的类
1.Properties

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

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

2.Session

一切的基于JavaMail的程序都最少必要一个或全体的对话方针。

Sessionsession=Session.getInstance(props,null);

3.MimeMessage

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

MimeMessagemsg=newMimeMessage(session);

4.Transport

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

Transport.send(msg);

2、我们本人创立的可发送附件的类
importjava.util.*;
importjava.io.*;
importjavax.mail.*;
importjavax.mail.internet.*;
importjavax.activation.*;
publicclassMail{
//界说发件人、收件人、主题等
Stringto="";
Stringfrom="";
Stringhost="";
Stringfilename="";
Stringsubject="";
//用于保留发送附件的文件名的汇合
Vectorfile=newVector();
//做一个能够传发件人等参数的机关
publicMail(Stringto,Stringfrom,StringsmtpServer,Stringsubject){
//初始化发件人、收件人、主题等
this.to=to;
this.from=from;
this.host=smtpServer;
this.subject=subject;
}
//该办法用于搜集附件名
publicvoidattachfile(Stringfname){
file.addElement(fname);
}
//入手下手发送函件的办法
publicbooleanstartSend(){
//创立Properties对象
Propertiesprops=System.getProperties();
//创立函件服务器
props.put("mail.smtp.host",host);
//失掉默许的对话对象
Sessionsession=Session.getDefaultInstance(props,null);try{
//创立一个动静,并初始化该动静的各项元素
MimeMessagemsg=newMimeMessage(session);
msg.setFrom(newInternetAddress(from));
InternetAddress[]address={newInternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO,address);
msg.setSubject(subject);
//前面的BodyPart将到场到此处创立的Multipart中
Multipartmp=newMimeMultipart();
//使用列举器便利的遍历汇合
Enumerationefile=file.elements();
//反省序列中是不是另有更多的对象
while(efile.hasMoreElements()){
MimeBodyPartmbp=newMimeBodyPart();
//选择出每个附件名
filename=efile.nextElement().toString();
//失掉数据源
FileDataSourcefds=newFileDataSource(filename);
//失掉附件自己并至进BodyPart
mbp.setDataHandler(newDataHandler(fds));
//失掉文件名一样至进BodyPart
mbp.setFileName(fds.getName());
mp.addBodyPart(mbp);
}
//移走汇合中的一切元素
file.removeAllElements();
//Multipart到场到函件
msg.setContent(mp);
//设相信件头的发送日期
msg.setSentDate(newDate());
//发送函件
Transport.send(msg);
}catch(MessagingExceptionmex){
mex.printStackTrace();
Exceptionex=null;
if((ex=mex.getNextException())!=null){
ex.printStackTrace();
}
returnfalse;
}
returntrue;
}
}

3、一个复杂的servlet
importjavax.servlet.*;
importjavax.servlet.http.*;
importjava.io.*;
publicclassSendMailextends
HttpServletimplementsSingleThreadModel{
publicvoidinit(ServletConfigConf)
throwsServletException{
super.init(Conf);
}
publicvoiddoPost(HttpServletRequest
Req,HttpServletResponseRes)
throwsServletException,IOException{
try{
//实例化方才我们做的类,并按其机关传进响应的参数
Mailsendmail=newMail("zhang@263.net",
"chtwoy@21cn.com","smtp.21cn.com","test");
sendmail.attachfile("table.pdf");
sendmail.startSend();
}catch(Exceptione){
e.printStackTrace();
}
}
publicvoiddestroy(){
}
}

4、小结
至此,你已能够在邮件中增加附件了,并且能够是多个。像如许,将呼应与逻辑相分别对代码的扩大和保护是相称有优点的。若Beans与servlet不在统一个包下,别忘了“import”。

市场分额,java比asp高一点,因为C#是仿照java开发的,所以哦C#能做的java都能做到,但是java能做的,C#不一定都能做到。毕竟是抄袭吗。

透明 发表于 2015-1-21 13:03:46

Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。

admin 发表于 2015-1-25 17:19:14

是一种使网页(Web Page)产生生动活泼画面的语言

再见西城 发表于 2015-1-26 18:13:49

是一种突破用户端机器环境和CPU

小女巫 发表于 2015-2-4 17:41:41

那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!

深爱那片海 发表于 2015-2-6 07:36:40

你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。

再现理想 发表于 2015-2-8 14:00:28

有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)

蒙在股里 发表于 2015-2-8 23:32:01

Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。

分手快乐 发表于 2015-2-26 12:47:34

如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。

莫相离 发表于 2015-3-7 04:43:13

是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能

兰色精灵 发表于 2015-3-14 10:31:11

所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。

活着的死人 发表于 2015-3-19 10:50:24

所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。

只想知道 发表于 2015-3-24 01:52:51

其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。

柔情似水 发表于 2015-3-31 23:47:09

那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!

仓酷云 发表于 2015-4-15 03:21:50

学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。

因胸联盟 发表于 2015-4-17 02:37:05

还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。

冷月葬花魂 发表于 2015-4-27 02:04:07

学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。

第二个灵魂 发表于 2015-5-1 05:16:59

是一种语言,用以产生「小应用程序(Applet(s))

小魔女 发表于 2015-5-5 21:12:49

你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。

海妖 发表于 2015-6-6 02:37:02

自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
页: [1]
查看完整版本: JAVA编程:用JavaMail API编写可带附件的邮件发送...