网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  基于javamail包的邮件发送程序----kangkang     
  文章作者:未知  文章来源:水木森林  
  查看:86次  录入:管理员--2007-11-17  
 
     javamail api 是一个用于阅读、编写和发送电子消息的可选包(标准扩展),可以用来建立基于标准的电子邮件客户机,它配置了各种因特网邮件协,包括smtp 、pop 、imap和 mime ,还包括相关的 nntp 、s/mime 及其它协议。通常开发javamail 程序还需要有sun 的javabeans activation framework (jaf )。javabeans activation framework 的运行很复杂,这里简单的说就是javamail 的运行必须得依赖于它的支持,比如javamail 利用javabeans activation framework 来处理mime 编码的邮件附件。javamail 接口包含在javax.mail 及其子包中,javabeans activation framework 接口包含在javax.activation 包中,jaf 规范是"glasgow" javabeans 规范的一部分,关于jaf的更多细节,请参考jaf 指南:



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



   



 核心javamail api 由七个类组成:session 、message 、address 、authenticator 、transport 、store 及 folder ,它们都来自javax.mail 、即javamail api 顶级包。可以用这些类完成大量常见的电子邮件任务,包括发送消息、检索消息、删除消息、认证、回复消息、转发消息、管理附件、处理基于html文件格式的消息以及搜索或过滤邮件列表。有关javamail 的更多信息,请参考javamail 指南:



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




 


     类似的用javamail实现的sendmail程序,网上有很多。但笔者发现大都有一点问题。我的code在下面。调式前请确定您的机子已经安装好jdk1.4 javamial1.3.2 和jaf。如果没有安装请按如下步骤安装:



 1  从www.java.sun.com 网站上获取最新的jdk。然后设置java环境变量。



如果是win95/98,在/autoexec.bat的最后面添加如下3行语句:



java_home=c:/j2sdk1.4.2



path=%java_home%/bin;%path%



classpath=.;%java_home%/lib



看好了classpath中第一个“.”,这个代表当前目录,很多人helloworld没有运行起来大多是这个原因。




 


如果是win2000或者xp,使用鼠标右击“我的电脑”->属性->高级->环境变量



系统变量->新建->变量名:java_home 变量值:c:/j2sdk1.4.2



系统变量->编辑->变量名:path 在变量值的最前面加上:%java_home%/bin;



系统变量->新建->变量名:classpath 变量值:.;%java_home%/lib/tools.jar;%java_home%/lib/dt.jar;



classpath前面的那个"."和上面的意义是一样的。



    请调式一个helloworld来验证安装是否成功?



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



     set classpath=%classpath%;c:/download/javamail-1.3.2/mail.jar;.



    



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



     set classpath=%classpath%;c:/download/activation/activation.jar



4   ok。终于可以先喘口气了。 接下来开始程序部分。把if(themail.setto("########") == false) return;中的#####号改为你自己的邮箱。 再把if(themail.addfileaffix("#######") == false) return; 中#####写为本地的一个文件路径。也可空着。为了更多的人学习,请大家不要修改sendmail@163.com  密码:sendcode   本邮箱只在程序测试中使用!!



    然后,在dos中



    javac sendmail.java



    java sendmail



    呵呵 成功!!!我的主机dos显示



    d:/>java  sendmail



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



   准备获取邮件会话对象!



   准备创建mime邮件对象!



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



   设置邮件主题!



   设置邮件体格式



   设置收信人



   设置发信人!



   增加邮件附件:d: endmail.java



   程序得到用户名与密码



   正在发送邮件....



   发送邮件成功!



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



/**



* @author  kangkang     



* http://corncc.ikdiy.com



* 2005.4.14



*/




 


import java.util.*;



import javax.mail.*;



import javax.mail.internet.*;



import java.util.date;



import javax.activation.*;



import java.io.*;




 



 


public class sendmail







       //  21-30行把本程序所用变量进行定义。 具体在main中对它们赋植。



private mimemessage mimemsg; //mime邮件对象




 


private session session;   //邮件会话对象



private properties props;   //系统属性



private boolean needauth = false;   //smtp是否需要认证




 


private string username = "";     //smtp认证用户名和密码



private string password = "";




 


private multipart mp;  //multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成//mimemessage对象



public sendmail(string smtp)



{



setsmtphost(smtp);



createmimemessage();



}




 



 



 


/**



* @param hostname string



*/



public void setsmtphost(string hostname)



 {



system.out.println("设置系统属性:mail.smtp.host = "+hostname);



if(props == null)props = system.getproperties(); //获得系统属性对象




 


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



}




 



 


/**



* @return boolean



*/



public boolean createmimemessage()



{



try{



system.out.println("准备获取邮件会话对象!");



session = session.getdefaultinstance(props,null); //获得邮件会话对象



}



catch(exception e)



{



system.err.println("获取邮件会话对象时发生错误!"+e);



return false;



}




 


system.out.println("准备创建mime邮件对象!");



try{



mimemsg = new mimemessage(session); //创建mime邮件对象  



mp = new mimemultipart();           //mp   一个multipart对象



                                   //multipart is a container that holds multiple body parts.



return true;



}



catch(exception e)



{



system.err.println("创建mime邮件对象失败!"+e);



return false;



}



}




 



 



 


/**



* @param need boolean



*/



public void setneedauth(boolean need) {



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



if(props == null)props = system.getproperties();
 
 
上一篇: 基础知识 --> javadoc用法    下一篇: 基于java得web服务器实现[z]
  相关文档
如何在js中将字符串转为xml对象,并读取对象的值 11-17
struts开发指南之taglib的初步了解 11-17
jmx前身jmapi 11-17
实例说明java中的方法重载机制 11-17
构造方法的初始化顺序 11-17
设计模式之singleton(单态) 11-16
用 struts 向数据库中储存图片 11-17
结合struts和hibernate 谈j2ee数据表示 05-06
反思spring:由ruby on rails想到的 11-17
ie6.0打印机制解析 11-17
使用jwsdp完成web service在java的入门(一) 11-17
经验谈:“三步走”成为一名优秀程序员 11-16
用javabean数据组件集成jsf应用程序与ejb(2) 11-17
aop系列之三:用java动态代理实现aop 11-17
java中的等式 11-17
你好,jogl - java与opengl的绑定 11-17
默认构建器 11-17
用jython构建junit测试包 11-17
利用ecipse生成javadoc乱码解决方法 11-17
jboss配置 mysql数据库连接池 11-17
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息