仓酷云

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

[学习教程] JAVA网站制作之基于JAVAMAIL包的邮件发送程序----kang...

[复制链接]
第二个灵魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:52:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
你通过从书的数量和开发周期及运行速度来证明:net和ruby要比java简单。程序




JavaMailAPI是一个用于浏览、编写和发送电子动静的可选包(尺度扩大),能够用来创建基于尺度的电子邮件客户机,它设置了各类因特网邮件协,包含SMTP、POP、IMAP和MIME,还包含相干的NNTP、S/MIME及别的协定。一般开辟JavaMail程序还必要有Sun的JavaBeansActivationFramework(JAF)。JavaBeansActivationFramework的运转很庞大,这里复杂的说就是JavaMail的运转必需得依附于它的撑持,好比JavaMail使用JavaBeansActivationFramework来处置MIME编码的邮件附件。JavaMail接口包括在javax.mail及其子包中,JavaBeansActivationFramework接口包括在javax.activation包中,JAF标准是"Glasgow"JavaBeans标准的一部分,关于JAF的更多细节,请参考JAF指南:



http://java.sun.com/beans/glasgow/jaf.html







中心JavaMailAPI由七个类构成:Session、Message、Address、Authenticator、Transport、Store及Folder,它们都来自javax.mail、即JavaMailAPI顶级包。能够用这些类完成大批罕见的电子邮件义务,包含发送动静、检索动静、删除动静、认证、复兴动静、转发动静、办理附件、处置基于HTML文件格局的动静和搜刮或过滤邮件列表。有关JavaMail的更多信息,请参考JavaMail指南:



http://java.sun.com/products/javamail/







相似的用javamail完成的sendmail程序,网上有良多。但笔者发明多数有一点成绩。我的code鄙人面。调式前请断定您的机子已安装好JDK1.4javamial1.3.2和JAF。假如没有安装请按以下步骤安装:



1从www.java.sun.com网站上猎取最新的JDK。然后设置java情况变量。



假如是Win95/98,在autoexec.bat的最初面增加以下3行语句:



JAVA_HOME=c:j2sdk1.4.2



PATH=%JAVA_HOME%in;%PATH%



CLASSPATH=.;%JAVA_HOME%lib



看好了CLASSPATH中第一个“.”,这个代表以后目次,良多人HelloWorld没有运转起来年夜多是这个缘故原由。







假如是Win2000大概XP,利用鼠标右击“我的电脑”->属性->初级->情况变量



体系变量->新建->变量名:JAVA_HOME变量值:c:j2sdk1.4.2



体系变量->编纂->变量名:Path在变量值的最后面加上:%JAVA_HOME%in;



体系变量->新建->变量名:CLASSPATH变量值:.;%JAVA_HOME%lib        ools.jar;%JAVA_HOME%libdt.jar;



CLASSPATH后面的谁人"."和下面的意义是一样的。



请调式一个helloworld来考证安装是不是乐成?



2http://java.sun.com/products/javamail/下载最新的javamail。



setCLASSPATH=%CLASSPATH%;c:downloadjavamail-1.3.2mail.jar;.







3http://java.sun.com/products/javabeans/glasgow/jaf.html下载JAF。



setCLASSPATH=%CLASSPATH%;c:downloadactivationactivation.jar



4ok。终究能够先喘口吻了。接上去入手下手程序部分。把if(themail.setTo("########")==false)return;中的#####号改成你本人的邮箱。再把if(themail.addFileAffix("#######")==false)return;中#####写为当地的一个文件路径。也可空着。为了更多的人进修,请人人不要修正sendMail@163.com暗码:sendcode本邮箱只在程序测试中利用!!



然后,在DOS中



javacsendMail.java



javasendMail



呵呵乐成!!!我的主机DOS显现



D:>javasendMail



设置体系属性:mail.smtp.host=smtp.163.com



筹办猎取邮件会话对象!



筹办创立MIME邮件对象!



设置smtp身份认证:mail.smtp.auth=true



设置邮件主题!



设置邮件体魄式



设置收信人



设置发信人!



增添邮件附件:D:endMail.java



程序失掉用户名与暗码



正在发送邮件....



发送邮件乐成!



*************************************************************************



/**



*@authorkangkang



*http://corncc.ikdiy.com



*2005.4.14



*/







importjava.util.*;



importjavax.mail.*;



importjavax.mail.internet.*;



importjava.util.Date;



importjavax.activation.*;



importjava.io.*;











publicclasssendMail



{



//21-30行把本程序所用变量举行界说。详细在main中对它们赋植。



privateMimeMessagemimeMsg;//MIME邮件对象







privateSessionsession;//邮件会话对象



privatePropertiesprops;//体系属性



privatebooleanneedAuth=false;//smtp是不是必要认证







privateStringusername="";//smtp认证用户名和暗码



privateStringpassword="";







privateMultipartmp;//Multipart对象,邮件内容,题目,附件等外容均增加到个中后再天生//MimeMessage对象



publicsendMail(Stringsmtp)



{



setSmtpHost(smtp);



createMimeMessage();



}















/**



*@paramhostNameString



*/



publicvoidsetSmtpHost(StringhostName)



{



System.out.println("设置体系属性:mail.smtp.host="+hostName);



if(props==null)props=System.getProperties();//取得体系属性对象







props.put("mail.smtp.host",hostName);//设置SMTP主机



}











/**



*@returnboolean



*/



publicbooleancreateMimeMessage()



{



try{



System.out.println("筹办猎取邮件会话对象!");



session=Session.getDefaultInstance(props,null);//取得邮件会话对象



}



catch(Exceptione)



{



System.err.println("猎取邮件会话对象时产生毛病!"+e);



returnfalse;



}







System.out.println("筹办创立MIME邮件对象!");



try{



mimeMsg=newMimeMessage(session);//创立MIME邮件对象



mp=newMimeMultipart();//mp一个multipart对象



//Multipartisacontainerthatholdsmultiplebodyparts.



returntrue;



}



catch(Exceptione)



{



System.err.println("创立MIME邮件对象失利!"+e);



returnfalse;



}



}















/**



*@paramneedboolean



*/



publicvoidsetNeedAuth(booleanneed){



System.out.println("设置smtp身份认证:mail.smtp.auth="+need);



if(props==null)props=System.getProperties();







if(need){



props.put("mail.smtp.auth","true");



}else{



props.put("mail.smtp.auth","false");



}



}















/**



*@paramnameString



*@parampassString



*/



publicvoidsetNamePass(Stringname,Stringpass)



{



System.out.println("程序失掉用户名与暗码");



username=name;



password=pass;



}











/**



*@parammailSubjectString



*@returnboolean



*/



publicbooleansetSubject(StringmailSubject){



System.out.println("设置邮件主题!");



try{



mimeMsg.setSubject(mailSubject);



returntrue;



}



catch(Exceptione){



System.err.println("设置邮件主题产生毛病!");



returnfalse;



}



}















/**



*@parammailBodyString



*/



publicbooleansetBody(StringmailBody)



{



try



{



System.out.println("设置邮件体魄式");



BodyPartbp=newMimeBodyPart();



bp.setContent("<metahttp-equiv=Content-Typecontent=text/html;charset=gb2312>"



+mailBody,"text/html;charset=GB2312");



mp.addBodyPart(bp);







returntrue;



}



catch(Exceptione)



{



System.err.println("设置邮件注释时产生毛病!"+e);



returnfalse;



}



}











/**



*@paramnameString



*@parampassString



*/



publicbooleanaddFileAffix(Stringfilename){







System.out.println("增添邮件附件:"+filename);







try{



BodyPartbp=newMimeBodyPart();



FileDataSourcefileds=newFileDataSource(filename);



bp.setDataHandler(newDataHandler(fileds));



bp.setFileName(fileds.getName());







mp.addBodyPart(bp);







returntrue;



}



catch(Exceptione){



System.err.println("增添邮件附件:"+filename+"产生毛病!"+e);



returnfalse;



}



}















/**



*@paramnameString



*@parampassString



*/



publicbooleansetFrom(Stringfrom){



System.out.println("设置发信人!");



try{



mimeMsg.setFrom(newInternetAddress(from));//设置发信人



returntrue;



}



catch(Exceptione)



{returnfalse;}



}











/**



*@paramnameString



*@parampassString



*/



publicbooleansetTo(Stringto)



{



System.out.println("设置收信人");



if(to==null)returnfalse;







try



{



mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));



returntrue;



}



catch(Exceptione)



{returnfalse;}







}







/**



*@paramnameString



*@parampassString



*/



publicbooleansetCopyTo(Stringcopyto)



{



System.out.println("发送附件到");



if(copyto==null)returnfalse;



try{



mimeMsg.setRecipients(Message.RecipientType.CC,(Address[])InternetAddress.parse(copyto));



returntrue;



}



catch(Exceptione)



{returnfalse;}



}











/**



*@paramnameString



*@parampassString



*/



publicbooleansendout()



{



try



{



mimeMsg.setContent(mp);



mimeMsg.saveChanges();



System.out.println("正在发送邮件....");







SessionmailSession=Session.getInstance(props,null);



Transporttransport=mailSession.getTransport("smtp");//???



transport.connect((String)props.get("mail.smtp.host"),username,password);



transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.TO));



//transport.send(mimeMsg);







System.out.println("发送邮件乐成!");



transport.close();







returntrue;



}



catch(Exceptione)



{



System.err.println("邮件发送失利!"+e);



returnfalse;



}



}











/**



*Justdoitasthis



*/



publicstaticvoidmain(String[]args)



{







Stringmailbody="hello.Thisisatesting.";







sendMailthemail=newsendMail("smtp.163.com");



themail.setNeedAuth(true);







if(themail.setSubject("dkjjf")==false)return;



if(themail.setBody(mailbody)==false)return;



if(themail.setTo("########")==false)return;



if(themail.setFrom("senfMail@163.com")==false)return;



if(themail.addFileAffix("#######")==false)return;//附件在当地机子上的相对路径



themail.setNamePass("sendMail","javacode");//用户名与暗码



if(themail.sendout()==false)return;



}



}



*************************************************************************



TIPS:



A程序前部只是一个笼统的界说。在main函数中给出了详细的参数。



B好好使用System.out.println察看程序的实行历程。



C浏览javamailldocsjavadocsindex.html







JAVA是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由升阳(SunMicrosystems)公司的詹姆斯·高斯林(JamesGosling)等人于1990年代初开发。
飘飘悠悠 该用户已被删除
沙发
发表于 2015-1-21 16:35:29 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
分手快乐 该用户已被删除
板凳
发表于 2015-1-24 19:56:05 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
不帅 该用户已被删除
地板
发表于 2015-2-1 14:19:53 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
金色的骷髅 该用户已被删除
5#
发表于 2015-2-1 17:09:20 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
海妖 该用户已被删除
6#
发表于 2015-2-2 22:09:58 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
若相依 该用户已被删除
7#
发表于 2015-2-5 17:35:13 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
因胸联盟 该用户已被删除
8#
发表于 2015-2-13 00:54:30 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
变相怪杰 该用户已被删除
9#
发表于 2015-2-16 09:13:54 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
柔情似水 该用户已被删除
10#
发表于 2015-3-5 03:20:58 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
透明 该用户已被删除
11#
发表于 2015-3-11 22:54:35 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
12#
发表于 2015-3-17 00:15:01 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
再现理想 该用户已被删除
13#
发表于 2015-3-20 03:49:35 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
简单生活 该用户已被删除
14#
发表于 2015-4-1 12:08:48 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
愤怒的大鸟 该用户已被删除
15#
发表于 2015-4-2 11:41:37 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
第二个灵魂 该用户已被删除
16#
 楼主| 发表于 2015-4-18 19:23:31 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
山那边是海 该用户已被删除
17#
发表于 2015-4-22 05:05:17 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
小女巫 该用户已被删除
18#
发表于 2015-4-26 23:09:05 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
小魔女 该用户已被删除
19#
发表于 2015-4-27 19:52:02 | 只看该作者
是一种使用者不需花费很多时间学习的语言
莫相离 该用户已被删除
20#
发表于 2015-6-9 09:14:14 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-22 21:11

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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