仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1137|回复: 19
打印 上一主题 下一主题

[学习教程] JAVA编程:用JavaMail API编写可带附件的邮件发送...

[复制链接]
蒙在股里 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:42:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
还是要自己一点一点写代码,然后编译,改错再编译好那。还有最重要的是.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
小女巫 该用户已被删除
5#
发表于 2015-2-4 17:41:41 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
深爱那片海 该用户已被删除
6#
发表于 2015-2-6 07:36:40 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
再现理想 该用户已被删除
7#
发表于 2015-2-8 14:00:28 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
蒙在股里 该用户已被删除
8#
 楼主| 发表于 2015-2-8 23:32:01 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
分手快乐 该用户已被删除
9#
发表于 2015-2-26 12:47:34 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
莫相离 该用户已被删除
10#
发表于 2015-3-7 04:43:13 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
兰色精灵 该用户已被删除
11#
发表于 2015-3-14 10:31:11 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
活着的死人 该用户已被删除
12#
发表于 2015-3-19 10:50:24 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
只想知道 该用户已被删除
13#
发表于 2015-3-24 01:52:51 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
柔情似水 该用户已被删除
14#
发表于 2015-3-31 23:47:09 | 只看该作者
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
15#
发表于 2015-4-15 03:21:50 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
因胸联盟 该用户已被删除
16#
发表于 2015-4-17 02:37:05 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
冷月葬花魂 该用户已被删除
17#
发表于 2015-4-27 02:04:07 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
第二个灵魂 该用户已被删除
18#
发表于 2015-5-1 05:16:59 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
小魔女 该用户已被删除
19#
发表于 2015-5-5 21:12:49 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
海妖 该用户已被删除
20#
发表于 2015-6-6 02:37:02 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-5 19:16

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表