基于Javamail的邮件收发系统-使用说明
【优秀文档】基于Java Mail的电子邮件收发系统毕业设计.doc
【优秀文档】基于Java Mail的电子邮件收发系统毕业设
计.doc
1、••错误!未定义书签。
••…错误!未定义书签。
2••…错误!未定义书签。
666779910••错误!未定义书签。
12131415第1章概述1」讨论H的和意义1.2国内外进展趋势和现状1.3系统特点第2章相关技术和工具简介2.1Swing简介2.2JavaMail简介2.3Java平台简介2.4Eclipse简介第3章系统需求分析和总体设计.3.1用户对电子邮件系统的需求3.2产殆可行性分析3.3系统总体设计_331电子邮件系统的功能・3.3.2电子邮件收发过程・•・3.3.3服务器参数的设置第4章具体设计4.1登录功能的设计错误!未定义书签。
4.2发送邮件的设计错误!未定义书签。
4.3接收邮件的设计错误!未定义书签。
4.4邮件管理的设
2、计错误!未定义书签。
第5章系统功能的编码实现错误!未定义书签。
5.1用户登录界而的实现错误!未定义书签。
5.2主界面的实现195.3邮件配置界面的实现205.4发送邮件界面的实现215.5接收邮件界面的实现错误!未定义书签。
第6章系统实现的功能测试错误!未定义书签。
6.1登录测试错误!未定义书签。
6.2发送测试错误!未定义书签。
6.3接收邮件测试错误!未定义书签。
6.4查看邮件测试错误!未定义书签。
6.5删除邮件测试错误!未定义书签。
第7章总结错误!未定义书签。
第1页。
javamail收发邮件(带附件,正文带图)
1.邮件1.1 邮件组成部分如果是新邮件就获取,并解析它;邮件是由邮件头和邮件体组成,在邮件头中主要包含了收件人、发件人、主题等等基础信息。
而邮件体中就包括了邮件的正文和附件等内容信息。
下图就是pop3协议下,邮件的大致内容。
1.2 发送邮件(带附件、正文带图片)QQ邮箱为例:需要QQ账号和QQ登录第三方客户端时,密码框的“授权码”(相当于密码)授权码如下获取:代码如下:public class JavaMailboxAttachment {private MimeMessage message;private Session session;private String mailHost = "";private String mailAuth = "";private String mailPort = "";private String sender_username = "";private String sender_password = "";//定义一个Properties 用于存放信息private Properties properties = new Properties();//-------------------------------发信箱---------------------------------------------public JavaMailboxAttachment(String email_type) {try {properties.put("mail.smtp.host",""); //发送邮件服务器//端口号,QQ邮箱给出了两个端口,但是另一个我一直使用不了,所以就给出这一个587properties.put("mail.smtp.port", "587"); //发送邮件端口号properties.put("mail.smtp.auth", "true");// 此处填写你的账号properties.put("er", "xxxxxxxxx@");// 此处的密码就是前面说的16位STMP授权码properties.put("mail.password", "xxxxxxxxxxxxxxxx");this.mailHost = properties.getProperty("mail.smtp.host");this.mailAuth = properties.getProperty("mail.smtp.auth");this.mailPort = properties.getProperty("mail.smtp.port");this.sender_username = properties.getProperty("er");this.sender_password = properties.getProperty("mail.password");} catch (Exception e) {e.printStackTrace();}// 构建授权信息,用于进行SMTP进行身份验证Authenticator authenticator = new Authenticator() {protected PasswordAuthentication getPasswordAuthentication() {// 用户名、密码String userName = properties.getProperty("er");String password = properties.getProperty("mail.password");return new PasswordAuthentication(userName, password);}};session = Session.getInstance(properties,authenticator); //用户验证message = new MimeMessage(session); //将验证成功的session信息,创建一个message 对象。
JavaMail组件实现邮件功能
JavaMail组件实现邮件功能实现邮件收发功能需要3个jar包:1.JavaMail组件保内的mail.jar和smtp.jar包2.JAF组件包⾥的activition.jar。
复制到WebRoot/WEB-INF/lib⽬录下。
⼀、编写index.jsp页⾯,具体代码如下:1 <%@ page language="java" contentType="text/html; charset=gb2312"2 pageEncoding="gb2312"%>3<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd">4<html>5<head>6<meta http-equiv="Content-Type" content="text/html; charset=gb2312">7<title>welcome</title>8</head>9<body>10<form action="sendMail.jsp" method="post" name="form1">11<table width="75" border="0" align="center" cellspacing="1"12 bgcolor="#006600" class="black">13<tr bgcolor="#ffffff">14<td width="24%">收信⼈地址:</td>15<td width="76%"><input name="to" type="text" id="to"></td>16</tr>17<tr bgcolor="#ffffff">18<td >主题:</td>19<td ><input name="title" type="text" id="title"></td>20</tr>21<tr>22<td height="18" colspan="2" bgcolor="#ffffff">23信件类型24<select name="emailtype" id="emailtype">25<option value="text/plain" selected>Text</option>26<option value="text/html" selected>Html</option>27</select>28</td>29</tr>30<tr>31<td height="53" colspan="2" bgcolor="#ffffff">32<textarea rows="5" cols="50" name="content" id="content"></textarea>33</td>34</tr>35<tr align="center">36<td colspan="2" bgcolor="#ffffff">37附件1(⾃定义):38<input name="fj1" type="text" id="fj1">39 (输⼊⽂本信息)40</td>41</tr>42<tr align="center" valign="bottom">43<td colspan="2" bgcolor="#ffffff">44附件2(本地):45<input name="fj2" type="file" id="fj2" size="10">46</td>47</tr>48<tr align="center">49<td colspan="2" bgcolor="#ffffff">50附件3(远程):51<input name="fj3" type="text" id="fj3" value="http://">52 (输⼊URL)53</td>54</tr>55<tr align="center">56<td colspan="2" bgcolor="#ffffff">5758<input name="submit" type="submit" value="发送">59<input name="submit2" type="reset" value="重置">60</td>61</tr>62</table>63</form>64</body>65</html>⼆、创建sendMail.jsp页⾯,具体代码如下:<%@ page language="java" contentType="text/html; charset=gb2312"pageEncoding="gb2312"%><%request.setCharacterEncoding("gb2312"); %><%@ page import="java.util.*,javax.mail.*" %><%@ page import="javax.mail.internet.*"%><%@ page import="javax.activation.*" %><%@ page import=".*" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"> <html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>Insert title here</title></head><body><%try{String tto=request.getParameter("to");String ttitle=request.getParameter("title");String emailtype=request.getParameter("emailtype");String tcontent=request.getParameter("content");String tfj1=request.getParameter("fj1");String tfj2=request.getParameter("fj2");String tfj3=request.getParameter("fj3");//声明properities存储发件服务器信息Properties props=new Properties();props.put("mail.smtp.host", "");props.put("mail.smtp.auth", "true");//创建邮件回话Session s=Session.getInstance(props);s.setDebug(true);//创建⼀个消息对象MimeMessage message=new MimeMessage(s);InternetAddress from=new InternetAddress("393743083@");message.setFrom(from);InternetAddress to=new InternetAddress(tto);message.setRecipient(Message.RecipientType.TO, to);message.setSubject(ttitle);message.setSentDate(new Date());Multipart mm = new MimeMultipart();BodyPart mdp=new MimeBodyPart();mdp.setContent(tcontent, emailtype+";charset=gb2312");mm.addBodyPart(mdp);//附件1mdp=new MimeBodyPart();DataHandler dh=new DataHandler(tfj1,"text/plain;charset=gb2312");mdp.setFileName("text.txt");mdp.setDataHandler(dh);mm.addBodyPart(mdp);//附件2mdp=new MimeBodyPart();FileDataSource fds=new FileDataSource(tfj2);dh=new DataHandler(fds);int ddd=stIndexOf("\\");String fname=tfj2.substring(ddd);String ffname=new String(fname.getBytes("gb2312"),"ISO8859-1");mdp.setFileName(ffname);mdp.setDataHandler(dh);mm.addBodyPart(mdp);//附件3mdp=new MimeBodyPart();URL urlfj=new URL(tfj3);URLDataSource ur=new URLDataSource(urlfj);dh=new DataHandler(ur);int ttt=stIndexOf("/");String urlname=tfj3.substring(ttt);mdp.setFileName(urlname);mdp.setDataHandler(dh);mm.addBodyPart(mdp);message.setContent(mm);message.saveChanges();//发送邮件Transport transport=s.getTransport("smtp");transport.connect("",⽤户名,密码);transport.sendMessage(message, message.getAllRecipients());transport.close();%><div align="center"><p><font color="#ff6600">发送成功</font></p><br><a href="sendMail.jsp">再来⼀封</a></div><%}catch(MessagingException e){out.println(e.toString());}%></body></html> 注:腾讯邮箱需要开通smtp功能。
javaMail使用说明
本软件包包括源文件和可执行的jar文件1.运行方式A 可以直接运行jar文件(电脑上必须安装jdk1.6而且关联jar文件)B 可以用eclipse导入源文件然后运行2 功能简介a.登录界面选择相应的邮箱smtp服务器(也可以自己输入),然后输入账号和密码单击登录就可登录进系统。
图1.0 登录界面b.登录成功以后界面如下图1.1 登录成功页面本页面包括基本的菜单、联系人列表和浏览区图1.2 发送邮件界面通过发送邮件界面可以对要发送的邮件进行简单的编辑。
当然双击左侧栏的联系人可以直接将联系人添加到“收件人”或“抄送人”列表中。
页面如图1.3图1.3 添加联系人列表通过简单的编辑界面可以对邮件进行简单的编辑界面如图1.4当单击添加附件按钮时弹出对话框来选择附件。
界面如图1.5选中文件单击确定后讲附件添加到附件列表中,界面如图1.6图1.6 附件列表界面当点击发送按钮式邮件将进行发送。
发送过程中会有进度条提示发送邮件的进度。
发送成功会提示邮件发送成功。
在邮件编辑区邮件会列出简单的编辑工具弹出菜单,界面如图1.7图1.7 邮件菜单编辑当单击收件夹时弹出收件夹界面,单击收件夹的同时会自动加载收件夹中的邮件信息。
收件夹界面如图1.8图1.8 收件夹界面双击收件夹中邮件列表中的信息时。
会显示该邮件的具体内容界面如图1.9图1.9 邮件内容显示选中邮件列表信息是鼠标右键会弹出相应的菜单项(删除、彻底删除邮件、刷新邮件列表信息等)界面如图2.0图2.0 收件箱邮件菜单项单选择删除时会将邮件添加到已删除邮件列表中,单击彻删除邮件时会将邮件从服务器上删除。
单击刷新邮件箱时会更新收件箱邮件列表信息。
已删除邮件列表如图2.1】图2.1 已删除邮件列表当发送成功一封新邮件时,会将已发送的邮件添加到已发送邮件列表中已发送邮件列表如图2.2当单击添加联系人按钮时会弹出添加联系人界面:界面如图2.3图2.3 添加联系人界面当在联系人界面添加联系人之后会在列表中列出添加的联系人,界面如图2.4单击删除联系人可以删除选中的联系人信息,界面如图2.5图2.5 删除联系人信息另外当有新的邮件到达时会播放新邮件到达声音,系统图盘图标也会闪动界面如图2.6图2.6 系统图标。
javaEmail邮件接收
使用javamail接收电子邮件代码import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Properties;import javax.mail.BodyPart;import javax.mail.Flags;import javax.mail.Folder;import javax.mail.Message;import javax.mail.MessagingException;import javax.mail.Multipart;import javax.mail.Part;import javax.mail.Session;import javax.mail.Store;import javax.mail.URLName;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeUtility;/*** 有一封邮件就需要建立一个ReciveMail对象*/public class ReciveMail {private MimeMessage mimeMessage = null;private String saveAttachPath = ""; //附件下载后的存放目录private StringBuffer bodytext = new StringBuffer();//存放邮件内容private String dateformat = "yy-MM-dd HH:mm"; //默认的日前显示格式public ReciveMail(MimeMessage mimeMessage) {this.mimeMessage = mimeMessage;}public void setMimeMessage(MimeMessage mimeMessage) {this.mimeMessage = mimeMessage;}/*** 获得发件人的地址和姓名*/public String getFrom() throws Exception {InternetAddress address[] = (InternetAddress[]) mimeMessage.getFrom();String from = address[0].getAddress();if(from == null)from = "";String personal = address[0].getPersonal();if(personal == null)personal = "";String fromaddr = personal + "<" + from + ">";return fromaddr;}/*** 获得邮件的收件人,抄送,和密送的地址和姓名,根据所传递的参数的不同"to"----收件人"cc"---抄送人地址"bcc"---密送人地址*/public String getMailAddress(String type) throws Exception {String mailaddr = "";String addtype = type.toUpperCase(); InternetAddress[] address = null;if(addtype.equals("TO") || addtype.equals("CC")|| addtype.equals("BCC")) {if(addtype.equals("TO")) {address = (InternetAddress[]) mimeMessage.getRecipients(Message.RecipientType.TO);} else if(addtype.equals("CC")) {address = (InternetAddress[]) mimeMessage.getRecipients();} else{address = (InternetAddress[]) mimeMessage.getRecipients(Message.RecipientType.BCC);}if(address != null) {for(int i = 0; i < address.length; i++) {String email = address[i].getAddress();if(email == null)email = "";else{email = MimeUtility.decodeText(email);}String personal = address[i].getPersonal();if(personal == null)personal = "";else{personal = MimeUtility.decodeText(personal);}String compositeto = personal + "<" + email + ">"; mailaddr += "," + compositeto;}mailaddr = mailaddr.substring(1);}} else{throw new Exception("Error emailaddr type!");}return mailaddr;}/*** 获得邮件主题*/public String getSubject() throws MessagingException {String subject = "";try{subject = MimeUtility.decodeText(mimeMessage.getSubject());if(subject == null)subject = "";} catch(Exception exce) {}return subject;}/*** 获得邮件发送日期*/public String getSentDate() throws Exception {Date sentdate = mimeMessage.getSentDate(); SimpleDateFormat format = new SimpleDateFormat(dateformat); return format.format(sentdate);}/*** 获得邮件正文内容*/public String getBodyText() {return bodytext.toString();}/*** 解析邮件,把得到的邮件内容保存到一个StringBuffer对象中,解析邮件主要是根据MimeType类型的不同执行不同的操作,一步一步的解析*/public void getMailContent(Part part) throws Exception {String contenttype = part.getContentType();int nameindex = contenttype.indexOf("name");boolean conname = false;if(nameindex != -1)conname = true;System.out.println("CONTENTTYPE: " + contenttype);if(part.isMimeType("text/plain") && !conname) {bodytext.append((String) part.getContent());} else if(part.isMimeType("text/html") && !conname) {bodytext.append((String) part.getContent());} else if(part.isMimeType("multipart/*")) {Multipart multipart = (Multipart) part.getContent();int counts = multipart.getCount();for(int i = 0; i < counts; i++) {getMailContent(multipart.getBodyPart(i));} else if(part.isMimeType("message/rfc822")) { getMailContent((Part) part.getContent());} else{}}/*** 判断此邮件是否需要回执,如果需要回执返回"true",否则返回"false" */public boolean getReplySign() throws MessagingException { boolean replysign = false;String needreply[] = mimeMessage.getHeader("Disposition-Notification-To");if(needreply != null) {replysign = true;}return replysign;}/*** 获得此邮件的Message-ID*/public String getMessageId() throws MessagingException { return mimeMessage.getMessageID();}/*** 【判断此邮件是否已读,如果未读返回返回false,反之返回true】*/public boolean isNew() throws MessagingException { boolean isnew = false;Flags flags = ((Message) mimeMessage).getFlags();Flags.Flag[] flag = flags.getSystemFlags();System.out.println("flags's length: " + flag.length);for(int i = 0; i < flag.length; i++) {if(flag[i] == Flags.Flag.SEEN) {isnew = true;System.out.println("seen Message.");break;}}return isnew;}/*** 判断此邮件是否包含附件*/public boolean isContainAttach(Part part) throws Exception { boolean attachflag = false;//String contentType = part.getContentType();if(part.isMimeType("multipart/*")) {Multipart mp = (Multipart) part.getContent();for(int i = 0; i < mp.getCount(); i++) {BodyPart mpart = mp.getBodyPart(i);String disposition = mpart.getDisposition();if((disposition != null)&& ((disposition.equals(Part.ATTACHMENT)) || (disposition.equals(Part.INLINE))))attachflag = true;else if(mpart.isMimeType("multipart/*")) {attachflag = isContainAttach((Part) mpart);} else{String contype = mpart.getContentType();if(contype.toLowerCase().indexOf("application") != -1) attachflag = true;if(contype.toLowerCase().indexOf("name") != -1) attachflag = true;}}} else if(part.isMimeType("message/rfc822")) { attachflag = isContainAttach((Part) part.getContent());}return attachflag;}/*** 【保存附件】*/public void saveAttachMent(Part part) throws Exception { String fileName = "";if(part.isMimeType("multipart/*")) {Multipart mp = (Multipart) part.getContent();for(int i = 0; i < mp.getCount(); i++) {BodyPart mpart = mp.getBodyPart(i);String disposition = mpart.getDisposition();if((disposition != null)&& ((disposition.equals(Part.ATTACHMENT)) || (disposition .equals(Part.INLINE)))) {fileName = mpart.getFileName();if(fileName.toLowerCase().indexOf("gb2312") != -1) {fileName = MimeUtility.decodeText(fileName);}saveFile(fileName, mpart.getInputStream());} else if(mpart.isMimeType("multipart/*")) { saveAttachMent(mpart);} else{fileName = mpart.getFileName();if((fileName != null)&& (fileName.toLowerCase().indexOf("GB2312") != -1)) { fileName = MimeUtility.decodeText(fileName);saveFile(fileName, mpart.getInputStream());}}}} else if(part.isMimeType("message/rfc822")) { saveAttachMent((Part) part.getContent());}}/*** 【设置附件存放路径】*/public void setAttachPath(String attachpath) {this.saveAttachPath = attachpath;}/*** 【设置日期显示格式】*/public void setDateFormat(String format) throws Exception {this.dateformat = format;}/*** 【获得附件存放路径】*/public String getAttachPath() {return saveAttachPath;}/*** 【真正的保存附件到指定目录里】*/private void saveFile(String fileName, InputStream in) throws Exception { String osName = System.getProperty("");String storedir = getAttachPath();String separator = "";if(osName == null)osName = "";if(osName.toLowerCase().indexOf("win") != -1) {separator = "\\";if(storedir == null|| storedir.equals(""))storedir = "c:\\tmp";} else{separator = "/";storedir = "/tmp";}File storefile = new File(storedir + separator + fileName);System.out.println("storefile's path: " + storefile.toString());// for(int i=0;storefile.exists();i++){// storefile = new File(storedir+separator+fileName+i);// }BufferedOutputStream bos = null;BufferedInputStream bis = null;try{bos = new BufferedOutputStream(new FileOutputStream(storefile)); bis = new BufferedInputStream(in);int c;while((c = bis.read()) != -1) {bos.write(c);bos.flush();}} catch(Exception exception) {exception.printStackTrace();throw new Exception("文件保存失败!");} finally{bos.close();bis.close();}}/*** PraseMimeMessage类测试*/public static void main(String args[]) throws Exception {Properties props = System.getProperties();props.put("mail.smtp.host", "");props.put("mail.smtp.auth", "true");Session session = Session.getDefaultInstance(props, null);URLName urln = new URLName("pop3", "", 110, null,"xxxxxx", "*******");Store store = session.getStore(urln);store.connect();Folder folder = store.getFolder("INBOX");folder.open(Folder.READ_ONLY);Message message[] = folder.getMessages();System.out.println("您有邮件: "+ message.length+ "封");ReciveMail pmm = null;for(int i = 0; i < message.length; i++) {System.out.println("==============================第"+(i+1)+"封===== ======================");pmm = new ReciveMail((MimeMessage) message[i]);System.out.println("Message " + i + " subject: " + pmm.getSubject());System.out.println("Message " + i + " sentdate: "+ pmm.getSentDate());System.out.println("Message " + i + " replysign: "+ pmm.getReplySign());System.out.println("Message " + i + " hasRead: " + pmm.isNew());System.out.println("Message " + i + " containAttachment: "+ pmm.isContainAttach((Par t) message[i]));System.out.println("Message " + i + " form: " + pmm.getFrom());System.out.println("Message " + i + " to: "+ pmm.getMailAddress("to"));System.out.println("Message " + i + " cc: "+ pmm.getMailAddress("cc"));System.out.println("Message " + i + " bcc: "+ pmm.getMailAddress("bcc"));pmm.setDateFormat("yy年MM月dd日HH:mm");System.out.println("Message " + i + " sentdate: "+ pmm.getSentDate());System.out.println("Message " + i + " Message-ID: "+ pmm.getMessageId());// 获得邮件内容===============pmm.getMailContent((Part) message[i]);System.out.println("Message " + i + " bodycontent: \r\n"+ pmm.getBodyText()); pmm.setAttachPath("c:\\ddd");pmm.saveAttachMent((Part) message[i]);}}}使用JavaMail接收邮件 2008年10月08日Blog 沈斌代码如下:package demo;import Java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.util.Properties;import javax.mail.BodyPart;import javax.mail.Folder;import javax.mail.Message;import javax.mail.Multipart;import javax.mail.Part;import javax.mail.Session;import javax.mail.Store;import sun.misc.BASE64Decoder;public class MailReceiver ...{public static void main(String[] args) ...{MailReceiver receiver = new MailReceiver();receiver.setHost("");receiver.setUsername("xxxxxxxxx");receiver.setPassword("yyyyyyyyy");receiver.setAttachPath("C:email");try ...{receiver.reveiveMail();} catch (Exception e) ...{e.printStackTrace();}}public void reveiveMail() throws Exception ...{Properties props = new Properties();Session session = Session.getDefaultInstance(props, null);Store store = session.getStore("pop3");store.connect(getHost(), getUsername(), getPassword());Folder folder = store.getFolder("INBOX");folder.open(Folder.READ_ONLY);Message message[] = folder.getMessages();System.out.println("Messages's length: " + message.length);//FetchProfile profile = new FetchProfile();//profile.add(FetchProfile.Item.ENVELOPE);//folder.fetch(message, profile);for (int i = 0; i < message.length; i++) ...{//message[i].setFlag(Flags.Flag.DELETED, true);//必须先设置:folder.open(Folder.READ_WR ITE);handleMultipart(message[i]);}if (folder != null) ...{folder.close(true);}if (store != null) ...{store.close();}}private void handleMultipart(Message msg) throws Exception ...{String disposition;Multipart mp = (Multipart) msg.getContent();int mpCount = mp.getCount();for (int m = 0; m < mpCount; m++) ...{handle(msg);BodyPart part = mp.getBodyPart(m);disposition = part.getDisposition();if (disposition != null && disposition.equals(Part.ATTACHMENT)) ...{saveAttach(part, getAttachPath());} else ...{System.out.println(part.getContent());}}}private static void handle(Message msg) throws Exception ...{System.out.println("邮件主题:" + msg.getSubject());System.out.println("邮件作者:" + msg.getFrom()[0].toString());System.out.println("发送日期:" + msg.getSentDate());}private static void saveAttach(BodyPart part, String filePath) throws Exception ...{String temp = part.getFileName();String s = temp.substring(8, temp.indexOf("?="));String fileName = base64Decoder(s);System.out.println("有附件:" + fileName);InputStream in = part.getInputStream();FileOutputStream writer = new FileOutputStream(new File(filePath + "" + fileName));byte[] content = new byte[255];while ((in.read(content)) != -1) ...{writer.write(content);}writer.close();in.close();}private static String base64Decoder(String s) throws Exception ...{BASE64Decoder decoder = new BASE64Decoder();byte[] b = decoder.decodeBuffer(s);return (new String(b));}private String host = null;private String username = null;private String password = null;private String attachPath = null;public String getAttachPath() ...{return attachPath;}public void setAttachPath(String attachPath) ...{this.attachPath = attachPath;public String getHost() ...{return host;}public void setHost(String host) ...{this.host = host;}public String getUsername() ...{return username;}public void setUsername(String username) ...{ ername = username;}public String getPassword() ...{return password;}public void setPassword(String password) ...{ this.password = password;}。
基于Javamail的邮件收发系统-任务书
信息科学与工程学院09 届本科生毕业设计(论文)任务书学院信息科学与工程学院专业计算机科学与技术(师范)班级学号学生姓名指导教师一、论文题目基于Javamail的邮件收发系统二、内容和要求1.总体目标及性能(参数)要求(1)系统功能基本完善。
(2)系统具有良好的用户界面。
(3)系统具有较好的人机交互性、易于使用。
(4)系统可靠、稳定,具有一定的应用价值。
2.研究内容及拟采用的技术路线●研究内容:(1)邮件服务器的工作原理。
(2)DNS服务器的工作原理。
(3)SMTP、POP3、MIME协议。
(4)设计并实现基于Javamail的邮件收发系统,要求系统具有邮件接收、发送等基本功能。
●采用的技术路线:(1)开发工具采用Java+JavaMail API。
(2)数据库采用MySQL或SQL Server。
3.参考文献(10篇以上)[1] Java邮件开发详解。
张孝祥。
电子工业出版社,2007。
[2] Java高级程序设计。
王路群主编。
中国水利水电出版社, 2006 。
[3] Java课程设计。
黄明, 梁旭, 周绍斌编著。
电子工业出版社, 2006。
[4] Java开发与应用教程。
王吴迪, 赵枫朝等编著。
电子工业出版社, 2006。
[5] Java程序设计大学教程。
刘艺等编著。
机械工业出版社, 2006。
[6] Java数据库高级编程宝典。
陈天河编著。
电子工业出版社, 2005。
[7] Java程序设计与应用开发。
於东军等编著。
清华大学出版社, 2005。
[8] Java语言程序设计实训。
赵海廷主编。
武汉大学出版社, 2005。
[9] Java program design。
Cohoon, James P.,Davidson, Jack W。
McGraw-Hill Higher Education, 2004。
[10] Thinking in Java。
Eckel, Bruce。
Prentice Hall, c2000。
JavaMail接收与发送邮件
JavaMail接收与发送邮件一、RFC882文档简单说明RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封简单的邮件包含邮件头和邮件体两个部分,邮件头和邮件体之间使用空行分隔。
邮件头包含的内容有:1.from字段--用于指明发件人2.to字段 --用于指明收件人3.subject字段 --用于说明邮件主题字段 -- 抄送,将邮件发送给收件人的同时抄送给另一个收件人,收件人可以看到邮件抄送给了谁5.bcc字段 -- 密送,将邮件发送给收件人的同时将邮件秘密发送给另一个收件人,收件人无法看到邮件密送给了谁邮件体指的就是邮件的具体内容。
二、MIME协议简单介绍在我们的实际开发当中,一封邮件既可能包含图片,又可能包含有附件,在这样的情况下,RFC882文档规定的邮件格式就无法满足要求了。
MIME协议是对RFC822文档的升级和补充,它描述了如何生产一封复杂的邮件。
通常我们把MIME协议描述的邮件称之为MIME邮件。
MIME协议描述的数据称之为MIME消息。
对于一封复杂邮件,如果包含了多个不同的数据,MIME协议规定了要使用分隔线对多段数据进行分隔,并使用Content-Type头字段对数据的类型、以及多个数据之间的关系进行描述。
三、使用JavaMail创建邮件和发送邮件JavaMail创建的邮件是基于MIME协议的。
因此可以使用JavaMail创建出包含图片,包含附件的复杂邮件。
3.1、JavaMail API的简单介绍3.2、创建邮件发送测试项目3.3、发送一封只包含文本的简单邮件1package me.gacl.main;23import java.util.Properties;4import javax.mail.Message;5import javax.mail.Session;6import javax.mail.Transport;7import javax.mail.internet.InternetAddress;8import javax.mail.internet.MimeMessage;910/**11* @ClassName: Sendmail12* @Description: 发送Email13* @author: admin14* @date: 2015-1-12 下午9:42:5615*16*/17public class Sendmail {1819/**20* @param args21* @throws Exception22*/23public static void main(String[] args) throws Exception {2425Properties prop = new Properties();26prop.setProperty("mail.host", "");27prop.setProperty("mail.transport.protocol", "smtp");28prop.setProperty("mail.smtp.auth", "true");29//使用JavaMail发送邮件的5个步骤30//1、创建session31Session session = Session.getInstance(prop);32//开启Session的debug模式,这样就可以查看到程序发送Email的运行状态33session.setDebug(true);34//2、通过session得到transport对象35Transport ts = session.getTransport();36//3、使用邮箱的用户名和密码连上邮件服务器,发送邮件时,发件人需要提交邮箱的用户名和密码给smtp服务器,用户名和密码都通过验证之后才能够正常发送邮件给收件人。
Java基于JavaMail实现向QQ邮箱发送邮件
Java基于JavaMail实现向QQ邮箱发送邮件最近项⽬在做新闻爬⾍,想实现这个功能:爬⾍某个页⾯失败后,把这个页⾯的 url 发到邮箱。
最终实现的效果图如下,后期可以加上过滤标签、失败状态码等,⽅便分类搜索异常。
开发⼈员可以根据邮件⾥的 url 和堆栈信息,分析爬⾍失败的原因。
是不是服务器 down 了?还是爬⾍的 Dom 解析没有解析到内容?还是正则表达式对于这个页⾯不适⽤?开启SMTP服务在 QQ 邮箱⾥的设置->账户⾥开启 SMTP 服务注意开启完之后,QQ 邮箱会⽣成⼀个授权码,在代码⾥连接邮箱使⽤这个授权码⽽不是原始的邮箱密码,这样可以避免使⽤明⽂密码。
⽹上查了⼀下例⼦,根据这篇⽂章 Java Mail(⼆):JavaMail介绍及发送⼀封简单邮件的⽰例代码。
Properties props = new Properties();// 开启debug调试props.setProperty("mail.debug", "true");// 发送服务器需要⾝份验证props.setProperty("mail.smtp.auth", "true");// 设置邮件服务器主机名props.setProperty("mail.host", "");// 发送邮件协议名称props.setProperty("mail.transport.protocol", "smtp");Session session = Session.getInstance(props);//邮件内容部分Message msg = new MimeMessage(session);msg.setSubject("seenews 错误");StringBuilder builder = new StringBuilder();builder.append("url = " + "/never_cxb/article/details/50524571");builder.append("页⾯爬⾍错误");builder.append("\n data " + TimeTool.getCurrentTime());msg.setText(builder.toString());//邮件发送者msg.setFrom(new InternetAddress("**发送⼈的邮箱地址**"));//发送邮件Transport transport = session.getTransport();transport.connect("", "**发送⼈的邮箱地址**", "**你的邮箱密码或者授权码**");transport.sendMessage(msg, new Address[] { new InternetAddress("**接收⼈的邮箱地址**") });transport.close();但是报错了DEBUG SMTP: AUTH LOGIN command trace suppressedDEBUG SMTP: AUTH LOGIN failedException in thread "main" javax.mail.AuthenticationFailedException: 530Error: A secure connection is requiered(such as ssl). More information at /cgi-bin/help?id=28因为⽰例代码是⽤的163邮箱,⽽笔者是 QQ 邮箱,看 Log 分析是 QQ 邮箱需要 SSL 加密。
基于Javamail的邮件收发系统-JAVA毕业设计论文
毕业设计(论文)( 20 届)论文(设计)题目基于Javamail的邮件收发系统作者二级学院、专业班级指导教师(职称)论文字数论文完成时间20年月日基于JavaMail的邮件收发系统摘要电子邮件在当今社会中扮演了一个很重要的角色。
越来越多的人在使用它。
而且用它的人数势必会继续增加。
本文介绍了Javamail邮件收发系统的开发背景,对国内外现有的多种成熟的电子邮件系统进行分析和比较,总结出它们的优缺点,对Javamail技术进行深入研究,提出并设计实现了基于Javamail的邮件收发系统。
本系统利用SMTP协议和POP协议从底层进行开发,利用JavaMail API为收发邮件提供与协议无关的访问。
SMTP(简单邮件传输协议)是专门用来发送邮件的。
POP (邮局协议)是专门用于接收邮件的。
JavaMail API是一种可选的、能用于读取、编写和发送电子消息的标准扩展包。
本文主要可分为四个部分。
第一部分介绍了Javamail邮件系统的意义和现状。
第二部分具体介绍了几种相关协议和Javamail API。
第三部分主要介绍了系统的开发工具JA V A语言、Eclipse及其安装过程与配置方法。
第四部分详细阐述了Javamail邮件收发系统的实现过程。
关键词:SMTP,POP,JA V AMAIL,邮件收发MAIL SYSTEM BASED ON JAVAMAILABSTRACTE-Mail play a very important role in modern times. More and more people are using it, and the number of it will larger and larger. This paper introduced the javamail system's development background, analyzed and compared some existing maturity Email system at home and abroad , summarized their advantages and disadvantages, studied deeply with the javamail technology , proposed and designed out the mail system based on javamail. This system used POP protocol and SMTP protocol to develop from the bottom, used JavaMail API to provide the visit which has nothing to do with the agreement for send and receive email. SMTP (Simple Mail Transfer Protocol) is designed to send a message. POP (Post Office Protocol) is designed to receive mail. JavaMail API is an standard expansion package which is optional, can be used to read, write and send electronic messages.This paper can be divided into four parts. The first part introduced javamail email system's significance and status. The second part introduced several related agreements and JavaMail API. The third part mainly introduced system's development tools JA V A language , Eclipse and their installation process and configuration method. The fourth part detailed javamail email system's realization process.Keywords:SMTP, POP, JA V AMAIL, Email to send and receive目录第一章绪论 (1)1.1电子邮件介绍 (1)1.2研究意义 (1)1.3研究现状 (3)第二章相关邮件协议和JavaMail API (5)2.1相关邮件协议 (5)2.2JavaMail API (6)2.2.1 JavaMail API简介 (6)2.2.2 JavaMail API核心类 (6)2.3.3 JavaMail API的应用 (8)第三章应用系统开发工具 (10)3.1Java开发语言简介 (11)3.2开发工具Eclipse (12)3.3开发软件的安装 (12)3.3.1 JA V A环境的安装与配置 (12)3.3.2 Eclipse的安装 (14)3.3.3 javamail的安装 (15)第四章JavaMail系统的实现 (16)4.1环境配置与界面搭建 (16)4.2设置邮件服务器参数的实现 (16)4.3创建与发送邮件功能的实现 (17)4.3.1 装载邮件服务器属性, 并与其建立连接 (17)4.3.2 构建邮件 (18)4.3.3 创建Transport对象发送邮件 (19)4.4接收邮件功能的实现 (20)4.4.1 获取服务器信息 (20)4.4.2 建立通信连接 (20)4.4.3显示邮件 (20)4.5删除邮件功能的实现 (22)第五章结语 (23)参考文献 (24)致谢 (25)第一章绪论本文是一项基于JavaMail的邮件系统的综合性研究,使用Sun公司提供的JavaMail API实现电子邮件的发送、电子邮件的接收等等功能。
JavaMail收发邮件
§3 接收邮件
接收邮件使用POP3或IMAP协议。 例
接收POP邮件。
参考:testRecvMail.rar
示例代码
Session session = Session.getInstance(prop, null); //Session Store store = session.getStore("pop3"); //Store store.connect(pop3, user, pwd); //pop3地址形如"“ Folder inbox = store.getFolder("INBOX"); inbox.open(Folder.READ_ONLY); Message messages[] = inbox.getMessages(); for (int i = 0; messages != null && i < messages.length; i++) { out.println(messages[i].getFrom()[0] + "," + messages[i].getSentDate() + "," + messages[i].getSize() + "," + messages[i].getSubject() + "<br/>"); } store.close();
第08章 JavaMail收发邮件
主要内容
§1 JavaMail技术综述 §2 发送邮件 §3 接收邮件
§1 JavaMail技术综述
E-mail基于简单邮件传输协议(Simple Mail Transfer Protocol, SMTP)。
基于JavaMail的Java邮件发送
基于JavaMail的Java邮件发送⽬录邮件绑定功能1、javamail发送邮件1.1、简介1.2、⼯具类1.3、⼯具类测试2、客户注册时,发送祝贺邮件邮件绑定功能【需求】1、⽤户注册时,输⼊邮箱2、通过Javamail技术,向⽤户邮箱发送⼀封祝贺邮件1、javamail发送邮件1.1、简介什么是javamail?1.2、⼯具类⾸先从哪个邮箱发出邮件,所以得发送邮件账号⽀持程序发送邮件第⼀步:配置⽹易开启客户端授权码(1)授权码申请:选中POP3/SMTP服务和IMAP/SMTP服务,点击开启,如果已开启,会显⽰关闭授权码就是JAVA代码登录邮箱的密码:MQKFLKEKMUHOKVPS第⼆步:在mail-demo01项⽬中,配置pom.xml 添加javamail的坐标。
<!-- 导⼊javamail的坐标 --><dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.7</version></dependency>第三步:根据需要,编辑发送邮件正⽂步骤:1 设置邮件发送的属性2 设置主机地址3 设置是否打开验证4 创建链接5 创建邮件6 设置发送者7 设置接受者8 设置标题9 设置正⽂10 坐⽕箭import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeMessage.RecipientType;import java.util.Properties;public class MailUtil {public static String smtp_host = ""; // ⽹易publicstaticStringusername="***********";//邮箱public static String password = "q7w8e9a4s5d6"; // 授权码(登录邮箱-->设置-->邮箱安全设置-->客户端授权密码),这⾥不是邮箱的密码,切记!publicstaticStringfrom="***********";//来源邮箱,使⽤当前账号public static void sendMail(String to, String subject, String text) throws Exception {// 1 准备发送邮件需要的参数Properties props = new Properties();// 设置主机地址 props.put("mail.smtp.host", smtp_host);// 是否打开验证:只能设置true,必须打开props.put("mail.smtp.auth", true);// 2 连接邮件服务器Session session = Session.getDefaultInstance(props);// 3 创建邮件信息MimeMessage message = new MimeMessage(session);// 4 设置发送者InternetAddress fromAddress = new InternetAddress(from);message.setFrom(fromAddress);// 5 设置接收者InternetAddress toAddress = new InternetAddress(to);// to:直接接收者 cc:抄送 bcc暗送message.setRecipient(RecipientType.TO, toAddress);// 6 设置主题message.setSubject(subject);// 7 设置正⽂message.setText(text);// 设置HTML⽅式发送//message.setContent(text, "text/html;charset=utf-8");// 8 发送:坐⽕箭Transport transport = session.getTransport("smtp");// 参数不能少,表⽰的是发送协议// 登录邮箱,此处的密码是授权码transport.connect(username, password);transport.sendMessage(message, message.getAllRecipients());transport.close();System.out.println("ok");}public static void main(String[] args) {try {MailUtil.sendMail("**********","激活测试", "test");} catch (Exception e) {e.printStackTrace();}}}1.3、⼯具类测试使⽤main⽅法进⾏测试。
使用JavaMail接收邮件
使用JavaMail接收邮件package com.email.receive;import javax.mail.*;import javax.mail.internet.*;import java.util.*;import java.io.*;/*Title: 使用JavaMail接收邮件Description: 实例JavaMail包接收邮件,本实例没有实现接收邮件的附件。
Copyright: Copyright (c) 2003Filename: POPMail.java@version 1.0*/public class ReceiveEmail{/*方法说明:主方法,接收用户输入的邮箱服务器、用户名和密码输入参数:返回类型:*/public static void main(String args[]){try{String popServer=""; //邮件服务器String popUser="user"; //根据自已的用户名修改String popPassword="pass"; //根据自已的密码修改receive(popServer, popUser, popPassword);}catch (Exception ex){System.out.println("Usage: java com.lotontech.mail.POPMail"+" popServer popUserpopPassword");}System.exit(0);}/*方法说明:接收邮件信息输入参数:返回类型:*/public static void receive(String popServer, String popUser, String popPassword){Store store=null;Folder folder=null;try{//获取默认会话Properties props = System.getProperties();Session session = Session.getDefaultInstance(props, null);//使用POP3会话机制,连接服务器store = session.getStore("pop3");store.connect(popServer, popUser, popPassword);//获取默认文件夹folder = store.getDefaultFolder();if (folder == null) throw new Exception("No default folder");//如果是收件箱folder = folder.getFolder("INBOX");if (folder == null) throw new Exception("No POP3 INBOX");//使用只读方式打开收件箱folder.open(Folder.READ_ONLY);//得到文件夹信息,获取邮件列表Message[] msgs = folder.getMessages();for (int msgNum = 0; msgNum < msgs.length; msgNum++){printMessage(msgs[msgNum]);}}catch (Exception ex){ex.printStackTrace();}finally{//释放资源try{if (folder!=null) folder.close(false);if (store!=null) store.close();}catch (Exception ex2) {ex2.printStackTrace();}}}/*方法说明:打印邮件信息输入参数:Message message 信息对象返回类型:*/public static void printMessage(Message message){try{//获得发送邮件地址Stringfrom=((InternetAddress)message.getFrom()[0]).getPersonal();if (from==null) from=((InternetAddress)message.getFrom()[0]).getAddress();System.out.println("FROM: "+from);//获取主题String subject=message.getSubject();System.out.println("SUBJECT: "+subject);//获取信息对象Part messagePart=message;Object content=messagePart.getContent();//附件if (content instanceof Multipart){messagePart=((Multipart)content).getBodyPart(0);System.out.println("[ Multipart Message ]");}//获取content类型String contentType=messagePart.getContentType();//如果邮件内容是纯文本或者是HTML,那么打印出信息System.out.println("CONTENT:"+contentType);if (contentType.startsWith("text/plain")||contentType.startsWith("text/html")){InputStream is = messagePart.getInputStream();BufferedReader reader=new BufferedReader(new InputStreamReader(is));String thisLine=reader.readLine();while (thisLine!=null){System.out.println(thisLine);thisLine=reader.readLine();}}System.out.println("-------------- END ---------------");}catch (Exception ex){ex.printStackTrace();}}}。
JavaMail发送邮件(超详细)
JavaMail发送邮件(超详细)⼀:邮件发送的基本概念 本⽂我将阐述使⽤JavaMail⽅式发送和接收Email的详细说明,本博客本着以后遇到类似的邮件发送需求可以直接把代码粘过去直接使⽤,快捷⽅便省时间,对于刚接触的JavaMail的朋友们还是把⽂章过⼀遍,虽然本⽂不是最好的,但是我可以保证你能成功发送邮件; 关于邮件还有⼀些基本知识我将在下⾯简单介绍,关于邮件发送和接收的流程可以参考1:邮件中的⼏个名词发件⼈:指的是⽤哪个邮箱进⾏发送邮件的⼈收件⼈:指的是接收发件⼈发过来邮件的⼈,代表这封邮件⾯向的读者。
可以是零个到多个。
抄送⼈:指的是发件⼈把邮件发送给收件⼈的同时并抄送⼀份发给抄送⼈;此时抄送⼈可以看到收件⼈、抄送⼈的邮箱密送⼈:指的是发件⼈把邮件发送给收件⼈的同时并抄送⼀份发给密送⼈;此时抄送⼈可以看到收件⼈、抄送⼈的邮箱,⽆法看到密送⼈的邮箱说明:抄送⼈和密送⼈⼀般⽤于项⽬组A给项⽬组B发送邮件确认流程,这时项⽬组A还要告知领导我已经把⽅案流程发送给项⽬组B了;这时我就要把流程⽅案抄送⼀份给领导,就可以⽤到抄送和密送,此邮件领导是不⽤回复的2:发送邮件的⼏种⽅式JavaMail 具体使⽤说明参考Oracle官⽹给出的API:Jakarta Mail 具体使⽤说明参考Jakarta官⽅给出的API:1:javax.*也是java标准的⼀部分,但是没有包含在标准库中,⼀般属于标准库的扩展。
通常属于某个特定领域,不是⼀般性的api。
所以以扩展的⽅式提供api,以避免jdk的标准库过⼤。
当然某些早期的javax,后来被并⼊到标准库中,所有也应该属于新版本JDK的标准库。
⽐如jmx,java5以前是以扩展⽅式提供,但是jdk5以后就做为标准库的⼀部分了,所有javax.management也是jdk5的标准库的⼀部分。
2:com.sun.*是sun的hotspot虚拟机中java.* 和javax.*的实现类。
java中javamail收发邮件实现方法
java中javamail收发邮件实现⽅法概述1、邮件相关的标准⼚商所提供的 JavaMail 服务程序可以有选择地实现某些邮件协议,常见的邮件协议包括:SMTP(Simple Mail Transfer Protocol) :即简单邮件传输协议,它是⼀组⽤于由源地址到⽬的地址传送邮件的规则,由它来控制信件的中转⽅式。
POP3(Post Office Protocol – Version 3) :即邮局协议版本 3 ,⽤于接收电⼦邮件的标准协议。
IMAP(Internet Mail Access Protocol) :即 Internet 邮件访问协议。
是 POP3 的替代协议。
这三种协议都有对应 SSL 加密传输的协议,分别是 SMTPS , POP3S 和 IMAPS 。
MIME(Multipurpose Internet Mail Extensions) :即多⽤途因特⽹邮件扩展标准。
它不是邮件传输协议。
但对传输内容的消息、附件及其它的内容定义了格式。
2、JavaMail 简介JavaMail 是由 Sun 发布的⽤来处理 email 的 API 。
它并没有包含在 Java SE 中,⽽是作为 Java EE 的⼀部分。
mail.jar :此 JAR ⽂件包含 JavaMail API 和 Sun 提供的 SMTP 、 IMAP 和 POP3 服务提供程序;activation.jar :此 JAR ⽂件包含 JAF API 和 Sun 的实现。
JavaMail 包中⽤于处理电⼦邮件的核⼼类是: Properties 、 Session 、 Message 、 Address 、 Authenticator 、 Transport 、 Store 等。
3、邮件传输过程如上图,电⼦邮件的处理步骤如下:创建⼀个 Session 对象。
Session 对象创建⼀个 Transport 对象 /Store 对象,⽤来发送 / 保存邮件。
实验十四_JavaMailAPI接收和发送电子邮件
实验十四 JavaMailAPI接收和发送电子邮件
一.实验目的
1.了解邮件系统的基本原理和SMTP/POP3协议。
2.熟悉邮件服务器MDaemon的搭建。
3.了解使用JavaMail进行邮件收发的方法;
不带身份验证的邮件发送;
带身份验证的邮件发送;
POP3协议接收邮件;
发送带附件的电子邮件。
实验课时:4课时
二.实验步骤
1.安装MDaemon并配置,使其能够实现最基本的邮件服务器功能,添加一个帐号,利用web 方式(http://127.0.0.1:3000)测试。
如果要求该服务器在发送邮件时使用身份验证,则需要将下图中的选项勾中。
2.下载activation.jar和mail.jar到Java的某目录下,如:C:\Program
Files\Java\jdk1.6.0_16\jre\lib\ext
3.设置JCreator的classpath路径。
4.编写一个邮箱类,包含两个成员方法,分别完成如下功能:
1)不带身份认证,发送邮件到某邮箱
2)接收邮箱的邮件并显示在控制台窗口。
编写main()测试这些方法,用户在控制台输入不同的命令即可选择接收邮件或者发送邮件。
三.实验内容
程序代码:
测试结果——运行截图:四.实验体会。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于Javamail的邮件收发系统使用说明书
基于Javamail的邮件收发系统是一款简单、方便、快捷的邮件系统。
它能实现邮件的接收与发送,并能完成附件的传输,具有较好的人机交互性,易于使用。
开发环境:JDK1.6 + Windows平台
开发技术:Javamail
开发工具:Eclipse3.4
运行环境:PC上需安装JDK1.6,且正确配置环境变量。
系统基本功能如下:
(1) 收取并显示POP3邮件服务器上指定邮箱的邮件;
(2) 使用SMTP邮件服务器发送邮件;
(3) 邮件附件的发送与接受;
(4) 删除邮件;
具体操作步骤如下:
1、打开javamailsystem文件夹,找到javamail.jar可执行文件,双击该执行文件,即可打开
Javamail邮件收发系统客户端软件。
进入该系统后,首先选择“POP3/SMTP设置”按钮,对收发邮件所需的邮件服务器主机、收发邮件账号及密码信息进行设置。
图1-1邮件客户端主界面
设置举例如下:
POP3属性
POP3服务器:(或或)
Email地址:shinning191@(ceshi2009ok@、qiufeng006@)
账户名:shinning191(ceshi2009ok、qiufeng006)
密码:6857191(123456、28912786)
SMTP属性
SMTP服务器:(或或)
Email地址:shinning191@(ceshi2009ok@\qiufeng006@)
账户名:shinning191(ceshi2009ok、qiufeng006)
密码:6857191(123456、28912786)
在对SMTP/POP3进行设置的时候,由于系统的缺陷,需要先对POP3进行属性设置,然后确定关闭该对话框;重新打开属性设置对话框,对SMTP进行属性设置,确定。
这样便可以正确设置完邮件服务器的属性。
此系统对上述设置的信息具有存储功能,在这里,我们采用属性文件的形式存储SMT P 和POP3邮件服务器属性设置。
相关属性值分别保存在pop3.properties和smtp.properties文
件中。
2、在设置完服务器属性值后,点击“创建邮件”按钮,进行邮件的创建与发送。
在新邮件编
辑窗体中,编辑收件人,抄送,主题,正文内容等信息,若有附件需要发送,也可以添加附件。
在编辑完成后,点击“发送”按钮,程序会根据输入的邮件信息构造邮件,并将其发送,如下图所示。
3、为了测试方便,收发邮件的账号都设置为同一账号(也可以设置为不同的账号,
但是相应的服务器设置要正确),因此在发送完新邮件后,便可以在收件箱中查
看。
点击“接收邮件”按钮,系统首先从指定接收邮件的服务器中收取邮件,并将
邮件的发件人、邮件主题以及邮件日期信息以列表形式显示出来;其次是用户在
该邮件列表中点击某封邮件时, 可以查阅该邮件的详细信息,包括邮件内容、附件
列表等。
如下图所示。
对于邮件列表中一些邮件自带的附件,用户可以点击“附件”按钮,跳出“邮件附加处理”窗口,选中附件列表中所需保存的附件“学校桌面背景.JPG”,然后点击“保存”,就可以将附件保存在自己的电脑上,如下图所示。
图1-5 保存邮件附件
4、用户对于收件箱中一些不需要保存的邮件,可以先选取要删除的邮件名,然后点击系统主
窗体的“删除邮件”按钮,系统程序会将邮件列表中当前被选中的邮件删除,并刷新显示
邮件列表,如下图所示。
在系统的设计过程中,由浅入深的实现了E-mail邮件系统的发送、接收,附件传输等基本功能,并最终实现了各个子模块的整合。
在此基础上,可以进一步添加其它的功能,比如转发邮件、回复邮件等,使其成为一个功能完善的邮件客户系统。