您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > JamesJavamail构建邮件服务实现
James+Javamail构建邮件服务(一)关键字:jamesJames+Javamail构建邮件服务本文描述如何使用James搭建具备一定邮件过滤、邮件操作功能的邮件服务器,以及使用Javamail实现对James服务器邮件的收发功能。1关于James与JavamailApacheJames(JavaApacheMailEnterpriseServer)是Apache组织的子项目之一,完全采用纯Java技术开发,实现了SMTP、POP3与NNTP等多种邮件相关协议。James是一个邮件应用平台,可以通过Mailet扩充其功能,如Mail2SMS、Mail2Fax等。James提供了比较完善的配置方案,尤其是关于邮件内容存储和用户信息存储部分,可以选择在文件、数据库或其他介质中保存。James性能稳定、可配置性强,还是开源项目,所有源代码不存在版权问题,因此,James在项目中的应用日益广泛。JavamailAPI是一个用于阅读、编写和发送电子消息的可选包(标准扩展),可以用来建立基于标准的电子邮件客户机,它支持各种因特网邮件协议,包括:SMTP、POP、IMAP、MIME、NNTP、S/MIME及其它协议。在本文档中,我们使用James2.3.1+Javamail1.4.1作为介绍蓝本。2James服务器快速入门我们可以从ApacheJames的官方站点下载到我们所需要的James服务器及源码James服务器(ZIP版)下载地址:源码下载地址:其他版本的服务器及源码可到官方下载页面下载:启动James第一步:将james-binary-2.3.1.zip解压到纯英文目录下第二步:运行bin目录下的run.bat(在运行之前请确保您的Java环境变量已配置成功,否则将提示运行失败)显示以下内容表示James服务器已启动成功:服务器启动成功后,将自动在apps目录下根据james.sar文件生成相应的James发布文件包,我们后面讨论的配置文件config.xml即存在于此发布文件包中。2.2用Telnet管理用户用cmd进入MS-DOS,输入telnetlocalhost4555(注:localhost是邮件服务器名,4555是管理端口,可在\apps\james\SAR-INF\config.xml文件中配置,在此我们使用其默认配置)然后输入用户名和密码(在配置文件config.xml中,默认为用户名:root密码:root)出现如下信息说明登陆成功:登陆成功后,我们就可以开始对用户信息进行增、删、查、改等操作了。常用的用户信息操作命令参见下表:?Currentlyimplementedcommands:常用实现命令?helpdisplaythishelp显示帮助信息?listusersdisplayexistingaccounts显示现有账户?countusersdisplaythenumberofexistingaccounts显示现有账户数量?adduser[username][password]addanewuser添加一个新用户?verify[username]verifyifspecifieduserexist核实指定用户是否存在?deluser[username]deleteexistinguser删除存在的用户?setpassword[username][password]setsauser’spassword设置用户密码?setalias[user][alias]locallyforwardsallemailfor‘user’to‘alias’设置邮箱别名?showalias[username]showsauser’scurrentemailalias显示别名?unsetalias[user]unsetsanaliasfor‘user’删除用户别名?setforwarding[username][emailaddress]forwardsauser’semailtoanotheremailaddress转发用户的电子邮件地址到另一个电子邮件地址?showforwarding[username]showsauser’scurrentemailforwarding显示用户的当前邮件转发?unsetforwarding[username]removesaforward删除转发?user[repositoryname]changetoanotheruserrepository改变另一个用户库?shutdownkillsthecurrentJVM(convenientwhenJamesisrunasadaemon)关闭当前的服务?quitcloseconnection关闭连接我们可以输入命令:adduserchenfengcn881213来添加一个的邮件用户,则其用户名为:chenfengcn,密码为:881213,邮箱地址为:chenfengcn@localhost(用户名后的域名跟服务器配置的域名相同,在config.xml文件中配置,我们将在后面部分讨论如何配置邮件服务器域名)。这样,我们就完成了一个最简单的邮件服务器的搭建操作。下面就让我们使用Foxmail来测试一下我们的邮箱帐户是否真正可以使用吧。2.3使用Foxmail测试邮箱帐户打开Foxmail,点击“邮箱”->“新建邮箱帐户”电子邮件地址:chenfengcn@localhost密码为:881213POP3服务器:localhostSMTP服务器:localhost其余选项均使用默认即可,新建完成后,Foxmail将发送一测试邮件到我们新建的邮箱里,点击“收取”,即可收取我们邮件帐户里面的邮件了。当收到Foxmail发送的测试邮件,就说明我们的邮件帐户可以正常使用了。作为程序设计人员,我们当然希望能使用自己写的程序来测试我们的邮件服务器是否搭建成功,而不是Foxmail。下面就让我们用Javamail来实现这一切吧。James+Javamail构建邮件服务(二)电子邮件开发2009-11-3010:15:30阅读21评论0字号:大中小3Javamail快速入门进行Javamail开发需要用到两个包:mail.jar和activation.jar,在开始Javamail编程之前,请自己将这两个包添加到IDE的Buildpath中或将这两个包的路径配置到环境变量中。3.1使用Javamail向James的邮箱帐户发送邮件3.1.1业务描述本例将使用Javamail实现邮件的发送功能。发送邮件需要配置邮件服务器属性信息,配置邮件接收地址,使用SMTP认证获得会话(Session),构建邮件体(MimeMessage),发送邮件。具体编码如下:3.1.2编码实现发送邮件需要两个类:一个是SMTP用户身份认证类(James在默认情况下,是需要SMTP身份认证的);另一个就是我们的邮件发送类,为简单起见,我们直接将邮件的相关信息,如:标题、内容、发送者、接收者等信息直接写在类中,运行main()函数即发送。当然,你同样可以为自己的邮件发送系统构造一个邮件发送介面,通过Servlet将相关参数传递至后台进行处理与发送。其主要代码也就是此main()函数中的内容,故不赘述。SmtpAuth.java用户身份认证代码Java代码packagecom.newland.javamail.sample1;/***用于身份认证*@authorChen.Feng(Kevin)br*mail:chenfengcn@yeah.netbr*qq:67758633*/classSmtpAuthextendsjavax.mail.Authenticator{privateStringuser,password;/****@paramgetuser*@paramgetpassword*/publicvoidsetUserinfo(Stringgetuser,Stringgetpassword){user=getuser;password=getpassword;}protectedjavax.mail.PasswordAuthenticationgetPasswordAuthentication(){returnnewjavax.mail.PasswordAuthentication(user,password);}publicStringgetPassword(){returnpassword;}publicvoidsetPassword(Stringpassword){this.password=password;}publicStringgetUser(){returnuser;}publicvoidsetUser(Stringuser){this.user=user;}}SendMail.java发送邮件代码Java代码packagecom.newland.javamail.sample1;importjava.util.Properties;importjavax.activation.DataHandler;importjavax.activation.DataSource;importjavax.activation.FileDataSource;importjavax.mail.Message;importjavax.mail.MessagingException;importjavax.mail.Session;importjavax.mail.Transport;importjavax.mail.URLName;importjavax.mail.internet.AddressException;importjavax.mail.internet.InternetAddress;importjavax.mail.internet.MimeBodyPart;importjavax.mail.internet.MimeMessage;importjavax.mail.internet.MimeMultipart;/***使用Javamail实现邮件发送功能*@authorChen.Feng(Kevin)br*mail:chenfengcn@yeah.netbr*qq:67758633**/publicclassSendMail{publicSendMail(){//TODOAuto-generatedconstructorstub}publicstaticvoidmain(String[]args){//初始化信息Stringsender=“chenfengcn”;Stringpassword=“881213”;StringsmtpServer=“localhost”;Stringrecipient=“chenfengcn@localhost”;Stringsubject=“测试邮件主题”;StringfileAttachment=“”;//附件Stringcontent=“测试邮件内容”;//配置服务器属性Propertiesproper=newProperties();proper.put(“mail.smtp.host”,smtpServer);//smtp服务器proper.put(“mail.smtp.auth”,“true”);//是否smtp认证proper.put(“mail.smtp.port”,“25”);//设置smtp端口prop
本文标题:JamesJavamail构建邮件服务实现
链接地址:https://www.777doc.com/doc-1579310 .html