`
wuhua
  • 浏览: 2110315 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

一个读取Gmail邮件的简单程序

阅读更多
      兄弟我理论性的东西说不出来,不过实际运用咱还是有办法的
前几天由于工作需要,想了解下关于支持ssl的邮件收发,按照以前普通的做法是行不通的,所以就上网东找找,西瞧瞧。发现了个好东西,并且实验成功。
      那天本想来javaeye看看有没有人有相关的经验,找了老半天,连个屁也没闻到,我就说我们,我们这些做程序员的不能老是吹吹水,谈谈道理,我们得拿出点实际的东西出来,就想fins一样,我就很佩服他的贡献精神。
      不说废话了,看看源代码,大家有空也可以实验下。还真有用
java 代码
 
  1. /** 
  2.  * 用于收取Gmail邮件 
  3.  *  
  4.  * @author wuhua 
  5.  */  
  6. public class GmailFetch {  
  7.     private static Logger logger = Logger.getLogger(GmailFetch.class);  
  8.     public static void main(String argv[]) throws Exception {  
  9.         logger.debug("开始读取邮件......");  
  10.         Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());  
  11.         final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";  
  12.   
  13.         // Get a Properties object  
  14.         Properties props = System.getProperties();  
  15.         props.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY);  
  16.         props.setProperty("mail.pop3.socketFactory.fallback""false");  
  17.         props.setProperty("mail.pop3.port""995");  
  18.         props.setProperty("mail.pop3.socketFactory.port""995");  
  19.   
  20.         // 以下步骤跟一般的JavaMail操作相同  
  21.         Session session = Session.getDefaultInstance(props, null);  
  22.   
  23.         // 请将红色部分对应替换成你的邮箱帐号和密码  
  24.         URLName urln = new URLName("pop3", ApplicationContext.POP3, 995null,  
  25.                 ApplicationContext.GMAIL_MAIL_NAME, //这里替换您的gmail用户名 
  26.                 ApplicationContext.GMAIL_MAIL_PASSWORD);  //这里替换密码
  27.         Store store = session.getStore(urln);  
  28.         Folder inbox = null;  
  29.         try {  
  30.             store.connect();  
  31.             inbox = store.getFolder("INBOX");  
  32.             inbox.open(Folder.READ_ONLY);  
  33.             FetchProfile profile = new FetchProfile();  
  34.             profile.add(FetchProfile.Item.ENVELOPE);  
  35.             Message[] messages = inbox.getMessages();  
  36.             inbox.fetch(messages, profile);  
  37.             logger.debug("收件箱的邮件数:" + messages.length);  
  38.             for (int i = 0; i < messages.length; i++) {  
  39.                 // 邮件发送者  
  40.                 String from = decodeText(messages[i].getFrom()[0].toString());  
  41.                 InternetAddress ia = new InternetAddress(from);  
  42.                 logger.debug("发信人:" + ia.getPersonal() + '('  
  43.                         + ia.getAddress() + ')');  
  44.                 // 邮件标题  
  45.                 logger.debug("主题:" + messages[i].getSubject());  
  46.                 // 邮件大小  
  47.                 logger.debug("邮件大小:" + messages[i].getSize());  
  48.                 // 邮件发送时间  
  49.                 logger.debug("发送日期:" + messages[i].getSentDate());  
  50.             }  
  51.         } finally {  
  52.             try {  
  53.                 inbox.close(false);  
  54.             } catch (Exception e) {  
  55.             }  
  56.             try {  
  57.                 store.close();  
  58.             } catch (Exception e) {  
  59.             }  
  60.         }  
  61.           
  62.         logger.debug("读取邮件完毕......");  
  63.     }  
  64.   
  65.     protected static String decodeText(String text)  
  66.             throws UnsupportedEncodingException {  
  67.         if (text == null)  
  68.             return null;  
  69.         if (text.startsWith("=?GB") || text.startsWith("=?gb"))  
  70.             text = MimeUtility.decodeText(text);  
  71.         else  
  72.             text = new String(text.getBytes("ISO8859_1"));  
  73.         return text;  
  74.     }  
  75.   
  76. }  
上面代码,完全可以封装成一个收取ssl邮件的库
改天有时间整理下关于发邮件的方法
分享到:
评论
9 楼 zmo_xu 2007-06-12  
楼上的是不是因为没有设置 gmail的 pop3 断口  gmail端口和别的不一样的 去google看下哈
8 楼 janmy 2007-06-12  
Your account is not enabled for POP access. Please visit your Gmail settings page and enable your account for POP access.

我用你的程序试了一下,,出现了上面的异常,,可否解决一下
7 楼 duligavin 2007-04-02  
good
6 楼 waryist 2007-04-02  
晕,好多类包都引不进来!
5 楼 jamesby 2007-04-02  
附件没有接收下来?
4 楼 andyandyandy 2007-04-02  
欣赏楼主的精神,可惜本人才疏学浅,hoho
3 楼 xuygfbi 2007-04-02  
试了一下报错
[AUTH] Username and password not accepted.
我的用户名和密码没有写错啊
2 楼 yexin218 2007-04-02  
呵呵,强人,顶一下!
1 楼 easygodg 2007-04-02  
这个东西前几天我刚改的可以根据各种配置发送邮件 :)

相关推荐

    写程序用pop3收取gmail的邮件

    - `email`库的`message_from_bytes()`函数可以解析邮件内容,得到一个`Message`对象。 - `Message`对象有多个方法,如`get_content_type()`、`get_payload()`等,用于获取邮件的类型、主题、发件人、收件人、正文...

    Go-enmasse一个实用程序来创建GMail邮件草稿从golang编译模板和JSON数据

    标题中的“Go-enmasse”是一个使用Go语言开发的工具,专门用于创建GMail邮件草稿。这个程序的独特之处在于它结合了模板编译和JSON数据,使得动态生成邮件内容变得更加方便和高效。在Go语言中,模板引擎是标准库的一...

    python通过imaplib模块读取gmail里邮件的方法

    ### Python通过imaplib模块读取Gmail中的邮件 在当今高度数字化的工作环境中,电子邮件成为企业和个人之间交流的重要渠道。为了能够有效地处理大量的邮件信息,并从中提取有用的数据进行分析或自动化某些工作流程,...

    Gmail_API_Access:使用 gmail API 从用户帐户中抓取电子邮件的 Android 测试程序

    Google 提供的 Gmail API 是一个强大的工具,允许开发者构建应用程序,从用户的 Gmail 帐户中安全地获取、发送、管理电子邮件。这个名为 "Gmail_API_Access" 的项目是一个 Android 测试程序,展示了如何利用 Gmail ...

    Laravel开发-laravel-gmail

    在IT行业中,Laravel是一个非常受欢迎的开源PHP框架,它为开发者提供了优雅的方式来构建Web应用程序。本项目聚焦于使用Laravel与Google的Gmail API进行集成,从而实现发送邮件、读取邮件等实用功能。"laravel-gmail...

    读取邮件pop DEMO.zip

    在实际开发中,这个DEMO可能会展示如何将以上步骤整合到一个可执行的脚本或应用程序中,使开发者能够快速地在自己的项目中复用邮件读取功能。如果你正在寻找如何实现这个功能,这个DEMO会是一个很好的起点。请解压...

    一款实现邮件读取功能的代码样例

    在IT行业中,邮件读取...综上所述,"ReadEmail"这个代码样例提供了一个基础框架,帮助开发者实现邮件读取功能。通过理解这些核心概念和技术,开发者可以扩展这个示例以适应更复杂的需求,构建出强大的邮件处理工具。

    VC++邮件发送程序(带附件)

    本项目是一个使用VC++实现的邮件发送程序,它支持通过SMTP(Simple Mail Transfer Protocol)协议发送带有附件的电子邮件。SMTP是互联网上用于发送电子邮件的标准协议,而在这个程序中,它被用来将邮件从本地客户端...

    linux、T100、windows使用python读取XML发送邮件方法含代码

    你可以将这些代码封装成一个脚本,通过定时任务服务(如Linux的cron或Windows的任务计划程序)定期执行,实现自动发送邮件。 综上所述,通过Python结合XML解析和邮件发送功能,可以在多种操作系统上实现自动化的...

    vb实现邮件传输,轻松邮件传

    以下是一个简单的VB代码示例: ```vbnet Imports System.Net.Mail Imports System.Net Imports System.Text Dim mail As New MailMessage() Dim smtp As New SmtpClient() ' 设置发件人和收件人 mail.From = New ...

    Java查询OutLook邮件代码

    JavaMail API是一个开源项目,提供了处理邮件服务器交互的标准接口。 1. **JavaMail API**: JavaMail API是Java中用于发送和接收邮件的标准API。它包括了 javax.mail 和 javax.mail.internet 包,这两个包提供了...

    asp.net 实现jmail 接收和发送邮件程序.zip

    JMail是一个功能丰富的.NET组件,它提供了方便的API接口,使得开发者能够轻松地集成邮件功能到自己的Web应用程序中。以下是对这个主题的详细解释: 一、ASP.NET环境 ASP.NET是由微软开发的一种用于构建Web应用程序...

    asp.net 几个邮件系统 源代码

    1. **SharpWebMail**: 这是一个使用C#编写的开源邮件服务器组件,它允许ASP.NET应用通过SMTP发送邮件。SharpWebMail支持多种邮件协议,包括POP3和IMAP,使用户能够读取和管理邮件。开发者可以通过研究源代码学习如何...

    Gmail4J实例

    Gmail4J是一个Java库,专门设计用于与Google的Gmail服务进行交互。这个实例教程将深入探讨如何使用Gmail4J来实现各种操作,如发送邮件、接收邮件、搜索邮件以及管理收件箱。在Java开发环境中,Gmail4J提供了一种简单...

    Gmail-Mail-Counter:Google Chrome扩展程序,可在Gmail中的滚动条旁边显示会话的邮件计数

    **Gmail-Mail-Counter** 是一个专为Google Chrome浏览器设计的扩展程序,它的主要功能是在用户使用Gmail时,在页面的滚动条旁边实时显示当前会话中的邮件数量。这一功能对于那些需要频繁检查未读邮件或者管理大量...

    VS2015C++利用SMTP发送邮件的例子(支持附件发送)Gmail,163,qq,yahoo等邮箱

    总之,通过VS2015 C++ Win32应用程序,结合SMTP协议,我们可以构建一个能够向各种主流邮件服务提供商发送邮件的实用工具,支持附件功能。这个例子为初学者提供了很好的起点,让他们了解如何在实际项目中实现邮件发送...

    一个使用LumiSoft.Net.IMAP接收邮件的例子

    在这个例子中,我们将深入探讨如何利用LumiSoft.Net.IMAP库创建一个简单的控制台应用程序来接收邮件。 首先,LumiSoft.Net.IMAP库为.NET开发者提供了一个方便的接口,可以轻松地连接到IMAP服务器并执行各种操作,如...

    gmail-stats:用 golang 编写的 Gmail 未读消息统计实用程序

    使用 gmail atom feed 获取未读电子邮件统计信息的命令行实用程序。 安装 go get github.com/codegangsta/cli go get github.com/DATA-DOG/gmail-stats 二进制gmail-stats将安装在$GOPATH/bin 中,它应该在您的 $...

    gmail-api:通过Gmail API获取最新电子邮件

    以下是一个简化的Java代码示例,展示了如何使用Gmail API获取最新邮件: ```java import com.google.api.services.gmail.Gmail; import com.google.api.services.gmail.model.Message; import ...

Global site tag (gtag.js) - Google Analytics