JAVA邮件接收

合集下载

Java读取邮件的方法

Java读取邮件的方法

Java读取邮件的方法在Java编程设计中,我们如何通过Java读取邮件呢?下面店铺为大家介绍了Java读取邮件的方法,希望能帮到大家!复制代码代码如下:public void receive() throws Exception {Log.e(tag, "receive()");// sharedpreference读取数据,用split()方法,分开字符串。

SharedPreferences pre = getSharedPreferences("SAVE_INFORMATION",MODE_WORLD_R EADABLE);String content = "name;pass";//pre.getString("save", "");String[] Information = content.split(";");String username = Information[0];String password = Information[1];Properties props = new Properties();Session session = Session.getDefaultInstance(props);// 取得pop3协议的邮件服务器Store store = session.getStore("pop3");// 连接邮件服务器store.connect("", username, password);// 返回文件夹对象Folder folder = store.getFolder("INBOX");// 设置仅读folder.open(Folder.READ_ONLY);// 获取信息Message message[] = folder.getMessages();for(int j=0; j<message.length; j++) {Log.e(tag,"message[i].getSubject()="+message[j].getSubject());Log.e(tag,"message[i].getContent()="+message[j].getContent());}folder.close(true);store.close();}。

javamail收发邮件(带附件,正文带图)

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 对象。

Java实现outlook服务的邮件发送

Java实现outlook服务的邮件发送

Java实现outlook服务的邮件发送依赖<!-- https:///artifact/javax.mail/mail --><dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.7</version></dependency>POP3接收String USER_NAME ="*****@";String PASSWORD = "******";public static void receivepop3Email() {String host = "";// change accordinglyString mailStoreType = "pop3";String popPort = "995";Store store = null;// 配置连接信息Properties properties = new Properties();properties.put("mail.store.protocol", mailStoreType);properties.put("mail.pop3.host", host);properties.put("mail.pop3.port", popPort);properties.put("mail.pop3.starttls.enable", "true");try {Session emailSession = Session.getDefaultInstance(properties);//打开调式模式,可看到邮件发送过程中各步骤的详细信息// emailSession.setDebug(true);store = emailSession.getStore("pop3s");store.connect(host, USER_NAME, PASSWORD);Folder emailFolder = store.getFolder("INBOX");emailFolder.open(Folder.READ_ONLY);Message[] messages = emailFolder.getMessages();for (Message msg:messages) {System.out.println(msg.getSubject());}emailFolder.close(true);store.close();} catch (NoSuchProviderException e) {e.printStackTrace();} catch (MessagingException e) {e.printStackTrace();}finally {if(null != store){try {store.close();} catch (MessagingException e) {e.printStackTrace();}}}}IMAP接收String USER_NAME ="*****@";String PASSWORD = "******";public static void receiveimapEmail() {String host = "";// change accordinglyString mailStoreType = "imap";String popPort = "993";try {// 配置连接信息Properties properties = new Properties();properties.put("mail.store.protocol", mailStoreType);properties.put("mail.imap.host", host);properties.put("mail.imap.port", popPort);properties.put("mail.imap.starttls.enable", "true");Session emailSession = Session.getDefaultInstance(properties);// emailSession.setDebug(true);Store store = emailSession.getStore("imaps");store.connect(host, USER_NAME, PASSWORD);Folder emailFolder = store.getFolder("INBOX");emailFolder.open(Folder.READ_ONLY);Message[] messages = emailFolder.getMessages();for (Message msg:messages) {System.out.println(msg.getSubject());}emailFolder.close(true);store.close();} catch (NoSuchProviderException e) {e.printStackTrace();} catch (MessagingException e) {e.printStackTrace();}}SMTP发送static String USER_NAME ="****@";static String PASSWORD = "****";public static boolean sendSMTPMail(String to, String text, String title) {String host = "";String mailStoreType = "smtp";String popPort = "587";final Properties props = new Properties();props.put("mail.smtp.auth", "true");props.put("mail.smtp.host", host);props.put("mail.store.protocol", mailStoreType);props.put( "mail.smtp.port", popPort );//开启SSLprops.put("mail.smtp.starttls.enable", "true");props.put("mail.smtp.socketFactory.port",popPort);props.put("mail.smtp.socketFactory.fallback","false");try {Session session = Session.getDefaultInstance(props, new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(USER_NAME, PASSWORD);//账号密码}});session.setDebug(true);// 创建邮件消息MimeMessage message = new MimeMessage(session);// 设置发件⼈InternetAddress form = new InternetAddress(USER_NAME);message.setFrom(form);// 设置收件⼈InternetAddress toAddress = new InternetAddress(to);message.setRecipient(Message.RecipientType.TO, toAddress);// 设置邮件标题message.setSubject(title);// 设置邮件的内容体message.setContent(text, "text/html;charset=UTF-8");// 发送邮件Transport.send(message);return true;} catch (Exception e) {e.printStackTrace();}return false;}插曲: SMTP发送邮件时,第⼀次发送可能会收到如下的报错:OutboundSpamException; Failed to process message due to a permanent exception with message WASCL UserAction verdict is not None 在⽹上查到这是邮箱⼚商的安全策略,出现此异常的同时⼚商会给你发送⼀封确认邮件,只要你登录邮箱并激活该邮件即可使⽤SMTP 发送邮件的功能,邮件内容⼤致如下:。

javaMail邮件接收解析内容及附件及删除邮件

javaMail邮件接收解析内容及附件及删除邮件

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;}/*** 根据收件⼈类型,获取邮件收件⼈、抄送和密送地址。

基于Javamail的邮件收发系统-任务书

基于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。

利用JavaGUI和javamail实现的email客户端

利用JavaGUI和javamail实现的email客户端

利⽤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 或快客的邮件系统,可以进⾏多项设置.它的数据是放在⾃⼰的服务器上.随着信息技术的提⾼,⽹络的普及于发展,越来越多的⽹络⼯具随之产⽣出来,⽹络邮箱就是其中之⼀,它可以通过⽹络来实现⼈们之间的通信,可以给⼈们的⼯作带来极⼤的⽅便,同时也缩短了⼈与⼈之间的距离,使⼈们在通信上需要花费的时间更短。

VBA中的邮件发送与接收方法

VBA中的邮件发送与接收方法

VBA中的邮件发送与接收方法在Visual Basic for Applications (VBA) 中,通过使用电子邮件功能,我们可以实现自动化的邮件发送和接收。

这在许多情况下非常有用,例如通过邮件通知用户特定事件的发生,或从特定邮箱中自动提取数据。

本文将介绍如何使用 VBA 在 Microsoft Outlook 中发送和接收邮件。

1. 发送邮件要在 VBA 中发送邮件,我们需要首先创建一个 Outlook 应用程序对象,并定义主要的邮件对象,如收件人、主题和正文。

以下是一个简单示例:```Sub SendEmail()Dim OutlookApp As ObjectDim MailItem As ObjectSet OutlookApp = CreateObject("Outlook.Application")Set MailItem = OutlookApp.CreateItem(0)With MailItem.To="*********************".Subject = "这是邮件的主题".Body = "这是邮件的正文".Attachments.Add "C:\文件路径\附件文件名".SendEnd WithSet OutlookApp = NothingSet MailItem = NothingEnd Sub```以上代码将创建一个 Outlook 应用程序对象和邮件对象。

然后,我们可以使用 `.To` 属性指定邮件的收件人,使用 `.Subject` 属性指定邮件的主题,使用 `.Body` 属性指定邮件的正文。

如果需要发送附件,可以使用 `.Attachments.Add` 方法添加附件。

最后,我们使用 `.Send` 方法发送邮件。

在发送完成后,我们需要将对象设置为 `Nothing` 以释放内存。

JavaMail通过IMAP和POP3接收未读以及设置已读邮件

JavaMail通过IMAP和POP3接收未读以及设置已读邮件

JavaMail通过IMAP和POP3接收未读以及设置已读邮件博客分类:javamailjavamailpop3imap使用javaMail收邮件主要有两种协议,一种是pop3,一种是imap。

这两种协议都可以用来收邮件,但是在其中的处理上是有区别的。

pop3是不支持判断邮件是否为已读的,也就是说你不能直接从收件箱里面取到未读邮件,这需要自己进行判断,然而imap就提供了这样的功能,使用imap时可以很轻松的判断该邮件是否为已读或未读或其他。

此外收件箱中的每一封邮件都对应着一个MessageNumber,所以可以通过一个MessageNumber拿到对应的那封邮件。

如:Message message =folder.getMessage(messageNumber);pop3和imap主要区别就是能否判断邮件状态的问题,其他的操作都差不多.pop3收邮件和解析邮件:Java代码1.package com.clxx.test;2.3.import java.io.FileOutputStream;4.import java.io.IOException;5.import java.io.InputStream;6.import java.io.OutputStream;7.import java.util.Enumeration;8.import java.util.Properties;9.10.import javax.mail.BodyPart;11.import javax.mail.Folder;12.import javax.mail.Message;13.import javax.mail.MessagingException;14.import javax.mail.Multipart;15.import javax.mail.Session;16.import javax.mail.Store;17.import javax.mail.internet.MimeMultipart;18.19.public class Email2 {20.21. public static void main(String args[]) throws MessagingException,22. IOException {23. Properties props = new Properties();24. props.setProperty("mail.store.protocol", "pop3");25. props.setProperty("mail.pop3.host", "");26. Session session = Session.getDefaultInstance(props);27. Store store = session.getStore("pop3");28. store.connect("username@", "password");29. Folder folder = store.getFolder("INBOX");30. folder.open(Folder.READ_WRITE);31.32. // 全部邮件数33. int messageCount = folder.getMessageCount();34. System.out.println(messageCount);35. Message[] messages = folder.getMessages();36. for (int i = 0; i < messages.length; i++) {37. Message message = messages[i];38. System.out.println(message.getSubject());39. // 删除邮件40. // message.setFlag(Flags.Flag.DELETED, true);41. // 标记为已读42. // message.setFlag(Flags.Flag.SEEN, true);43.44. //pop3没有判断邮件是否为已读的功能,要使用Imap才可以45. /*Flags flags = message.getFlags();46. if (flags.contains(Flags.Flag.SEEN))47. System.out.println("这是一封已读邮件");48. else {49. System.out.println("未读邮件");50. message.setFlag(Flags.Flag.SEEN, true);51. }*/52. System.out.println("发送时间:" + message.getSentDate());53. System.out.println("主题:" + message.getSubject());54. System.out.println("内容:" + message.getContent());55. //获取所有的Header,头信息56. Enumeration headers = message.getAllHeaders();57. System.out.println("----------------------allHeaders-----------------------------");58. /* while (headers.hasMoreElements()) {59. Header header = (Header)headers.nextElement();60. System.out.println(header.getName()+" ======= "+header.getValue());61. }*/62.63. //解析邮件内容64. Object content = message.getContent();65. if (content instanceof MimeMultipart) {66. MimeMultipart multipart = (MimeMultipart) content;67. parseMultipart(multipart);68. }69. System.out70. .println("========================================================");71. System.out72. .println("========================================================");73.74. }75.76. folder.close(true);77. store.close();78. }79.80. /**81. * 对复杂邮件的解析82. * @param multipart83. * @throws MessagingException84. * @throws IOException85. */86. public static void parseMultipart(Multipart multipart) throws MessagingException, IOException {87. int count = multipart.getCount();88. System.out.println("couont = "+count);89. for (int idx=0;idx<count;idx++) {90. BodyPart bodyPart = multipart.getBodyPart(idx);91. System.out.println(bodyPart.getContentType());92. if (bodyPart.isMimeType("text/plain")) {93. System.out.println("plain................."+bodyPart.getContent());94. } else if(bodyPart.isMimeType("text/html")) {95. System.out.println("html..................."+bodyPart.getContent());96. } else if(bodyPart.isMimeType("multipart/*")) {97. Multipart mpart = (Multipart)bodyPart.getContent();98. parseMultipart(mpart);99.100. } else if (bodyPart.isMimeType("application/oc tet-stream")) {101. String disposition = bodyPart.getDispositi on();102. System.out.println(disposition);103. if (disposition.equalsIgnoreCase(BodyPart.ATTACHMENT)) {104. String fileName = bodyPart.getFileName ();105. InputStream is = bodyPart.getInputStre am();106. copy(is, new FileOutputStream("D:\\"+f ileName));107. }108. }109. }110. }111.112. /**113. * 文件拷贝,在用户进行附件下载的时候,可以把附件的InputStream传给用户进行下载114. * @param is115. * @param os116. * @throws IOException117. */118. public static void copy(InputStream is, OutputStream o s) throws IOException {119. byte[] bytes = new byte[1024];120. int len = 0;121. while ((len=is.read(bytes)) != -1 ) {122. os.write(bytes, 0, len);123. }124. if (os != null)125. os.close();126. if (is != null)127. is.close();128. }129.}使用imap协议接收邮件:Java代码1.package com.clxx.test;2.3. import java.util.Properties;4.5. import javax.mail.Flags;6. import javax.mail.Folder;7. import javax.mail.Message;8. import javax.mail.Session;9.10. import com.sun.mail.imap.IMAPFolder;11. import com.sun.mail.imap.IMAPStore;12.13. /**14. * 使用imap协议获取未读邮件数15. *16. * @author w17. *18. */19. public class Email3 {20.21. public static void main(String[] args) throws Exception{22. String user = "username@";// 邮箱的用户名23. String password = "password"; // 邮箱的密码24.25. Properties prop = System.getProperties();26. prop.put("mail.store.protocol", "imap");27. prop.put("mail.imap.host", "");28.29. Session session = Session.getInstance(prop);30.31. int total = 0;32. IMAPStore store = (IMAPStore) session.getStore("imap"); // 使用imap会话机制,连接服务器33. store.connect(user, password);34. IMAPFolder folder = (IMAPFolder) store.getFolder("INBOX"); // 收件箱35. folder.open(Folder.READ_WRITE);36. // 获取总邮件数37. total = folder.getMessageCount();38. System.out.println("-----------------共有邮件:" + total39. + " 封--------------");40. // 得到收件箱文件夹信息,获取邮件列表41. System.out.println("未读邮件数:" + folder.getUnreadMessageCount());42. Message[] messages = folder.getMessages();43. int messageNumber = 0;44. for (Message message : messages) {45. System.out.println("发送时间:" + message.getSentDate());46. System.out.println("主题:" + message.getSubject());47. System.out.println("内容:" + message.getContent());48. Flags flags = message.getFlags();49. if (flags.contains(Flags.Flag.SEEN))50. System.out.println("这是一封已读邮件");51. else {52. System.out.println("未读邮件");53. }54. System.out55. .println("========================================================");56. System.out57. .println("========================================================");58. //每封邮件都有一个MessageNumber,可以通过邮件的MessageNumber在收件箱里面取得该邮件59. messageNumber = message.getMessageNumber();60. }61. Message message = folder.getMessage(messageNumber);62. System.out.println(message.getContent()+message.getContentType());63. // 释放资源64. if (folder != null)65. folder.close(true);66. if (store != null)67. store.close();68. }69.70. }。

基于Javamail的邮件收发系统-JAVA毕业设计论文

基于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实现电子邮件的发送、电子邮件的接收等等功能。

电子邮件接收程序

电子邮件接收程序

网络编程技术课程设计报告专业 计算机科学与技术信息工程学院题目:电子邮件接收程序1. 概述随着因特网的普及,电子邮件已经成为人们日常工作、生活中必不可少的通信工具。

客户端接收邮件时,POP3可以用来读取和保存接收到的邮件,允许客户端连接到服务器并下载所有的邮件到客户机上的邮箱。

这次课程设计是用java语言实现了基于POP3的邮件接收程序,要求能通过POP3邮件服务器接收邮件并查看邮件的属性及标题和内容等,能删除邮件服务器中的邮件。

2. 设计原理POP3邮件服务器通过侦听TCP端口110提供POP3服务。

客户端软件读取邮件之前,需要先与服务器建立TCP连接。

连接成功后,POP3服务器会向该客户端发送确认消息。

然后客户端根据服务器回送的信息决定下一步的操作。

在POP3协议中,规定的命令只有十几条。

每条命令均由命令和参数两部分组成,而且每条命令都以回车换行结束。

命令和参数之间空格隔开。

POP3命令包含一个大小写无关的关键字和一个或多个参量,所有的命令以<CR><LF>(回车换行符)作为其结束标志。

关键字和参量必须是非控制符的ASCII码字符。

关键字和参量之间,参量和参量之间由一个空格字符分隔开。

命令部分由3至4个字母组成,参数部分最多可达40个字符长度。

POP3服务器回送的响应信息由一个状态码和一个可能跟有附加消息的字符串组成。

状态码有两种:“确定”和“失败”。

客户端每次向POP3服务器发送命令后,都要等待服务器响应,并处理接受的信息,然后再接着发送下一个命令,如此反复多次,一直持续到断开连接。

这个过程经历了3个状态:授权(AUTHORIZATION)状态、操作(TRANSACTION)状态和更新(UPDATE)状态。

POP3交互过程中的状态转换如图1所示:图1 POP3的状态转换示意图POP3交互模型基本原理为:POP3接收者对POP3发送者进行初始化连接,发送者对接收者发送询问指令“READY”,接收者则向发送者提交所要接收数据的要求,发送者做出回应,并发送数据。

java后端接收多个文件的方法

java后端接收多个文件的方法

java后端接收多个文件的方法在Java后端接收多个文件,通常可以使用Spring Boot框架来实现。

下面是一个简单的示例,演示如何使用Spring Boot 来接收多个文件:1. 首先,确保你的项目已经引入了Spring Boot的相关依赖。

在`pom.xml`文件中添加以下依赖:```xml<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>```2. 创建一个控制器类,用于处理文件上传请求。

例如,我们可以创建一个名为`FileUploadController`的类:```javaimportorg.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.util.StringUtils;importorg.springframework.web.bind.annotation.PostMapping;importorg.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import java.io.File;import java.io.IOException;import java.util.ArrayList;import java.util.List;import java.util.UUID;@Controllerpublic class FileUploadController {@Value("${file.upload.path}")private String uploadPath; // 上传文件保存的路径,需要在application.properties中配置该属性@PostMapping("/upload")public String upload(@RequestParam("files") MultipartFile[] files) {List<String> fileNames = new ArrayList<>();for (MultipartFile file : files) {if (!file.isEmpty()) {String fileName = StringUtils.cleanPath(file.getOriginalFilename());File dest = new File(uploadPath +File.separator + fileName);try {file.transferTo(dest);fileNames.add(fileName);} catch (IOException e) {e.printStackTrace();}}}// 可以根据需要进一步处理,比如返回上传结果或其他操作return "redirect:/upload-success"; // 假设你有一个名为upload-success的页面来展示上传结果}}```在上面的代码中,我们使用了`@PostMapping`注解来处理POST 请求,`@RequestParam("files")`注解用于接收名为"files"的多个文件。

JavaMail收发邮件

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)。

java实现文件接收_Java实现文件上传

java实现文件接收_Java实现文件上传

java实现文件接收_Java实现文件上传1. 创建一个Servlet类,处理文件上传请求。

```javaimport java.io.File;import java.io.IOException;import java.util.List;import javax.servlet.ServletException;import javax.servlet.annotation.MultipartConfig;import javax.servlet.annotation.WebServlet;public class FileUploadServlet extends HttpServletprivate static final long serialVersionUID = 1L;protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException// 检查请求是否为multipart/form-data类型if (!ServletFileUpload.isMultipartContent(request))response.getWriter(.println("Error: Form must has enctype=multipart/form-data.");response.setStatus(HttpServletResponse.SC_BAD_REQUEST);return;}// 创建一个DiskFileItemFactory对象,用于设置临时存储文件的目录和大小限制DiskFileItemFactory factory = new DiskFileItemFactory(;factory.setSizeThreshold(1024 * 1024); // 设置内存缓冲区大小为1MBfactory.setRepository(newFile(System.getProperty("java.io.tmpdir"))); // 设置临时文件目录// 创建ServletFileUpload对象,并设置上传文件的最大大小限制ServletFileUpload upload = new ServletFileUpload(factory);upload.setSizeMax(1024 * 1024 * 10); // 设置上传文件的最大大小为10MBtryList<FileItem> items = upload.parseRequest(request); // 解析请求中的所有文件项for (FileItem item : items)if (!item.isFormField() { // 判断当前文件项是否为普通表单字段String fileName = new File(item.getName().getName(; // 获取文件名String filePath = "C:/upload/" + fileName; // 设置文件保存路径item.write(new File(filePath)); // 保存文件到服务器response.getWriter(.println("File uploaded successfully: " + fileName);}}} catch (FileUploadException e)response.getWriter(.println("Error: " + e.getMessage();response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ER ROR);} catch (Exception e)response.getWriter(.println("Error: " + e.getMessage();response.setStatus(HttpServletResponse.SC_BAD_REQUEST);}}```2. 在web.xml中注册Servlet。

javamailsenderimpl 协议

javamailsenderimpl 协议

很高兴能为您撰写一篇关于“javamailsenderimpl协议”的高质量文章。

在撰写之前,我会先对这个主题进行充分的评估,确保文章能够深入探讨并全面解释相关内容。

1. 该协议的基本概念和原理javamailsenderimpl协议是一种用于在Java中发送电流信箱的协议,它基于JavaMail API实现了邮件的发送和接收功能。

通过jvamailsenderimpl协议,开发人员可以使用Java程序来发送邮件,实现了邮件发送的自动化和定制化。

2. 该协议的使用和应用场景javamailsenderimpl协议通常在Web应用程序中广泛使用,特别是那些需要发送邮件的场景,比如注册、通知、验证等。

通过该协议,开发人员可以轻松地集成邮件发送功能到他们的应用程序中,并且可以进行高度定制化,满足各种业务需求。

3. 个人观点和理解我个人认为javamailsenderimpl协议在邮件发送领域发挥了非常重要的作用,它简化了邮件发送的流程,提高了开发效率。

而且,由于可以通过Java程序来控制邮件的发送过程,因此也提供了更多的个性化定制选项。

在实际的项目中,我曾经使用过该协议来实现邮件发送功能,深刻体会到了它的便利性和可靠性。

4. 总结javamailsenderimpl协议是一种能够在Java应用程序中方便地实现邮件发送功能的协议,它的使用和应用场景非常广泛,能够很好地满足各种邮件发送需求。

通过该协议,开发人员可以轻松地集成邮件发送功能到他们的应用程序中,并且可以进行高度定制化,满足各种业务需求。

以上是一些初步的观点和思路,接下来我会根据这些内容进一步撰写并完善文章,以确保文章的深度和广度兼具。

希望能为您撰写一篇满意的高质量文章!javamailsenderimpl协议是一个用于在Java应用程序中发送电流信箱的协议,它基于JavaMail API实现了邮件的发送和接收功能。

JavaMail API是一个用于处理电流信箱的Java标准扩展,它提供了一种方便的方式来发送和接收电流信箱。

Java实现读取163邮箱,qq邮箱的邮件内容

Java实现读取163邮箱,qq邮箱的邮件内容

Java实现读取163邮箱,qq邮箱的邮件内容通过使⽤java mail来实现读取163邮箱,qq邮箱的邮件内容。

1.代码实现创建springboot项⽬,引⼊依赖包<!--mail--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>实现类import com.sun.mail.imap.IMAPFolder;import com.sun.mail.imap.protocol.IMAPProtocol;import org.apache.tomcat.util.http.fileupload.IOUtils;import org.springframework.util.ObjectUtils;import javax.mail.*;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeUtility;import java.io.*;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.*;public class ShowMail {public static String NORM_DATETIME_PATTERN = "yyyy-MM-dd hh:mm:ss";private MimeMessage mimeMessage;/*** 附件下载后的存放⽬录*/private String saveAttachPath = "";/*** 存放邮件内容的StringBuffer对象*/private StringBuffer bodyText = new StringBuffer();/*** 构造函数,初始化⼀个MimeMessage对象** @param mimeMessage*/public ShowMail(MimeMessage mimeMessage) {this.mimeMessage = mimeMessage;}/*** 获得发件⼈的地址和姓名** @return* @throws MessagingException*/public String getFrom() throws MessagingException {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 = null;if (personal != null || from != null) {fromAddr = personal + "<" + from + ">";}return fromAddr;}/*** 获得邮件的收件⼈,抄送,和密送的地址和姓名,根据所传递的参数的不同** @param type "to"----收件⼈ "cc"---抄送⼈地址 "bcc"---密送⼈地址* @return* @throws MessagingException* @throws UnsupportedEncodingException*/public String getMailAddress(String type) throws MessagingException, UnsupportedEncodingException { if (ObjectUtils.isEmpty(type)) {return "";}String addType = type.toUpperCase();if (!addType.equals("TO") && !addType.equals("CC") && !addType.equals("BCC")) {return "";}InternetAddress[] address;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 (ObjectUtils.isEmpty(address)) {return "";}StringBuilder mailAddr = new StringBuilder();String emailAddr;String personal;for (int i = 0; i < address.length; i++) {emailAddr = address[i].getAddress();if (emailAddr == null) {emailAddr = "";} else {emailAddr = MimeUtility.decodeText(emailAddr);}personal = address[i].getPersonal();if (personal == null) {personal = "";} else {personal = MimeUtility.decodeText(personal);}mailAddr.append(",").append(personal).append("<").append(emailAddr).append(">");}return mailAddr.toString().substring(1);}/*** 获得邮件主题** @return* @throws MessagingException* @throws UnsupportedEncodingException*/public String getSubject() throws MessagingException, UnsupportedEncodingException {String subject = MimeUtility.decodeText(mimeMessage.getSubject());if (subject == null) {subject = "";}return subject;}/*** 获得邮件发送⽇期** @return* @throws MessagingException*/public String getSentDate() throws MessagingException {Date sentDate = mimeMessage.getSentDate();SimpleDateFormat format = new SimpleDateFormat(NORM_DATETIME_PATTERN);return format.format(sentDate);}/*** 获得邮件正⽂内容** @return*/public String getBodyText() {return bodyText.toString();}/*** 解析邮件,把得到的邮件内容保存到⼀个StringBuffer对象中,解析邮件* 主要是根据MimeType类型的不同执⾏不同的操作,⼀步⼀步的解析* @param part* @throws MessagingException* @throws IOException*/public void getMailContent(Part part) throws MessagingException, IOException {String contentType = part.getContentType();int nameIndex = contentType.indexOf("name");boolean conName = false;if (nameIndex != -1) {conName = true;}if (part.isMimeType("text/plain") && conName == false) {bodyText.append((String) part.getContent());} else if (part.isMimeType("text/html") && conName == false) {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++) {this.getMailContent(multipart.getBodyPart(i));}} else if (part.isMimeType("message/rfc822")) {this.getMailContent((Part) part.getContent());}}/*** 判断此邮件是否需要回执,如果需要回执返回"true",否则返回"false"** @return* @throws MessagingException*/public boolean getReplySign() throws MessagingException {boolean replySign = false;String needReply[] = mimeMessage.getHeader("Disposition-Notification-To");if (needReply != null) {replySign = true;}return replySign;}/*** 判断此邮件是否已读,如果未读返回false,反之返回true** @return* @throws MessagingException*/public boolean isNew() throws MessagingException {boolean isNew = false;Flags flags = mimeMessage.getFlags();Flags.Flag[] flag = flags.getSystemFlags();for (int i = 0; i < flag.length; i++) {if (flag[i] == Flags.Flag.SEEN) {isNew = true;}}return isNew;}/*** 判断此邮件是否包含附件** @param part* @return* @throws MessagingException* @throws IOException*/public boolean isContainAttach(Part part) throws MessagingException, IOException { boolean attachFlag = false;if (part.isMimeType("multipart/*")) {Multipart mp = (Multipart) part.getContent();BodyPart mPart;String conType;for (int i = 0; i < mp.getCount(); i++) {mPart = mp.getBodyPart(i);String disposition = mPart.getDisposition();if (Part.ATTACHMENT.equals(disposition) || Part.INLINE.equals(disposition)) {} else if (mPart.isMimeType("multipart/*")) {attachFlag = this.isContainAttach(mPart);} else {conType = mPart.getContentType();if (conType.toLowerCase().indexOf("application") != -1 || conType.toLowerCase().indexOf("name") != -1){ attachFlag = true;}}}} else if (part.isMimeType("message/rfc822")) {attachFlag = isContainAttach((Part) part.getContent());}return attachFlag;}/*** 保存附件** @param part* @throws MessagingException* @throws IOException*/public void saveAttachMent(Part part) throws MessagingException, IOException {String fileName;if (part.isMimeType("multipart/*")) {Multipart mp = (Multipart) part.getContent();BodyPart mPart;for (int i = 0; i < mp.getCount(); i++) {mPart = mp.getBodyPart(i);String disposition = mPart.getDisposition();if (Part.ATTACHMENT.equals(disposition) || Part.INLINE.equals(disposition)) {fileName = mPart.getFileName();if (null != fileName && fileName.toLowerCase().indexOf("gb2312") != -1) {fileName = MimeUtility.decodeText(fileName);}this.saveFile(fileName, mPart.getInputStream());} else if (mPart.isMimeType("multipart/*")) {this.saveAttachMent(mPart);} else {fileName = mPart.getFileName();if ((fileName != null) && (fileName.toLowerCase().indexOf("GB2312") != -1)) {fileName = MimeUtility.decodeText(fileName);this.saveFile(fileName, mPart.getInputStream());}}}} else if (part.isMimeType("message/rfc822")) {this.saveAttachMent((Part) part.getContent());}}/*** 设置附件存放路径** @param attachPath*/public void setAttachPath(String attachPath) {this.saveAttachPath = attachPath;}/*** 获得附件存放路径** @return*/public String getAttachPath() {return saveAttachPath;}/*** 真正的保存附件到指定⽬录⾥** @param fileName* @param in* @throws IOException*/private void saveFile(String fileName, InputStream in) throws IOException {String osName = System.getProperty("");String storeDir = this.getAttachPath();if (null == osName) {osName = "";}if (osName.toLowerCase().indexOf("win") != -1) {if (ObjectUtils.isEmpty(storeDir))} else {storeDir = "/tmp";}// fileName=fileName.replace("=?", "");// fileName=fileName.replace("?=", "");// fileName = fileName.substring(fileName.length() - 6, fileName.length());FileOutputStream fos = new FileOutputStream(new File(storeDir + File.separator + fileName));IOUtils.copy(in, fos);IOUtils.closeQuietly(fos);IOUtils.closeQuietly(in);}/*** 获取163邮箱信息** @param host* @param username* @param password* @param protocol* @return* @throws MessagingException*/public static Message[] getWEMessage(String host, String username, String password, String protocol) throws MessagingException { //创建属性对象Properties props = System.getProperties();props.setProperty("mail.store.protocol", protocol);//创建会话Session session = Session.getDefaultInstance(props, null);//存储对象Store store = session.getStore(protocol);//连接store.connect(host, username, password);//创建⽬录对象Folder folder = store.getFolder("INBOX");if (folder instanceof IMAPFolder) {IMAPFolder imapFolder = (IMAPFolder)folder;//javamail中使⽤id命令有校验checkOpened, 所以要去掉id⽅法中的checkOpened();imapFolder.doCommand(new IMAPFolder.ProtocolCommand() {public Object doCommand(IMAPProtocol p) throws com.sun.mail.iap.ProtocolException {p.id("FUTONG");return null;}});}if(folder != null) {folder.open(Folder.READ_WRITE);}return folder.getMessages();}/*** 获取qq邮箱信息** @param host* @param username* @param password* @param protocol* @return* @throws MessagingException*/public static Message[] getQQMessage(String host, String username, String password, String protocol) throws MessagingException { //创建属性对象Properties props = new Properties();props.put("mail.store.protocol", protocol);//创建会话Session session = Session.getDefaultInstance(props, null);//存储对象Store store = session.getStore(protocol);//连接store.connect(host,username,password);//创建⽬录对象Folder folder = store.getFolder("Inbox");if(folder != null) {folder.open(Folder.READ_WRITE);}return folder.getMessages();}/*** 过滤邮箱信息** @param messages* @param fromMail 只读取该邮箱发来的邮件,如果为空则不过滤* @param startDate 只读取该⽇期以后的邮件,如果为空则不过滤* @return* @throws MessagingException*/public static List<Message> filterMessage(Message[] messages, String fromMail, String startDate) throws MessagingException, ParseException {List<Message> messageList = new ArrayList<>();if (ObjectUtils.isEmpty(messages)) {return messageList;}boolean isEnptyFromMail = ObjectUtils.isEmpty(fromMail);boolean isEnptyStartDate = ObjectUtils.isEmpty(startDate);if (isEnptyFromMail && isEnptyStartDate) {return Arrays.asList(messages);}String from;for (Message message: messages) {from = null;if(message.getFrom() != null) {from = (message.getFrom()[0]).toString();}if (isEnptyFromMail) {if (message.getSentDate() != null && new SimpleDateFormat(NORM_DATETIME_PATTERN).parse(startDate).getTime() > message.getSentDate().getTime()) { continue;}} else if (null != from && from.contains(fromMail)) {if (!isEnptyStartDate && new SimpleDateFormat(NORM_DATETIME_PATTERN).parse(startDate).getTime() > message.getSentDate().getTime()) {continue;}} else {continue;}messageList.add(message);}return messageList;}/*** 打印邮件** @param messageList* @throws IOException* @throws MessagingException*/public static void printMailMessage(List<Message> messageList) throws IOException, MessagingException {System.out.println("邮件数量:" + messageList.size());ShowMail re;Message message;for (int i = 0, leng = messageList.size(); i < leng; i++) {message = messageList.get(i);re = new ShowMail((MimeMessage) message);System.out.println("邮件【" + i + "】主题:" + re.getSubject());System.out.println("邮件【" + i + "】发送时间:" + re.getSentDate());System.out.println("邮件【" + i + "】是否需要回复:" + re.getReplySign());System.out.println("邮件【" + i + "】是否已读:" + re.isNew());System.out.println("邮件【" + i + "】是否包含附件:" + re.isContainAttach( message));System.out.println("邮件【" + i + "】发送⼈地址:" + re.getFrom());System.out.println("邮件【" + i + "】收信⼈地址:" + re.getMailAddress("to"));System.out.println("邮件【" + i + "】抄送:" + re.getMailAddress("cc"));System.out.println("邮件【" + i + "】暗抄:" + re.getMailAddress("bcc"));System.out.println("邮件【" + i + "】发送时间:" + re.getSentDate());System.out.println("邮件【" + i + "】邮件ID:" + ((MimeMessage) message).getMessageID());re.getMailContent(message);System.out.println("邮件【" + i + "】正⽂内容:\r\n" + re.getBodyText());re.setAttachPath("D:\\Download\\mailFile\\");re.saveAttachMent(message);}}public static void main(String[] args) throws MessagingException, IOException, ParseException {//163登录信息//邮件服务器String host = "";//邮箱账号String username = "xx";//授权码String password = "yy";//协议String protocol = "imaps";//只读取该邮箱发来的邮件String fromMail = null;//只读取该⽇期以后的邮件String startDate = null;List<Message> messageList = filterMessage(getWEMessage(host, username, password, protocol), fromMail, startDate);printMailMessage(messageList);String host2 = "";String username2 = "xx";String password2 = "yy";// String protocol2 = "imaps";String protocol2 = "pop3";String fromMail2 = null;String startDate2 = null;List<Message> messageList2 = filterMessage(getQQMessage(host2, username2, password2, protocol2), fromMail2, startDate2); printMailMessage(messageList2);}}2.配置授权码163邮箱:qq邮箱:3.实现效果:运⾏main⽅法,查看控制台:邮件数量:xx邮件【0】主题:欢迎您使⽤xx邮箱!邮件【0】发送时间:xx邮件【0】是否需要回复:false邮件【0】是否已读:true邮件【0】是否包含附件:false邮件【0】发送⼈地址:xx邮件【0】收信⼈地址:xx邮件【0】抄送:邮件【0】暗抄:邮件【0】发送时间:xx邮件【0】邮件ID:xx邮件【0】正⽂内容:<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>欢迎使⽤</title><style>body, div, p, img {padding: 0;margin: 0;font-family: 'Microsoft Yahei', "PingFang SC", "Hiragino Sans GB", "wenquanyi micro hei", Arial, Helvetica, "STHeiti", sans-serif; }.contain {width: 700px;margin: 0 auto;font-size: 0;}.wrap {position: relative;}.wrap .welcome {position: absolute;width: 290px;left: 75px;top: 100px;font-size: 18px;color: #fff;line-height: 32px;font-weight: 500;}.wrap .welcome p.indentation {font-size: 16px;font-weight: normal;}.wrap a {position: absolute;display: block;width: 104px;height: 39px;}.wrap a.mobile{left: 501px;top: 434px;}left: 501px;top: 485px;}</style></head><body><div class="contain"><div class="wrap"><div class="welcome"><p class="indentation-title">尊敬的xx:</p><p class="indentation">您好,您的邮箱已开通。

手机邮箱收发源代码

手机邮箱收发源代码
public MailClient() {
// TODO Auto-generated constructor stub
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
// TODO Auto-generated method stub
}
public void setFrom(String from) {
this.from = from; } private String emailAddreress() {
return emailAddress; }
public void setEmailAddress(String emailAddress) {
}
//下面定义了一些成员变量和成员方法 private String content; public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
import mand;
import mandListener;
import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Form;
public SendForm getSendForm() {
return sendForm;
}
public void setSendForm(SendForm sendForm) {

java mail send方法

java mail send方法

一、Java M本人l简介Java M本人l是用于在Java应用程序中发送、接收和管理电流新箱的API。

它提供了一种方便的方式来处理电流新箱,包括创建和发送电流新箱、接收邮件、检查邮件和删除邮件等功能。

二、Java M本人l发送邮件的方法发送邮件是Java M本人l API中最常用的功能之一。

下面是使用Java M本人l API发送邮件的步骤和方法:1. 导入相关的包在使用Java M本人l发送邮件之前,首先需要导入相关的包。

通常情况下,你需要导入javax.m本人l和javax.m本人l.internet这两个包。

2. 创建M本人l Session使用javax.m本人l.Session类创建一个用于连接到邮件服务器的会话对象。

会话对象包含了发送邮件所需的所有配置信息,比如邮件服务器的位置区域、端口号、账号和密码等。

你可以使用Session.getDefaultInstance()方法获取默认的会话对象,也可以使用Session.getInstance()方法根据自定义的配置获取会话对象。

3. 创建MimeMessage对象使用javax.m本人l.internet.MimeMessage类来创建一封邮件。

MimeMessage对象表示一封MIME格式的邮件,包括邮件的发件人、收件人、主题、正文和附件等信息。

4. 设置邮件内容在创建MimeMessage对象之后,可以使用其提供的方法来设置邮件的内容,比如设置发件人、收件人、主题、正文和附件等信息。

5. 发送邮件使用Transport类的send()方法来发送邮件。

在调用send()方法之前,需要先连接到邮件服务器,并使用账号和密码进行身份验证。

发送邮件成功后,需要关闭邮件连接。

三、示例代码下面是一个使用Java M本人l API发送邮件的示例代码:```javaimport javax.m本人l.*;import javax.m本人l.internet.*;import java.util.Properties;public class SendM本人l {public static void m本人n(String[] args) {// 设置邮件服务器Properties properties = new Properties();properties.setProperty("m本人l.smtp.host","smtp.example");properties.setProperty("m本人l.smtp.port", "25");// 创建会话对象Session session = Session.getDefaultInstance(properties);try {// 创建MimeMessage对象MimeMessage message = new MimeMessage(session);// 设置发件人message.setFrom(new InternetAddress("xxx"));// 设置收件人message.addRecipient(Message.RecipientType.TO, new InternetAddress("xxx"));// 设置主题message.setSubject("Test Em本人l");// 设置正文message.setText("This is a test em本人l.");// 发送邮件Transport.send(message);System.out.println("Em本人l sent successfully!");} catch (MessagingException e) {e.printStackTrace();}}}```四、注意事项在使用Java M本人l发送邮件时,需要注意以下几点:1. 邮件服务器的配置在发送邮件之前,需要确保邮件服务器的配置信息是正确的,包括服务器位置区域、端口号、账号和密码等。

Java课程设计邮件收发系统

Java课程设计邮件收发系统

Java课程设计邮件收发系统一、教学目标本课程的教学目标是使学生掌握Java语言基础,能够运用Java开发一个简单的邮件收发系统。

具体分为以下三个维度:1.知识目标:使学生掌握Java语言的基本语法、面向对象编程思想、常用类库和API。

2.技能目标:培养学生运用Java语言解决实际问题的能力,能够独立开发一个简单的邮件收发系统。

3.情感态度价值观目标:培养学生对计算机科学的兴趣,增强其团队合作意识和创新精神。

二、教学内容教学内容以《Java核心技术》为基础,按照教材的章节顺序进行讲解。

主要内容包括:1.Java语言基本语法:数据类型、运算符、控制结构、数组、字符串等。

2.面向对象编程:类、对象、继承、多态、封装等。

3.Java常用类库和API:Java标准库、集合框架、多线程、网络编程等。

4.邮件收发系统开发:SMTP协议、POP3协议、JavaMl API等。

三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法。

1.讲授法:用于讲解Java语言的基本语法、面向对象编程思想和常用类库。

2.案例分析法:通过分析实际案例,使学生掌握Java语言在实际问题中的应用。

3.实验法:安排实验课程,让学生动手实践,独立开发邮件收发系统。

四、教学资源1.教材:《Java核心技术》2.参考书:《Java Web开发实战》、《JavaMl编程指南》3.多媒体资料:PPT、教学视频、在线教程4.实验设备:计算机、网络设备5.在线编程平台:LeetCode、牛客网五、教学评估本课程的评估方式包括平时表现、作业、考试和项目实践四个方面,以保证评估的客观性和公正性。

1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和积极性。

2.作业:布置课后作业,评估学生对知识点的理解和应用能力。

3.考试:定期进行理论知识考试,评估学生的知识掌握程度。

4.项目实践:要求学生独立开发一个邮件收发系统,评估学生的实际操作能力和解决问题的能力。

基于java的邮件收发系统设计与实现

基于java的邮件收发系统设计与实现

摘要基于Java的邮件收发系统设计与实现在当今信息交流社会中,电子邮件在人们日常工作中扮演了举足轻重的角色,因为,太多的人们使用其发送不同的多媒体附件数据,且这种趋势势必会继续增加。

虽然,目前已经有不少的邮件收发系统,但是,大多数的邮件收发系统不能满足用户需求。

因此,论文详细地阐述关于Java 语言实现的邮件收发应用系统。

本文使用Java的面向图形用户界面编程方式,并且利用了网络协议中SMTP和POP作为底层开发的基础,实现了从协议底层开发与设计邮件收发系统软件。

SMTP协议的作用是发送邮件。

POP3协议全称是邮局协议第三版,作用是接收邮件。

本文中研发出完整的邮件收发系统,这个邮件收发应用程序可以发送纯文本邮件,也可发送带附件的邮件。

当然,登陆系统时可以选择使用不同的SMTP服务器。

经过开发测试,证明邮件收发系统软件满足用户需求。

邮件收发应用程序开发涉及到整体的系统界面设计与实现、网络协议分析与设计、系统功能实现编码工作等多个方面的内容。

本文的邮件收发系统主要包括邮件收发系统的登陆管理界面、邮件发送界面、接收邮件界面邮件定时发送界面和邮件提醒界面等基本功能,文中将会涉及到邮件系统的架构设计方法。

在该系统设计过程中要充分分析系统的逻辑结构图,其中主要包括:系统功能结构流程设计、系统的数据库表结构以及字段设计,业务功能的函数参数处理情况等等。

在整个的论文设计过程中,本文详细规划了邮件系统的全部功能模块及其功能描述,系统导航条菜单项的设置等等。

在本文的邮件系统的编码过程中,开发人员将会实现主要业务功能,系统的前段控件的事件处理过程以及页面美工实现。

最后,根据论文的设计需求对邮件收发管理系统整体测试,并在此给出部分功能的界面截图效果。

关键词:Java,SMTP协议,POP3协议,电子邮件AbstractDesign and Implementation of Mail System Transmit-Receive Based On Java In today's information society,e-mail in the people's life and work has played an important role,because too many people use it to send multimedia data of different accessories,and this trend will continue to increase.Although,there are a lot of mail receiving and sending system,but most of the e-mail system can not meet the needs of users.Therefore,the paper describes in detail the implementation of the Java language mail application system.In this paper,we use the Java oriented graphical user interface programming,and use the SMTP and POP in the network protocol as the basis for the development of the bottom. SMTP protocol is to send mail.The full name of the POP3protocol is the third version of the post office protocol,the role is to receive mail.In this paper,the development of a complete mail transceiver system,the mail application can send text messages,e-mail can also be sent with attachments.Of course,the landing system can choose to use different SMTP server.After the development of testing,to prove that the mail system software to meet user needs.The development and application of the mail sending and receiving application involves the design and implementation of the whole system interface,the analysis and design of the network protocol,the realization of the system function and so on.The mail system of this paper includes mail system login management interface,mail interface, receiving mail interface regularly send mail and mail reminder interface basic function interface,this paper will involve mail system architecture design method.In the system design process to fully analyze the logical structure of the system,which mainly includes: the structure and field of database design system function structure design process,system, business function parameters etc..In the whole design process of the paper,this text has designed all the function modules and the function description of the mail system in detail. In this paper,the coding process of the mail system,the developer will be able to achieve the main business functions,the system controls the event handling process and the realization of the page.Finally,according to the design requirements of the paper, the overall test of the mail management system is given.Keywords:Java,SMTP protocol,POP3protocol,E-mail目录摘要 (I)ABSTRACT (III)目录 (I)第1章绪论 (3)1.1课题来源 (2)1.2国内外相关研究综述 (2)1.3研究此课题的意义 (3)1.4论文的结构与组织 (4)第2章电子邮件的传输原理研究 (5)2.1关于电子邮件 (6)2.1.1电子邮件的接受与发送 (6)2.1.2电子邮件地址的构成 (6)2.2电子邮件的工作原理 (6)2.3SMTP的工作原理 (9)2.3.1POP3协议介绍 (10)2.3.2POP3协议指令 (10)2.3.3POP3工作原理 (11)2.4电子信件格式的标准 (12)2.4.1RFC822介绍 (12)2.4.2信件的头部 (13)2.4.3标准的信头字段 (13)2.5本章小结 (16)第3章电子邮件系统设计 (16)3.1开发步骤 (17)3.1.1开发准备 (17)3.1.2环境搭建 (17)3.2系统实体分析 (18)3.2.1实体分析 (18)3.2.2实体类图分析 (18)3.3邮件收发系统的模块与功能设计 (19)3.3.1系统模块 (19)3.3.2模块功能 (20)3.4功能模块的流程图 (21)3.4.1系统功能的总体框架图 (21)3.4.2发送邮件流程图 (21)3.4.3阅读邮件流程图 (22)3.4.4邮件收发系统的详细功能图 (22)3.5数据库设计 (22)3.5.1数据库概念设计 (22)3.5.2部分数据表结构设计 (23)3.6本章小结 (24)第4章邮件收发系统的功能界面 (25)4.1邮件收发系统登录界面 (25)4.2系统的主界面 (26)4.3发送邮件界面 (26)4.4收件箱、回收站界面 (29)4.5联系人界面 (30)4.7新邮件提醒通知 (31)4.8邮件收发系统的部分代码 (31)4.8.1发送代码 (31)4.8.2接收代码 (32)4.8.3检查邮件 (34)4.8.4联系人列表表格模型 (34)4.8.5邮件操作代码 (35)4.9本章小结 (37)第五章总结与展望 (38)参考文献 (38)作者简介及在学期间所取得的科研成果 (41)致谢 (42)第1章绪论第1章绪论1.1课题来源电子邮件作为互联网上传输多媒体文件的重要工具,从电子邮件的诞生以来,都是基于通信网络协议为对方提供数据交换的全部过程。

JavaEE5学习笔记04-JavaMail使用总结

JavaEE5学习笔记04-JavaMail使用总结

JavaEE5学习笔记04-JavaMail使用总结刘岩Email:suhuanzheng7784877@1.JavaMail简介其实利用JavaMail API发送邮件本身没什么,在Java Web系统中也可以将自的Foxmail。

因为它确实为您屏蔽了底层的通讯协议、发送细节等等。

2.常用接口JavaMail常用的接口有如下几个1.javax.mail.Session:代表一次邮件会话。

2.javax.mail.Transport3.此类用于邮件的读取、写、监视、查找等等操作如下操作4.javax.mail.Folder用于组织邮件,代表邮件系统的一个文件夹。

5.javax.mail.MimeMessage实际的邮件对象它下属性bte[] content:邮件内容的字节数组InternetHeaders header:邮件的文件头对象它还有如下方法Void addFrom():设置发件人Void addHeader():设置邮件头信息Void addRecipients():增加收件地址Address[] getFrom():返回邮件发件人地址列表Void setContent():设置Email的内容6.javax.mail.Address制定人发件人、收件人地址,它也是一个抽象类,他有一个InternetAddress 子类。

7.javax.mail.Multipart用于保存电子邮件的内容的容器,它定义了添加、删除、获得电子邮件内容的方法。

他也是抽象类,有一个子类叫做MimeMultipart。

8.javax.mail.BodyPart以上代码示例出现了MimeBodyPart,他是BodyPart的子类,代表邮件内容的一部分,既可以代表邮件正文、也可以代表邮件的附件。

上面是描绘了一个普通的字符串。

9.javax.activation.DataHandler10.javax.activation.FileDataSource一般是附件文件对象,可以用于给邮件增加附件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

import java.util.Properties;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.URLName;
//import com.sun.mail.pop3.POP3Folder;
import com.sun.mail.imap.*;
/**
* 使用pop3协议获取未读邮件数
*
*/
class Email3 {
public static void main(String[] args) throws Exception {
String user = "zhui@";// 邮箱的用户名
String password = "*********"; // 邮箱的密码
Properties prop = System.getProperties();
prop.put("mail.store.protocol", "pop3");
prop.put("mail.pop3.host", "");
//222.24.19.131 IMAP
/*
Session session = Session.getInstance(prop);
session.setDebug(true);
Store store = (Store) session.getStore("pop3"); // 使用imap会话机制,连接服务器
store.connect("", user, password);
*/
URLName url = new URLName("pop3", "", 110, "INBOX", "帐号", "密码");
Session session = Session.getInstance(prop, null);
session.setDebug(true);
Store store = session.getStore(url);
store.connect();
Folder folder = (Folder) store.getFolder("INBOX"); // 收件箱
//folder.open(Folder.READ_WRITE);
folder.open(Folder.READ_ONL Y);
// 获取总邮件数
int total = 0;
total = folder.getMessageCount();
//total = folder.getUnreadMessageCount();
//total = folder.getNewMessageCount();
System.out.println("-----------------共有未读邮件:" + total + " 封--------------");
System.out.println("-----------------共有已读邮件:" + folder.getUnreadMessageCount() + " 封--------------");
System.out.println("-----------------共有新邮件:" + folder.getNewMessageCount() + " 封--------------");
// 得到收件箱文件夹信息,获取邮件列表
//System.out.println("未读邮件数:" + folder.getUnreadMessageCount());
Message[] messages = folder.getMessages();
int messageNumber = 0;
for (Message message : messages) {
System.out.println("发送时间:" + message.getSentDate());
System.out.println("主题:" + message.getSubject());
//System.out.println("内容:" + message.getContent());
Flags flags = message.getFlags();
if (flags.contains(Flags.Flag.SEEN))
System.out.println("这是一封已读邮件");
else {
System.out.println("未读邮件");
}
System.out.println("==================================================== ====");
System.out.println("==================================================== ====");
//每封邮件都有一个MessageNumber,可以通过邮件的MessageNumber在收件箱里面取得该邮件
messageNumber = message.getMessageNumber();
Message msg = folder.getMessage(messageNumber);
//System.out.println(msg.getContent()+msg.getContentType());
}
// 释放资源
if (folder != null)
folder.close(false);
if (store != null)
store.close();
}
}。

相关文档
最新文档