您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > JavaEE5学习笔记04-JavaMail使用总结
1/22JavaEE5学习笔记04-JavaMail使用总结刘岩Email:suhuanzheng7784877@163.com1.JavaMail简介其实利用JavaMailAPI发送邮件本身没什么,在JavaWeb系统中也可以将自己封装好的JavaMail的UtilBean作为一个模块来用。官方的解释是这样的JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。我们可以基于JavaMail开发出类似于MicrosoftOutlook的应用程序。虽然JavaMail是Sun的API之一,但它目前还没有被加在标准的java开发工具包中(JavaDevelopmentKit),这就意味着你在使用前必须另外下载JavaMail文件。除此以外,你还需要有Sun的JavaBeansActivationFramework(JAF)。JavaBeansActivationFramework的运行很复杂,在这里简单的说就是JavaMail的运行必须得依赖于它的支持。在Windows2000下使用需要指定这些文件的路径,在其它的操作系统上也类似。一句话,如果您有时间,您愿意,完全可以利用JavaMailAPI开发一个山寨版的Foxmail。因为它确实为您屏蔽了底层的通讯协议、发送细节等等。2.常用接口JavaMail常用的接口有如下几个1.javax.mail.Session:代表一次邮件会话。下面就是创建了会话Sessionsession=Session.getDefaultInstance(properties,newAuthenticator(){//构造服务器认证对象@OverrideprotectedPasswordAuthenticationgetPasswordAuthentication(){returnnewPasswordAuthentication(userName,password);}});当然,如果使用JBoss服务的时候,则可以采用注入的方式直接获取Session。2.javax.mail.Transport用于发送邮件的抽象类,它有一个SMTPTransport具体类//真正发送邮件Transport.send(msg);3.javax.mail.Store此类用于邮件的读取、写、监视、查找等等操作如下操作2/22//使用pop3协议接收邮件URLNameurl=newURLName(pop3,getPop3Host(),getPop3Port(),null,getAccount(),getPassword());Storestore=session.getStore(url);4.javax.mail.Folder用于组织邮件,代表邮件系统的一个文件夹。获取如下:Folderinbox=getStore().getFolder(INBOX);inbox.open(Folder.READ_WRITE);5.javax.mail.MimeMessage实际的邮件对象它下属性bte[]content:邮件内容的字节数组InternetHeadersheader:邮件的文件头对象它还有如下方法VoidaddFrom():设置发件人VoidaddHeader():设置邮件头信息VoidaddRecipients():增加收件地址Address[]getFrom():返回邮件发件人地址列表VoidsetContent():设置Email的内容如下代码MimeMessagemsg=newMimeMessage(session);6.javax.mail.Address制定人发件人、收件人地址,它也是一个抽象类,他有一个InternetAddress子类。如下//设置收件人//收件人可以是多个,所以是数组InternetAddress[]internetAddressTo={newInternetAddress(to),newInternetAddress(stail111@163.com)};7.javax.mail.Multipart用于保存电子邮件的内容的容器,它定义了添加、删除、获得电子邮件内容的方法。他也是抽象类,有一个子类叫做MimeMultipart。代码如下:Multipartmp=newMimeMultipart();3/22//构造正文MimeBodyPartmbpContent=newMimeBodyPart();mbpContent.setText(content);mp.addBodyPart(mbpContent);8.javax.mail.BodyPart以上代码示例出现了MimeBodyPart,他是BodyPart的子类,代表邮件内容的一部分,既可以代表邮件正文、也可以代表邮件的附件。上面是描绘了一个普通的字符串。9.javax.activation.DataHandler该类允许邮件信息包含非文本的BodyPart对象,如下代码MimeBodyPartfilembpContent=newMimeBodyPart();FileDataSourcefds=newFileDataSource(files);filembpContent.setDataHandler(newDataHandler(fds));filembpContent.setFileName(fds.getName());mp.addBodyPart(filembpContent);10.javax.activation.FileDataSource一般是附件文件对象,可以用于给邮件增加附件。上面的代码中也就是增加了一个文件附件11.javax.activation.URLaSource代表一个url的远程资源3.发送邮件实例还是来个实例代码实在点packagemail.sendSimpleMail;importjava.io.UnsupportedEncodingException;importjava.util.ArrayList;importjava.util.Date;importjava.util.List;importjava.util.Properties;importjavax.activation.DataHandler;importjavax.activation.FileDataSource;importjavax.mail.Authenticator;importjavax.mail.Message;importjavax.mail.MessagingException;importjavax.mail.Multipart;importjavax.mail.PasswordAuthentication;importjavax.mail.Session;importjavax.mail.Transport;importjavax.mail.internet.AddressException;importjavax.mail.internet.InternetAddress;4/22importjavax.mail.internet.MimeBodyPart;importjavax.mail.internet.MimeMessage;importjavax.mail.internet.MimeMultipart;importjavax.mail.internet.MimeUtility;/***简单的发送邮件例子**@authorliuyan**/publicclassSendMail{//目的privateStringto;//来源privateStringfrom;//发送邮件的服务器privateStringsmtpServer;//发送端的账户privateStringuserName;//发送端的密码privateStringpassword;//邮件主题privateStringsubject;//邮件内容privateStringcontent;//附件ListStringattachments=newArrayListString();publicStringgetTo(){returnto;}publicvoidsetTo(Stringto){this.to=to;}5/22publicStringgetFrom(){returnfrom;}publicvoidsetFrom(Stringfrom){this.from=from;}publicStringgetSmtpServer(){returnsmtpServer;}publicvoidsetSmtpServer(StringsmtpServer){this.smtpServer=smtpServer;}publicStringgetUserName(){returnuserName;}publicvoidsetUserName(StringuserName){this.userName=userName;}publicStringgetPassword(){returnpassword;}publicvoidsetPassword(Stringpassword){this.password=password;}publicStringgetSubject(){returnsubject;}publicvoidsetSubject(Stringsubject){this.subject=subject;}publicStringgetContent(){returncontent;}6/22publicvoidsetContent(Stringcontent){this.content=content;}publicListStringgetAttachments(){returnattachments;}publicvoidsetAttachments(ListStringattachments){this.attachments=attachments;}publicSendMail(){}publicSendMail(Stringto,Stringfrom,StringsmtpServer,StringuserName,Stringpassword,Stringsubject,Stringcontent){this.to=to;this.from=from;this.smtpServer=smtpServer;this.userName=userName;this.password=password;this.subject=subject;this.content=content;}/***中文gbk转换**@paramtext*@return*/publicStringtransferChinese(Stringtext){7/22try{//对消息进行gbk转换text=MimeUtility.encodeText(newString(text.getBytes()),GB2312,B);}catch(UnsupportedEncodingExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}returntext;}/***添加附件**@paramname*/publicvoidattachFile(Stringname){attachments.add(name);}/***发邮件**@return*@throwsMessagingException*@throwsAddressException*/publicbooleansendMail()throwsException{//属性配置Propertiespropertie
本文标题:JavaEE5学习笔记04-JavaMail使用总结
链接地址:https://www.777doc.com/doc-4888842 .html