计算机网络课程设计报告-基于SMTP协议的JAVA邮件发送程序_第1页
计算机网络课程设计报告-基于SMTP协议的JAVA邮件发送程序_第2页
计算机网络课程设计报告-基于SMTP协议的JAVA邮件发送程序_第3页
计算机网络课程设计报告-基于SMTP协议的JAVA邮件发送程序_第4页
计算机网络课程设计报告-基于SMTP协议的JAVA邮件发送程序_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机网络课程设计报告题目 基于SMTP协议的JAVA邮件发送程序问题描述根据SMTP协议,使用SMTP服务器,用java代码实现邮件的发送。概要设计将发送邮件所需要的信息,定义成了一个邮件消息实体类,MailSenderInfo,用于存储信息发送的必要信息。将程序中常用的方法,抽象出一个javaUtil工具类,直接调用详细设计程序分为2块:一为UI界面部分,对应的包为com.mial.ui。程序有两个主要窗体,即登陆窗体,发送邮件窗体。二为代码控制部分,对应的为包为com.mail.util,包括邮件发送,邮箱格式校验的逻辑。 其中,在登陆窗体上有发件人邮箱,密码的输入和登陆,在点击登陆按钮之后会触发事件监听:对输入的邮箱格式进行校验,调用工具类MailUtil.testMail()方法使用正则表达式进行模式的匹配。对邮箱,密码进行校验,调用MailUtil.testConnected()采用的方法为通过SMTP服务器向自己发邮件,如果成功返回true,进入邮件发送窗体,通过文本输入框获取目的地址,邮件内容之后,点击按钮触发事件监听。调用工具类中MailUtil.sendMail()方法,发送邮件。流程图:核心代码:publicstaticbooleantestMail(StringuserName){ //正则表达式判断邮箱格式是否正确 StringregEx="^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$"; //给定的正则表达式编译到具有给定标志的模式中。 Patternp=Ppile(regEx); //matcher是一个匹配器 //创建匹配给定输入userName与此模式的匹配器。 Matcherm=p.matcher(userName); // if(m.find()){ returntrue; }else{ returnfalse; } }publicstaticbooleansendMail(Authenticatorauth,Propertiespro, Stringsource,Stringtarget){ //通过传入的参数获得Authenticator子类对象 Sessionsession=Session.getDefaultInstance(pro,auth); //构造信息体 MimeMessagemessage=newMimeMessage(session); //发件地址 AddressfromAddress; session.setDebug(true); try{ fromAddress=newInternetAddress(source); message.setFrom(fromAddress); //收件地址 AddresstoAddress=newInternetAddress(target); /** *setRecipient(Message.RecipientTypetype,Addressaddress), *用于设置邮件的接收者。有两个参数,第一个参数是接收者的类型,第二个参数是接收者。 *接收者类型可以是Message.RecipientType.TO, *Message.RecipientType.CC和Message.RecipientType.BCC, *TO表示主要接收人,CC表示抄送人,BCC表示秘密抄送人。接收者与发送者一样,通常使用InternetAddress的对象。 */ message.setRecipient(MimeMessage.RecipientType.TO,toAddress); //邮件主题 message.setSubject(mailInfo.getSubject()); //邮件正文 message.setText(mailInfo.getContent()); //设置邮件消息发送的时间 message.setSentDate(newDate()); message.saveChanges(); Transport.send(message); returntrue; }catch(MessagingExceptione){ //TODOAuto-generatedcatchblock returnfalse; } }jb1.addActionListener(newActionListener(){ /** *登陆时进行对输入邮箱格式的验证,通过一个正则表达式; *登陆之后会给自己发条短信,验证邮箱,密码是否正确 *如果正确,返回true,同时开启一个新窗口,进行发送邮件操作 */ publicvoidactionPerformed(ActionEventarg0){ //TODOAuto-generatedmethodstub //我的登陆邮箱 StringmyMail=jtf.getText().trim()+"@"+jcb.getSelectedItem()+".com"; //登录密码 Stringpassword=newString(jpf.getPassword()); /*通过调用正则表达式进行邮箱格式的验证。*/ if(MailUtil.testMail(myMail)){ //如果匹配成功, if(MailUtil.testConected(myMail,password,"验证","登陆",jcb.getSelectedItem().toString())){ //获取一个MailSenderInfo实体。 MailSenderInfomsi=MailUtil.getMailInfo(); //打开一个发送邮件的窗口 SendEmailse=newSendEmail(myMail,password,msi); jfm.setVisible(false); }else{ JOptionPane.showMessageDialog(null,"账号密码不正确,请重新输入"); } }else{ JOptionPane.showMessageDialog(null,"邮箱格式不正确。"); } } });jb1.addActionListener(newActionListener(){ @Override publicvoidactionPerformed(ActionEventarg0){ //TODOAuto-generatedmethodstub //邮件接受人 Stringtarget=jtf.getText().trim(); //邮件主题 Stringsubject=jtf2.getText().trim(); //邮件内容 Stringcontent=jta.getText().trim(); //获取属性,方便进行传参操作, Propertiespro=mailInfo.getProperties(); mailInfo.setSubject(subject); mailInfo.setContent(content); //进行密码校验的操作, MyAuthenticatorauth=newMyAuthenticator(myMail,myPassword); if(MailUtil.testMail(target)){ try{ MailUtil.sendMail(auth,pro,myMail,target); Thread.sleep(3000); JOptionPane.showMessageDialog(null, "邮件已成功发送,点击确定继续发送新邮件"); jtf.setText(null); jtf2.setText(null); jta.setText(null); }catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } }else{ JOptionPane.showMessageDialog(null,"邮件格式不正确,点击确定重新输入"); } } });packagecom.mail.util;/***发送邮件需要使用的基本信息*/importjava.util.Properties;publicclassMailSenderInfo{ /**发送邮件的服务器的IP和端口*/ privateStringmailServerHost; privateStringmailServerPort="25"; /**邮件发送者的地址*/ privateStringfromAddress; /**邮件接收者的地址*/ privateStringtoAddress; /**登陆邮件发送服务器的用户名和密码*/ privateStringuserName; privateStringpassword; /**是否需要身份验证*/ privatebooleanvalidate=false; /**邮件主题*/ privateStringsubject; /**邮件的文本内容*/ privateStringcontent; /** *获得邮件会话属性 */ publicPropertiesgetProperties(){ Propertiesp=newProperties(); p.put("mail.smtp.host",this.mailServerHost); p.put("mail.smtp.port",this.mailServerPort); p.put("mail.smtp.auth",validate?"true":"false"); returnp; } publicStringgetMailServerHost(){ returnmailServerHost; } publicvoidsetMailServerHost(StringmailServerHost){ this.mailServerHost=mailServerHost; } publicStringgetMailServerPort(){ returnmailServerPort; } publicvoidsetMailServerPort(StringmailServerPort){ this.mailServerPort=mailServerPort; } publicbooleanisValidate(){ returnvalidate; } publicvoidsetValidate(booleanvalidate){ this.validate=validate; } publicStringgetFrStringomAddress(){ returnfromAddress; } publicvoidsetFromAddress(StringfromAddress){ this.fromAddress=fromAddress; } publicStringgetPassword(){ returnpassword; } publicvoidsetPassword(Stringpassword){ this.password=password; } publicStringgetToAddress(){ returntoAddress; } publicvoidsetToAddress(StringtoAddress){ this.toAddress=toAddress; } publicStringgetUserName(){ returnuserName; } publicvoidsetUserName(StringuserName){ this.userName=userName; } publicStringgetSubject(){ returnsubject; } publicvoidsetSubject(Stringsubject){ this.subject=subject; } publicStringgetContent(){ returncontent; } publicvoidsetContent(StringtextContent){ this.content=textContent; }}调试分析(调式过程中出现的问题及如何改正)A:UI界面编写过程中出现:FlowLayout布局太乱,不容易控制位置,采用的;B:使用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论