基于Javamail的邮件收发系统-任务书
- 格式:doc
- 大小:51.51 KB
- 文档页数:4
SpringBoot整合JavaMail通过阿⾥云企业邮箱发送邮件的实现JavaMail是Java开发中邮件处理的开源类库,⽀持常⽤协议如:SMTP、POP3、IMAP⼀、SpringBoot整合1、需要在pom⽂件中添加依赖spring-boot-starter-mail<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>构建项⽬,加载相关jar包2、在application.yml中配置邮件发送的相关信息spring:mail:host: #阿⾥云发送服务器地址port: 25 #端⼝号username: XXX@ #发送⼈地址password: ENC(Grg2n2TYzgJv9zpwufsf37ndTe+M1cYk) #密码3、编写邮件发送⼯具类MailUtilMailUtil.java/*** @author chenzan* @version V1.0* @description 邮件发送*/@Componentpublic class MailUtil {@AutowiredJavaMailSendermailSender;@AutowiredMailPropertiesmailProperties;/*** 发送邮件测试⽅法*/public void sendMail(MailBean mailBean) {SimpleMailMessage mimeMessage =new SimpleMailMessage();mimeMessage.setFrom(mailProperties.getUsername());mimeMessage.setTo(mailBean.getToAccount());mimeMessage.setSubject(mailBean.getSubject());mimeMessage.setText(mailBean.getContent());mailSender.send(mimeMessage);}/*** 发送邮件-附件邮件* @param boMailBean*/public boolean sendMailAttachment(MailBean mailBean) {try {MimeMessage mimeMessage =mailSender.createMimeMessage();MimeMessageHelper helper =new MimeMessageHelper(mimeMessage, true);helper.setFrom(mailProperties.getUsername());helper.setTo(boMailBean.getToAccount());helper.setSubject(mailBean.getSubject());helper.setText(mailBean.getContent(), true);// 增加附件名称和附件helper.addAttachment(MimeUtility.encodeWord(boMailBean.getAttachmentFileName(), "utf-8", "B"), mailBean.getAttachmentFile());mailSender.send(mimeMessage);return true;}catch (MessagingException e) {e.printStackTrace();return false;}}MailBean.java/*** @author chenzan* @version V1.0*/@Datapublic class MailBean {private Stringsubject;private String content;private String toAccount;private File attachmentFile;private String attachmentFileName;}4.发送String email = "XXX@";String content="测试内容";String subject = "测试主题";MailBean mailBean =new MailBean ();mailBean .setToAccount(email);boMailBean.setSubject(subject );boMailBean.setContent(content);boolean resultSend =mailUtil.sendMailAttachment(boMailBean);⼆、查看阿⾥云邮箱设置⽀持SMTP/POP3/IMAP功能,轻松通过客户端软件(outlook、foxmail等)收发邮件。
基于JavaMail的邮件系统的概要设计一邮件系统各功能概述1.1 JavaMail简介JavaMail API是Java EE的一部分,是Java SE的可选组件。
该组件提供了一个平台无关、协议独立的框架,预置了一些最常用的邮件传送协议的实现方法,通过一组API来模拟邮件系统。
提供Email的发送和接收服务。
它借鉴了IMAP、MAPI、CMC等消息系统API的设计,采用面向对象的思想将接2008年4月18日收到接口与实现相分离,支持存取方式、消息格式、消息传送协议不同的邮件消息系统,可以简便的为应用程序增加Email支持,广泛应用于构件邮件和消息应用系统JavaMail API封装了电子邮件功能中:邮件对象、发送、身份认证、接收等功能。
其核心类有:Session、Authenticator Address Message Transport、Store、Folder等。
其中Session是邮件操作的接口,用于建立了基本的邮件会话;Authenticator类提供访问邮件服务器所需的认证信息;Message描述基本的邮件消息,是收发邮件的操作单位;Transport是发送邮件时所用的协议,通常是SMTP;Store模拟了消息数据库及其内部存储消息的目录的访问协议;Folder用于描述消息数据库中的目录结构。
一个Session会有多个Trans—port,每个Store包含一系列的Folder和Message,每个Folder又包含一系列的Folder和Message。
借助这些类,就可以构建各种典型的邮件应用。
JavaMail的最新实现是1.4版本,可以支持POP3、IMAP4、SMTP协议。
由于JavaMail还需要JavaBeans Activation Framework(JAF)框架的支持,1.2 设计目标公用邮箱是和外单位交互的主要渠道,用户获取和提交一些重要数据和文件,也是与本单位其它部门进行业务的信息交换的重要渠道。
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 对象。
《收发电子邮件》学习任务单一、学习目标1、了解电子邮件的基本概念和工作原理。
2、掌握常用电子邮件客户端(如 Outlook、Foxmail 等)的设置和使用方法。
3、学会撰写规范、清晰、有效的电子邮件。
4、掌握接收和查看电子邮件的技巧,包括处理附件和邮件分类。
5、了解电子邮件的安全注意事项,如防范垃圾邮件、网络钓鱼等。
二、学习内容1、电子邮件基础知识(1)电子邮件的定义和特点电子邮件是通过网络传递的电子信件,具有快速、便捷、低成本等特点。
(2)电子邮件的工作原理简单介绍邮件的发送、传输和接收过程,包括服务器的作用。
2、电子邮件客户端的设置(1)选择适合自己的电子邮件客户端,如 Outlook、Foxmail 等。
(2)设置邮件账户,包括输入邮箱地址、密码、服务器信息等。
(3)配置邮件客户端的基本选项,如邮件保存位置、邮件提醒方式等。
3、撰写电子邮件(1)邮件的格式包括收件人、主题、正文、附件等部分的规范。
(2)邮件主题的撰写主题要简洁明了,能够准确反映邮件的主要内容。
(3)邮件正文的撰写语言得体、表达清晰,注意分段和标点使用。
(4)附件的添加和处理了解如何添加附件,以及注意附件的大小和格式限制。
4、接收和查看电子邮件(1)接收邮件的方式和时间设置(2)查看邮件的方法和操作(3)处理附件的步骤和注意事项(4)邮件的分类和归档5、电子邮件的安全(1)识别垃圾邮件和防范方法(2)避免网络钓鱼邮件的技巧(3)保护个人邮件信息的安全措施三、学习资源1、在线教程和视频推荐一些知名的在线学习平台上关于收发电子邮件的教程和视频。
2、电子邮件客户端的官方帮助文档提供常用电子邮件客户端的官方网站链接,方便查找详细的帮助文档。
四、学习活动1、实际操作练习在自己的电脑上安装电子邮件客户端,并进行账户设置和邮件收发的练习。
2、案例分析分析一些成功和失败的电子邮件案例,学习优秀的邮件撰写和处理方式,避免常见错误。
3、小组讨论与同学或同事组成小组,讨论在收发电子邮件过程中遇到的问题和解决方案。
基于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邮件服务器属性设置。
javaMail邮件接收解析内容及附件及删除邮件使⽤javaMail获取邮件内容。
⼯具类可直接使⽤。
package com.szy.project.utils;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.UnsupportedEncodingException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Properties;import javax.mail.Address;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.internet.InternetAddress;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeMultipart;import javax.mail.internet.MimeUtility;/*** 邮件接受测试**//*** 使⽤POP3协议接收邮件*/public class POP3ReceiveMailTest {public static void main(String[] args) throws Exception {resceive();}/*** 接收邮件*/public static void resceive() throws Exception { /** * 因为现在使⽤的是163邮箱⽽163的 pop地址是 端⼝是 110 * ⽐如使⽤好未来企业邮箱就需要换成好未来邮箱的 pop服务器地址 和端⼝110 */ String duankou = "110"; // 端⼝号 String servicePath = ""; // 服务器地址// 准备连接服务器的会话信息Properties props = new Properties();props.setProperty("mail.store.protocol", "pop3"); // 使⽤pop3协议props.setProperty("mail.pop3.port", duankou); // 端⼝props.setProperty("mail.pop3.host", servicePath); // pop3服务器// 创建Session实例对象Session session = Session.getInstance(props);Store store = session.getStore("pop3");store.connect("157********@", "***********"); //163邮箱程序登录属于第三⽅登录所以这⾥的密码是163给的授权密码⽽并⾮普通的登录密码// 获得收件箱Folder folder = store.getFolder("INBOX");/* Folder.READ_ONLY:只读权限* Folder.READ_WRITE:可读可写(可以修改邮件的状态)*/folder.open(Folder.READ_WRITE); //打开收件箱// 由于POP3协议⽆法获知邮件的状态,所以getUnreadMessageCount得到的是收件箱的邮件总数System.out.println("未读邮件数: " + folder.getUnreadMessageCount());// 由于POP3协议⽆法获知邮件的状态,所以下⾯得到的结果始终都是为0System.out.println("删除邮件数: " + folder.getDeletedMessageCount());System.out.println("新邮件: " + folder.getNewMessageCount());// 获得收件箱中的邮件总数System.out.println("邮件总数: " + folder.getMessageCount());// 得到收件箱中的所有邮件,并解析Message[] messages = folder.getMessages();parseMessage(messages);//得到收件箱中的所有邮件并且删除邮件deleteMessage(messages);//释放资源folder.close(true);store.close();}/*** 解析邮件* @param messages 要解析的邮件列表*/public static void parseMessage(Message ...messages) throws MessagingException, IOException {if (messages == null || messages.length < 1)throw new MessagingException("未找到要解析的邮件!");// 解析所有邮件for (int i = 0, count = messages.length; i < count; i++) {MimeMessage msg = (MimeMessage) messages[i];System.out.println("------------------解析第" + msg.getMessageNumber() + "封邮件-------------------- ");System.out.println("主题: " + getSubject(msg));System.out.println("发件⼈: " + getFrom(msg));System.out.println("收件⼈:" + getReceiveAddress(msg, null));System.out.println("发送时间:" + getSentDate(msg, null));System.out.println("是否已读:" + isSeen(msg));System.out.println("邮件优先级:" + getPriority(msg));System.out.println("是否需要回执:" + isReplySign(msg));System.out.println("邮件⼤⼩:" + msg.getSize() * 1024 + "kb");boolean isContainerAttachment = isContainAttachment(msg);System.out.println("是否包含附件:" + isContainerAttachment);if (isContainerAttachment) {saveAttachment(msg, "f:\\mailTest\\"+msg.getSubject() + "_"+i+"_"); //保存附件}StringBuffer content = new StringBuffer(30);getMailTextContent(msg, content);System.out.println("邮件正⽂:" + (content.length() > 100 ? content.substring(0,100) + "..." : content)); System.out.println("------------------第" + msg.getMessageNumber() + "封邮件解析结束-------------------- "); System.out.println();}}/*** 解析邮件* @param messages 要解析的邮件列表*/public static void deleteMessage(Message ...messages) throws MessagingException, IOException {if (messages == null || messages.length < 1)throw new MessagingException("未找到要解析的邮件!");// 解析所有邮件for (int i = 0, count = messages.length; i < count; i++) {/*** 邮件删除*/Message message = messages[i];String subject = message.getSubject();// set the DELETE flag to truemessage.setFlag(Flags.Flag.DELETED, true);System.out.println("Marked DELETE for message: " + subject);}}/*** 获得邮件主题* @param msg 邮件内容* @return 解码后的邮件主题*/public static String getSubject(MimeMessage msg) throws UnsupportedEncodingException, MessagingException { return MimeUtility.decodeText(msg.getSubject());}/*** 获得邮件发件⼈* @param msg 邮件内容* @return 姓名 <Email地址>* @throws MessagingException* @throws UnsupportedEncodingException*/public static String getFrom(MimeMessage msg) throws MessagingException, UnsupportedEncodingException {String from = "";Address[] froms = msg.getFrom();if (froms.length < 1)throw new MessagingException("没有发件⼈!");InternetAddress address = (InternetAddress) froms[0];String person = address.getPersonal();if (person != null) {person = MimeUtility.decodeText(person) + "";} else {person = "";}from = person + "<" + address.getAddress() + ">";return from;}/*** 根据收件⼈类型,获取邮件收件⼈、抄送和密送地址。
利⽤JavaGUI和javamail实现的email客户端摘要本系统是⽤ java 语⾔实现的⼀个 Email客户端,主要⽤到 java GUI 图形界⾯设计和 java mail ⼯具包,它适⽤于所有⽤户,⽆管理员设置,可以实现⽹络邮箱的邮件发送和邮件收取的基本功能,还具有通讯录的存储功能,针对⽤户的需求,本Email 客户端具有以下两⼤模块:1.基本设置模块;此模块主要包括⽤户设置和邮箱设置两⼤内容:1.1 ⽤户设置:主要设置⽤户的⼀些基本信息,如⽤户名,⽤户密码等设置1.2 邮箱设置:主要设置邮箱服务器,SMTP,POP3等2. Email功能模块;此模块根据⼤众⽤户的需求划分了以下三个部分:2.1收取邮件功能;2.2发送邮件功能;2.3通讯录功能;该系统的开发过程为:1.Email客户端的需求分析;2.Email客户端的系统分析;3.Email客户端的功能模块划分划分;4.Email客户端的数据库设计;5.Email客户端的界⾯设计;6.Email客户端的功能模块设计及代码实现关键字:java,java GUI,java mailAbstractThis email client system is developed in java language using java GUI and java mail tools .It can be used by any users who want to use it . The system is not including manager settings and it can finish the function of sending and accepting mails in web mail system, it can store user information a function like a address book in the web. The systems need to achieve the overall function to run two parts, as follows1. The basic settingsTwo parts are followed:1.1 Maintenance System Administrators basic information;1.2 Student response functions;2. Email functionsThree function will be available2.1 Sending mails2.2 Receiving mails2.3 Address bookThe system development process :1. Email client needs analysis;2. Email client system analysis;3. Email client function modules partition;4. Email client design;5. Email client interface design;6. Email client functional design and code modules to achieveKey word:java , java GUI ,java mail⽬录前⾔ (4)第1章系统概述及系统分析-------------------------------------------- 51.1系统概述 (5)1.1.1基本设置模块--------------------------------------------------- 51.1.2 Email功能模块------------------------------------------------- 5 1.2 需求分析 (5) 1.3 可⾏性分析 (5)1.3.1技术可⾏性分析------------------------------------------------- 51.3.2环境可⾏性分析------------------------------------------------- 61.3.3经济可⾏性分析------------------------------------------------- 6第2章系统开发基本介绍---------------------------------------------- 72.1 选题背景与⽬的--------------------------------------------------- 72 .2 系统开发⼯具---------------------------------------------------- 72 .3 系统开发环境---------------------------------------------------- 72 .4开发技术概述---------------------------------------------------- 72 .4.1 J2EE概述----------------------------------------------------- 72 .4.2 Java GUI ------------------------------------------------------ 82 .4.3 Java mail ----------------------------------------------------- 9第3章系统总体设计------------------------------------------------- 103 .1 系统功能模块划分----------------------------------------------- 103 .2系统具体功能模块基本介绍--------------------------------------- 103 .2.1 发件箱------------------------------------------------------- 103 .2.2 收件箱------------------------------------------------------- 113 .2.3 通讯录------------------------------------------------------- 11第4章系统详细设计及系统实现--------------------------------------- 134 .1 章节内容总体介绍----------------------------------------------- 134 .2各模块功能详细设计--------------------------------------------- 134 .2.1 发送邮件功能的实现------------------------------------------- 134 .2.1.1 发送普通邮件功能------------------------------------------- 134 .2.1.2 邮件附件的功能实现----------------------------------------- 194 .2.2 收取邮件功能的实现------------------------------------------- 204 .2.3 通讯录功能的实现--------------------------------------------- 284 .2.4其他功能----------------------------------------------------- 314 .2.4.1 其他界⾯实现与通讯录的连接功能----------------------------- 314 .2.4.2 邮件未存储对⽤户提⽰功能----------------------------------- 314 .2.4.3 复制、删除邮件功能----------------------------------------- 324 .2.4.4 ⽤户信息设置功能------------------------------------------- 34结束语-------------------------------------------------------------- 36谢辞 (37)参考⽂献 (37)前⾔邮件系统是⼀套单独的系统,要有⾃⼰的服务器,在邮件系统中可以设多个域,每个域中可以设多个⽤户,⽐如说我买了anymacro 或快客的邮件系统,可以进⾏多项设置.它的数据是放在⾃⼰的服务器上.随着信息技术的提⾼,⽹络的普及于发展,越来越多的⽹络⼯具随之产⽣出来,⽹络邮箱就是其中之⼀,它可以通过⽹络来实现⼈们之间的通信,可以给⼈们的⼯作带来极⼤的⽅便,同时也缩短了⼈与⼈之间的距离,使⼈们在通信上需要花费的时间更短。
信息科学与工程学院
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。
[11] Learning Java。
Niemeyer, Patrick.,Knudsen, Jonathan。
O'Reilly, 2000。
三、起止日期及进度安排(包括论文各阶段的内容和时间安排的要求)
起止日期:2008 年8 月23 日至2009 年 5 月9 日进度安排:
指导教师(签名)2008 年9 月15 日四、教研室(系)审查意见:
教研室(系)主任(签名)年月日
学院分管院长(签名)年月日。