JavaMail技术

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

JavaMail技术1.JavaMail介绍现如今,使用email发送邮件非常普遍和常见,平时公司内部交流,网站上信息通知,注册时激活验证等地方都在使用邮件,Java也有关于发送和接收邮件技术封装。Java中提供的技术即就是要给大家介绍的JavaMail技术。2.邮件协议2.1.邮件服务器简介邮件服务器,按照提供的服务类型,可以分为发送邮件的服务器和接收邮件的服务器。发送邮件的服务器使用发送协议,现在常用的是SMTP协议。所以,通常发邮件的服务器也称为SMTP服务器。接收邮件的服务器使用接收协议,现在常用的是POP3协议或IMAP协议,所以通常也被称为POP3或IMAP服务器。目前经常见到的服务器为SMTP和POP3服务器。例如:在注册了126的邮箱之后,它的发邮件服务器为smtp.126.com:25,而收邮件服务器则为pop3.126.com:110.(冒号后面的为端口号)。当然,发邮件服务器和收邮件服务器也可能是同一台主机,但端口号一定不相同。默认发邮件服务器的端口为25,收邮件的端口为110。2.2.邮件收/发协议SMTP协议-发邮件协议全称为SimpleMailTransferProtocol(简单邮件传输协议),它定义了邮件客户端软件与SMTP服务器之间、以及两台SMTP服务器之间的通讯规则。端口一般为25.POP3协议-收邮件协议全称为PostOfficeProtocol(邮局协议),它定义了邮件客户端软件与POP3服务器的通讯规则。端口一般为110.IMAP协议-对POP3的扩展全称为InternetMessageAccessProtocal(Internet消息访问协议),它是对POP3协议的一种扩展,定义了邮件客户端软件与IMAP服务器的通讯规则。3.Apache的JavaMail使用邮件客户端的主要任务是向邮件服务器发送邮件,以及接收来自邮件服务器的邮件。Sun公司制定了一套API,它封装了邮件通信的各种协议。为Java开发者提供了收发电子邮件的公共接口。但是由于Sun公司提供的那些接口比较麻烦,Apache对sun公司的技术进行了封装,使用Apache的mail技术,可以简单方便的发送邮件。3.1.下载javamail的jar包下载地址:解压jar包,在项目中导入jar包。将jar包添加到classpath中即可使用。3.2.Apache的mail类介绍3.2.1.Email类介绍Email:类是Apache的邮件jar包中的核心类,它本身是一个抽象类,需要使用其子类SimpleEmail或MultiPartEmail类创建对象。Email类它是基类,可以通过Email设置发送者邮件和名称,同时可以设置接收者的邮件、名称、主题、发送时间。可以通过其子类设置需要发送的邮件主题内容。3.2.2.SimpleEmail介绍SimpleEmail类是用来发送简单的互联网邮件的,但是不携带任何的附件。3.2.3.MultiPartEmail介绍MultiPartEmail类是用来发送可以携带附件的邮件内容。其子类HtmlEmail可以发送包含html内容的邮件。3.3.发送简单的文本数据内容3.3.1.发送简单邮件代码实现/**演示使用Apache的mail技术发送邮件*/publicclassMailDemo{publicstaticvoidmain(String[]args)throwsEmailException{//创建Mail对象Emailmail=newSimpleEmail();//设置发送邮件的主机服务器mail.setHostName(smtp.sina.com);//设置发送邮件的端口号mail.setSmtpPort(25);//设置发送者的邮箱地址和密码mail.setAuthentication(qb_sh_test@sina.com,2015qazwsx);//设置安全连接mail.setSSLOnConnect(true);//设置发送者的邮件mail.setFrom(qb_sh_test@sina.com);//设置主题mail.setSubject(test);//设置邮件内容mail.setMsg(ceshi数据);//设置接收者邮件mail.addTo(qubo_323@163.com);//发送邮件mail.send();}}3.3.2.邮箱开启POP3第三方客户端(网易)操作上面的程序在运行的时候会报下面的异常:Exceptioninthreadmainorg.apache.commons.mail.EmailException:Sendingtheemailtothefollowingserverfailed:smtp.163.com:465atorg.apache.commons.mail.Email.sendMimeMessage(Email.java:1421)atorg.apache.commons.mail.Email.send(Email.java:1448)atcn.qb.mail.MailDemo.main(MailDemo.java:41)Causedby:javax.mail.AuthenticationFailedExceptionatjavax.mail.Service.connect(Service.java:319)atjavax.mail.Service.connect(Service.java:169)atjavax.mail.Service.connect(Service.java:118)异常的发生原因:由于发件的邮箱使用的163邮箱,而邮箱设置中没有开启POP3/STMP/IMAP的第三方邮件客户端操作。需要先使用网页登录邮箱,然后在设置中开启第三方客户端操作服务。在勾选POP3/STMP服务或者是IMAP/SMTP服务的时候会弹出下面窗口选择确定,设置授权码选择开启的时候会弹出需要通过手机验证码设置授权码输入验证码之后,点击确定:设置对应的授权码即可。在设置发件箱的账号和密码的时候,密码需要使用授权码作为密码,否则无法发送。3.3.3.邮箱开启POP3(新浪)3.4.发送带有HTML和图片的邮件/**发送包含HTML片段的邮件*/publicclassMailDemo2{publicstaticvoidmain(String[]args)throwsException{//可以发送图片和html片段的Email对象HtmlEmailmail=newHtmlEmail();//设置发送邮件的主机服务器mail.setHostName(smtp.sina.com);//设置发送邮件的端口号mail.setSmtpPort(25);//设置发送者的邮箱地址和密码mail.setAuthentication(qb_sh_test@sina.com,2015qazwsx);//设置安全连接mail.setSSLOnConnect(true);//设置发送者的邮件mail.setFrom(qb_sh_test@sina.com);//设置主题mail.setSubject(testhtml&Picture);//设置图片的网络路径URLurl=newURL();Stringcid=mail.embed(url,京东手机图片);//处理乱码问题mail.setCharset(utf-8);//将图片路径添加到邮件内容中mail.setHtmlMsg(html京东图片imgsrc=\cid:+cid+\/html);//设置邮件内容mail.setTextMsg(你的邮件不支持html格式的邮件);//设置接收者邮件mail.addTo(qubo_323@163.com);//发送邮件mail.send();}}3.5.发送带有附件的邮件/**发送附件*/publicclassMailDemo3{publicstaticvoidmain(String[]args)throwsException{EmailAttachmentattachment=newEmailAttachment();//附件内容path是磁盘本地文件路径和名称attachment.setPath(d:/1.jpg);//将网络中的文件作为附件//attachment.setURL(newURL());//表示当前设置的是附件attachment.setDisposition(EmailAttachment.ATTACHMENT);attachment.setDescription(附件描述);attachment.setName(附件名称.jpg);//创建可以发送附件的Email对象MultiPartEmailemail=newMultiPartEmail();email.setHostName(smtp.sina.com);email.setSmtpPort(25);//设置发送者的邮箱地址和密码email.setAuthentication(qb_sh_test@sina.com,2015qazwsx);//设置安全连接email.setSSLOnConnect(true);//设置发送者的邮件email.setFrom(qb_sh_test@sina.com);email.addTo(qubo_323@163.com);email.setSubject(测试附件邮件);email.setMsg(测试带有附件的邮件------这时邮件的正文内容!!!);//添加附件email.attach(attachment);//发送邮件email.send();}}

1 / 11
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功