`
victorKevin
  • 浏览: 13746 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

用pop3收取gmail的邮件

阅读更多

用Pop3收取gmail的邮件

问题描述:

用pop3收取gmail的邮件  入口参数: 用户名 / 密码  做一个线程,每15分钟检查一次邮箱,收取邮箱的邮件,并解码后将标题显示出来
当我看完问题后,灵机一动,马上想到用java.util.TimerTask java.util.Timer类实现是最合适不过,虽然用线程也可以,可是会付出一些不必要的劳动;并且TimerTask类也是依靠线程来实现功能的
代码如下:
java 代码
  1. 测试类:   
  2.   
  3. import java.util.*;   
  4.   
  5. public class Test{   
  6.        
  7.     public static void main(String[] args)throws Exception{   
  8.            
  9.         MailTimerTask task=new MailTimerTask();   
  10.         Timer mailTimer=new Timer();   
  11.         mailTimer.schedule(task,2000,15*60*1000);   
  12.     }   
  13. }   
  14.   
  15.   
  16. import java.util.*;   
  17. import java.io.UnsupportedEncodingException;   
  18. import java.security.*;   
  19. import java.util.Properties;   
  20. import javax.mail.*;   
  21. import javax.mail.internet.InternetAddress;   
  22. import javax.mail.internet.MimeUtility;   
  23. import java.lang.RuntimeException;   
  24.   
  25. public class MailTimerTask extends TimerTask{   
  26.        
  27.     private static Store store=null;   
  28.        
  29.     //静态初始化模块   
  30.     //保证后台只存在一个Store 连接   
  31.     static{   
  32.         try{   
  33.            
  34.         connect("@mailName","@mailPassword");   
  35.            
  36.         }catch(Exception e){   
  37.             e.printStackTrace();   
  38.         }   
  39.     }   
  40.        
  41.        
  42.     public void run(){   
  43.         try{   
  44.            
  45.         System.out.println("正在读取邮箱");   
  46.            
  47.         this.printNewMails(this.getNewMails("@mailName","mailPassword"));   
  48.            
  49.         }catch(Exception e){   
  50.             e.printStackTrace();   
  51.         }   
  52.     }   
  53.        
  54.     public static void connect(String mailName,String mailPassword)throws Exception{   
  55.            
  56.          Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());   
  57.          final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";   
  58.          Properties props = System.getProperties();   
  59.          props.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY);   
  60.          props.setProperty("mail.pop3.socketFactory.fallback""false");   
  61.          props.setProperty("mail.pop3.port""995");   
  62.          props.setProperty("mail.pop3.socketFactory.port""995");   
  63.          Session session = Session.getDefaultInstance(props,null);   
  64.          URLName urln = new URLName("pop3","pop.gmail.com",995,null, mailName,mailPassword);   
  65.          store = session.getStore(urln);   
  66.          store.connect();   
  67.     }   
  68.        
  69.     public Message[] getNewMails(String mailName,String mailPassword)throws Exception{   
  70.            
  71.         //当Store实例没有存在连接时   
  72.         if(store.isConnected()){   
  73.                
  74.           connect(mailName,mailPassword);      
  75.             
  76.         }   
  77.            
  78.                
  79.                
  80.             Folder inbox = store.getFolder("INBOX");   
  81.             inbox.open(Folder.READ_ONLY);   
  82.             FetchProfile profile = new FetchProfile();   
  83.             profile.add(FetchProfile.Item.ENVELOPE);   
  84.                
  85.             //假定存在没有阅读的邮件为新邮件   
  86.             if(inbox.getUnreadMessageCount()>0){   
  87.                    
  88.                 int fetchCount=inbox.getMessageCount()-inbox.getUnreadMessageCount();   
  89.                    
  90.                 if(fetchCount==0){   
  91.                     return inbox.getMessages();   
  92.                 }   
  93.                 Message[] messages = inbox.getMessages(1,2);   
  94.                    
  95.                 return messages;   
  96.             }   
  97.             else{   
  98.                    
  99.                 System.out.println("不存在新邮件");   
  100.                 throw new RuntimeException("不存在新邮件");   
  101.             }   
  102.                
  103.               
  104.            
  105.     }   
  106.        
  107.     public void printNewMails(Message[] msgs)throws Exception{   
  108.            
  109.             for(Message msg:msgs){   
  110.                    
  111.                 String text=msg.getSubject();   
  112.                    
  113.             if (text == null)   
  114.                 System.out.println("该邮件无题");   
  115.             else if (text.startsWith("=GBK") || text.startsWith("=gb2312"))   
  116.                text = MimeUtility.decodeText(text);   
  117.             else  
  118.                text = new String(text.getBytes("gb2312"));   
  119.                   
  120.                System.out.println("--"+text);   
  121.                  
  122.           }   
  123.         }   
  124. }   
分享到:
评论

相关推荐

    写程序用pop3收取gmail的邮件

    标题中的“写程序用pop3收取gmail的邮件”是指通过编程方式使用POP3协议来接收Gmail邮箱中的邮件。POP3(Post Office Protocol version 3)是一种互联网标准,用于从邮件服务器检索电子邮件。在本文中,我们将深入...

    Qt pop3接收邮件并下载附件程序

    在本文中,我们将深入探讨如何使用Qt库中的POP3功能来实现自动登录邮箱、接收邮件以及下载附件。Qt是一个跨平台的应用程序开发框架,广泛应用于C++编程,它提供了丰富的功能,包括网络通信模块,使得我们可以方便地...

    JavaMail收发Gmail邮件

    在使用JavaMail进行Gmail邮件的收发时,需要注意几个关键点: 1. **SSL加密**: 为了确保数据的安全传输,通常会使用SSL加密技术。 2. **Gmail的SMTP和POP3设置**: - SMTP服务器地址: smtp.gmail.com - SMTP端口: ...

    gmail的foxmail设置_foxmail收取gmail邮箱如何设置.docx

    但是,如果您想使用 Foxmail 等第三方电子邮件客户端来管理您的 Gmail 邮箱,那么您需要进行相应的设置。下面,我们将为您介绍如何使用 Foxmail 设置 Gmail 邮箱。 为什么需要设置 Foxmail 作为一款功能强大且流行...

    某公司java笔试题.(超难).doc

    6. **使用POP3收取Gmail邮件**: - **POP3** 是一种邮件接收协议,用于从邮件服务器下载邮件。 - `javax.mail`包提供了对POP3的支持,可以用来连接Gmail的POP3服务器,收取邮件,并解码显示邮件标题。 以上就是...

    笔试JSP2.doc

    可以使用 JavaMail API 来使用 POP3 收取 Gmail 邮件。 编写文件上传 JavaBean 可以使用 Apache Commons FileUpload 库来编写文件上传 JavaBean。 SMTP 和 POP3 的中文含义 SMTP(Simple Mail Transfer Protocol...

    收取电子邮件.rar

    1. 配置电子邮件客户端:首先,你需要选择一个电子邮件客户端,如Outlook、Thunderbird或Apple Mail等,或者使用Webmail服务,如Gmail、Yahoo Mail或Hotmail。然后,根据你的邮件服务提供商,配置SMTP、POP3或IMAP4...

    perennial-mailer:欺骗 Gmail 以合理的时间间隔获取您的 POP3 邮件

    如果您曾经在 Gmail 中使用 POP3 从其他帐户中提取邮件,您会注意到 Gmail 检查新邮件的频率非常低。 据我所知,检查频率是根据您收到电子邮件的频率自动设置的,不能自己设置。 所以我认为让 Gmail 更频繁地获取我...

    indy用发送、收取gmai邮件

    Indy是Delphi编程环境中用于网络通信的一个强大的组件库,它提供了多种...以上就是使用Indy在Delphi中与Gmail服务交互,实现邮件发送和收取的基本过程。实际开发时,可能还需要根据具体需求进行更复杂的定制和优化。

    项目5之电子邮件foxmail及outlook.pptx

    收件人则使用POP3或IMAP4协议从邮件服务器下载邮件。此外,邮件服务器间使用SMTP进行邮件的转发。 总结来说,电子邮件的使用涵盖了从申请免费邮箱、理解电子邮件地址格式,到掌握邮件客户端软件的使用,以及熟悉...

    EAGetMail POP3.txt

    Retrieve email from POP3 server or IMAP4 server and parse email in ASP, VB, VBA, VC++, Managed C++, C#, VB.NET, JScript, ASP.NET, Delphi or other COM/.NET/.NET Core environment applications. SSL, TLS,...

    52电子邮件接收程序.rar_电子邮件接_电子邮件接收_邮件_邮件 接收_邮件接收

    2. **邮件收取**:通过IMAP或POP3协议,程序定期检查邮件服务器,将新邮件下载到本地设备,让用户离线时也能查看邮件。 3. **邮件分类与管理**:程序通常提供收件箱、发件箱、草稿箱和垃圾邮件箱等功能,帮助用户...

    .net 收发邮件

    这个库提供了更高级的功能,如支持POP3、IMAP4邮件收取和SMTP发送,以及MIME解析。安装LumiSoft.Net库后,可以使用以下代码发送邮件: ```csharp using LumiSoft.Net.Mime; using LumiSoft.Net.SMTP.Client; // ...

    linux脚本实现自动发送和收取邮件的设置方法

    收取邮件通常通过POP3或IMAP协议,getmail4是一个适用于命令行的邮件接收工具,支持POP3和IMAP。 **2.1 安装getmail4** 可以使用`sudo apt-get install getmail4`在Ubuntu上安装getmail4。 **2.2 配置...

    JavaMail_简易教程

    - **GmailFetch收取Gmail邮件**:一个专门针对Gmail邮件收取的示例程序。 以上是对JavaMail简易教程的主要知识点总结,通过掌握这些内容,开发者可以利用JavaMail API高效地开发出功能强大的邮件应用程序。

    foxmail6邮件自动收发工具

    通过配置这些协议,用户可以连接到各种邮件服务提供商,例如Gmail、Yahoo Mail、Outlook等,实现邮件的自动收取和发送。 在自动收发设置中,用户可以设定定期检查新邮件的时间间隔,如每5分钟、10分钟或自定义时间...

    因特网提供的服务.pptx

    当邮件发送时,发件人的邮件发送程序将邮件发送至发件人邮件服务器,然后通过SMTP协议传递到收件人邮件服务器,最后由收件人使用邮件阅读程序通过POP3协议收取邮件。如果收件人地址无效,邮件会退回给发件人。 电子...

    中小型邮件服务器系统

    1. **收发邮件**:系统支持SMTP(Simple Mail Transfer Protocol)协议发送邮件,同时使用POP3(Post Office Protocol version 3)或IMAP4(Internet Message Access Protocol version 4)协议接收邮件。通过这些...

Global site tag (gtag.js) - Google Analytics