13实验十三 Java Mail实验.docx
- 文档编号:10518371
- 上传时间:2023-02-17
- 格式:DOCX
- 页数:12
- 大小:847.99KB
13实验十三 Java Mail实验.docx
《13实验十三 Java Mail实验.docx》由会员分享,可在线阅读,更多相关《13实验十三 Java Mail实验.docx(12页珍藏版)》请在冰豆网上搜索。
13实验十三JavaMail实验
实验十三JavaMail编程实验
实验目的
1、熟悉JavaMail体系结构
2、熟悉JavaMailAPI的主要接口和类
3、了解JavaMail简单的发送和接收编程方法
实验内容
实现简单的文本邮件的发送和接收功能。
实验操作步骤
1、为了对邮件的发送接收验证,不使用已有的邮箱,重新注册两个邮箱进行测试,一个邮箱账号:
javamail_yctc@,密码:
8888888888,另一个邮箱:
javamail_yctc@,密码:
abcdefg888888。
2、新建一个WebProject,工程名称ExperiThirteenJavaMail,在src目录下新建一个HttpServlet类SendTextMail,用于测试从sohu邮箱向126的信箱发送邮件,同时在src目录下新建一个MailAuth验证类。
SendTextMail.java的代码如下:
packagecs.javaee.javamail;
importjava.io.IOException;
importjava.util.Date;
importjava.util.Properties;
importjavax.mail.Message;
importjavax.mail.Session;
importjavax.mail.Transport;
importjavax.mail.internet.InternetAddress;
importjavax.mail.internet.MimeMessage;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importcs.javaee.javamail.auth.MailAuth;
publicclassSendTextMailextendsHttpServlet{
/**
*Constructoroftheobject.
*/
publicSendTextMail(){
super();
}
/**
*Destructionoftheservlet.
*/
publicvoiddestroy(){
super.destroy();//Justputs"destroy"stringinlog
//Putyourcodehere
}
/**
*ThedoGetmethodoftheservlet.
*
*Thismethodiscalledwhenaformhasitstagvaluemethodequalstoget.
*
*@paramrequesttherequestsendbytheclienttotheserver
*@paramresponsetheresponsesendbytheservertotheclient
*@throwsServletExceptionifanerroroccurred
*@throwsIOExceptionifanerroroccurred
*/
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{//从sohu的邮箱往126的邮箱发送邮件
Stringhost="";
StringuserName="javamail_yctc@";//pwd:
8888888888
Stringpassword="8888888888";
try{
Propertiesp=System.getProperties();
p.put("mail.smtp.host",host);
p.put("mail.smtp.auth","true");
//创建验证类对象
MailAuthauth=newMailAuth(userName,password);
//以验证方式取得连接
Sessionsession=Session.getDefaultInstance(p,auth);
//创建邮件消息
MimeMessagemessage=newMimeMessage(session);
message.setFrom(newInternetAddress(userName));
message.setRecipient(Message.RecipientType.TO,newInternetAddress("javamail_yctc@"));
message.setSubject("注册账号激活");
Stringcontent="
您好,欢迎您注册本系统
点击链接,进行账号激";message.setContent(content,"text/html;charset=GBK");
message.setSentDate(newDate());
Transport.send(message);
}catch(Exceptione){
System.out.println("发送HTML邮件错误:
"+e.getMessage());
}
}
/**
*ThedoPostmethodoftheservlet.
*
*Thismethodiscalledwhenaformhasitstagvaluemethodequalstopost.
*
*@paramrequesttherequestsendbytheclienttotheserver
*@paramresponsetheresponsesendbytheservertotheclient
*@throwsServletExceptionifanerroroccurred
*@throwsIOExceptionifanerroroccurred
*/
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
doGet(request,response);
}
/**
*Initializationoftheservlet.
*
*@throwsServletExceptionifanerroroccurs
*/
publicvoidinit()throwsServletException{
//Putyourcodehere
}
}
MailAuth.java的代码如下:
packagecs.javaee.javamail.auth;
importjavax.mail.Authenticator;
importjavax.mail.PasswordAuthentication;
publicclassMailAuthextendsAuthenticator{
StringuserName=null;
Stringpassword=null;
publicMailAuth(StringuserName,Stringpassword){
this.userName=userName;
this.password=password;
}
@Override
protectedPasswordAuthenticationgetPasswordAuthentication(){
//TODOAuto-generatedmethodstub
returnnewPasswordAuthentication(userName,password);
}
}
3、发布测试,地址栏中输入http:
//localhost:
8080/ExperiThirteenJavaMail
/servlet/SendTextMail页面没有显示信息,直接打开126的信箱,可以查看到如图1所示的126信箱的邮件列表,最新两个邮件就是从sohu邮箱发送过来的信件。
打开其中的邮件,显示如图2所示的邮件的具体内容。
图1126信箱的收件箱列表
图2邮件具体内容
4、再测试邮件的接收。
测试邮件接收,首先所使用的邮箱服务器要开启pop3服务。
图3所示是126提示的pop3协议未开启。
按照邮件内容开启pop3服务,如图4所示。
然后再进行读取邮件内容的测试。
图3开启pop3服务提示
图4开启pop3服务
5、新建一个HttpServlet类ReceiveTextMail,用于接收126信箱的邮件,代码如下:
packagecs.javaee.javamail;
importjava.io.IOException;
importjava.io.PrintWriter;
importjava.util.Properties;
importjavax.mail.Folder;
importjavax.mail.Message;
importjavax.mail.Session;
importjavax.mail.Store;
importjavax.mail.internet.InternetAddress;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
publicclassReceiveTextMailextendsHttpServlet{
/**
*Constructoroftheobject.
*/
publicReceiveTextMail(){
super();
}
/**
*Destructionoftheservlet.
*/
publicvoiddestroy(){
super.destroy();//Justputs"destroy"stringinlog
//Putyourcodehere
}
/**
*ThedoGetmethodoftheservlet.
*
*Thismethodiscalledwhenaformhasitstagvaluemethodequalstoget.
*
*@paramrequesttherequestsendbytheclienttotheserver
*@paramresponsetheresponsesendbytheservertotheclient
*@throwsServletExceptionifanerroroccurred
*@throwsIOExceptionifanerroroccurred
*/
/*接收并显示收件箱中所有Mail并显示标题和发件人,以接收126信箱为例*/
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
Storestore=null;
Folderfolder=null;
response.setContentType("text/html");
response.setCharacterEncoding("GBK");
PrintWriterout=response.getWriter();
out.println("
DOCTYPEHTMLPUBLIC\"-//W3C//DTDHTML4.01Transition//EN\">");
out.println("");
out.println("
out.println("
");try{
Propertiesp=newProperties();
Sessionsession=Session.getDefaultInstance(p,null);
store=session.getStore("pop3");
store.connect("","javamail_yctc@","abcdefg888888");
folder=store.getFolder("INBOX");
folder.open(Folder.READ_ONLY);
Message[]message=folder.getMessages();
for(inti=0;i out.println(message[i].getSubject()+"--"+message[i].getFrom().toString()); //out.println(message[i].getSubject()+"--"+message[i].getInputStream().toString());//显示每封邮件的内容 out.println(" } folder.close(false); store.close(); }catch(Exceptione){ out.println("接收Mail错误: "+e.getMessage()); } out.println(""); out.println(""); out.flush(); out.close(); } /** *ThedoPostmethodoftheservlet. * *Thismethodiscalledwhenaformhasitstagvaluemethodequalstopost. * *@paramrequesttherequestsendbytheclienttotheserver *@paramresponsetheresponsesendbytheservertotheclient *@throwsServletExceptionifanerroroccurred *@throwsIOExceptionifanerroroccurred */ publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ doGet(request,response); } /** *Initializationoftheservlet. * *@throwsServletExceptionifanerroroccurs */ publicvoidinit()throwsServletException{ //Putyourcodehere } } 6、在测试之前先打开126信箱查看邮箱的内容,如图5所示。 图5126信箱的收件箱邮件列表 7、重新部署测试,在地址栏输入http: //localhost: 8080/ExperiThirteenJavaMail/servlet/ ReceiveTextMail,弹出如图6所示的信息,显示已经接收到邮件列表中的邮件标题。 如果要接收具体内容,可以修改相应的方法即可。 图6接收到的邮件 扩展: 使用servlet访问邮箱,操作上不直观,可改善这一功能,设计JSP页面,从使用者的角度,完善邮件的发送和接收功能。
");
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 13实验十三 Java Mail实验 13 实验 十三 Mail