`
king_tt
  • 浏览: 2225103 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用.net和java两种方式收取Gmail邮件。

 
阅读更多

公司最近安排做收取用户邮件的模块,主要针对一些知名的大牌信箱。首先考虑Gmail,它有2G的容量、Web2.0的框架,是当然不让的首选。

GMail有一个特点,它不直接提供POP3的接口。不过有一个XML的Feeds地址,需要登陆才能查看。地址如下:
https://mail.google.com/mail/feed/atom

登陆进去后,XML格式是这样的:


<?xmlversion="1.0"encoding="UTF-8"?>
<feedversion="0.3"xmlns="http://purl.org/atom/ns#">
<title>Gmail-Inboxforli.jadesun@gmail.com</title>
<tagline>NewmessagesinyourGmailInbox</tagline>
<fullcount>1</fullcount>
<linkrel="alternate"href="http://mail.google.com/mail"type="text/html"/>
<modified>2006-10-24T15:31:48Z</modified>
<entry>
<title>欢迎光临Yahoo!-请激活您的帐户</title>
<summary>width=1帐户信息帮助不要回复此封邮件。如果您没有创建一个帐户,请&hellip;</summary>
<linkrel="alternate"href="http://mail.google.com/mail?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"type="text/html"/>
<modified>2006-10-24T09:34:37Z</modified>
<issued>2006-10-24T09:34:37Z</issued>
<id>tag:gmail.google.com,2004:1218112365137369397</id>
<author>
<name>my-yahoo-register</name>
<email>my-yahoo-register@yahoo-inc.com</email>
</author>
</entry>
</feed>

研究了一天,用.net实现了登陆收取的方法,采用WebRequest对象来实现的。

wrGETURL=
WebRequest.Create(
"https://mail.google.com/mail/feed/atom");

if(clsMain.g_UseProxy)
{
wrGETURL.Proxy
=clsMain.GetProxy();
}


bytes
=Encoding.ASCII.GetBytes(txtUserName.Text.Trim()+":"
+txtUserPassword.Text.Trim());

wrGETURL.Headers.Add(
"Authorization",
"Basic"+Convert.ToBase64String(bytes));



StreamfeedStream
=
wrGETURL.GetResponse().GetResponseStream();

Atom.Core.AtomFeedmyFeed;

myFeed
=Atom.Core.AtomFeed.Load(feedStream);

//Getthedateandtimeofthefeed.
strFeedTime=myFeed.Modified.DateTime.Day.ToString()+"-"
+myFeed.Modified.DateTime.ToString("MMM")+"-"
+myFeed.Modified.DateTime.Year.ToString()+""
+myFeed.Modified.DateTime.TimeOfDay.ToString();

feedTime
=DateTime.Parse(strFeedTime);

Atom.Core.Collections.AtomEntryCollectionents
=
myFeed.Entries;

foreach(Atom.Core.AtomEntryentinents)
{{
FromName
=ent.Author.Name;
Title
=ent.Title.Content;
Content
=ent.Summary.Content;
//Dosomethingelse
}

这里用到了一个开源的组件支持(Atom),把Stream流数据转成了XML数据,并进行了解析,可以在http://atomnet.sourceforge.net/下载得到。


该代码经同事帮忙,改写在JAVA下面了,终于能在项目中应用,我顺便把JAVA代码贴出来,写在Action中的。

importjava.net.URL;
importjava.net.URLConnection;

importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;

importorg.apache.struts.action.Action;
importorg.apache.struts.action.ActionForm;
importorg.apache.struts.action.ActionForward;
importorg.apache.struts.action.ActionMapping;

importsun.misc.BASE64Encoder;

publicclassGmailActionextendsAction{

/**
*Gmailfeedget
*/


@Override
publicActionForwardexecute(ActionMappingmapping,ActionFormform,
HttpServletRequestrequest,HttpServletResponseresponse)
throwsException{


Stringusername
=request.getParameter("username");
Stringpassword
=request.getParameter("password");
URLserver
=newURL("https://mail.google.com/mail/feed/atom");
URLConnectionconnection
=server.openConnection();
PasswordAuthenticationpa
=Authenticator.requestPasswordAuthentication(
InetAddress.getByName(connection.getURL().getHost()),
connection.getURL().getPort(),
connection.getURL().getProtocol(),
null,
"Basic");
StringBufferbuf
=newStringBuffer(username);
buf.append(
":");
buf.append(password);
Stringencoded
=newBASE64Encoder().encode(buf.toString().getBytes());;
connection.setRequestProperty(
"Authorization","Basic"+encoded);
connection.connect();
InputStreamin
=connection.getInputStream();

byte[]data=newbyte[1<<10];
ByteArrayOutputStreambaos
=newByteArrayOutputStream();
for(inti;(i=in.read(data))!=-1;baos.write(data,0,i));
byte[]badata=baos.toByteArray();
response.getOutputStream().write(badata);
returnnull;
}




}

response.getOutputStream().write(badata); 输出的就是XML数据,拿着用就是了。解决了收取GMail邮件的问题。

分享到:
评论

相关推荐

    JavaMail收发Gmail邮件

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

    邮件Gmail(asp.net开发)

    本知识点将详细介绍如何在ASP.NET环境中集成Gmail服务来实现邮件功能,并且会涉及使用存储过程的技术。 首先,要实现Gmail邮件功能,我们需要借助Google的SMTP服务器和.NET Framework的System.Net.Mail命名空间。...

    一个采用ASP.NET +C#+Gmail credentials实现邮件发送的程序例子

    这个程序示例对于学习如何在ASP.NET和C#中使用Gmail发送邮件非常有用,也可以作为其他基于Google SMTP服务的项目的基础。通过理解这个例子,开发者可以进一步扩展其功能,例如添加附件、使用模板或者集成更复杂的...

    asp.net发送邮件

    总之,ASP.NET结合C#提供了一种简单而强大的方式来发送邮件,只需要正确配置发件人的邮箱、SMTP服务器和相应的安全设置,就能实现从Web应用程序向用户发送电子邮件的功能。在实际开发中,确保遵循最佳实践,以确保...

    ASP.NET邮件收发系统源码+完整邮件系统源码(内附2个项目)

    首先,ASP.NET是微软开发的一种服务器端Web应用程序框架,它允许开发者使用C#或VB.NET等语言编写动态网站、Web应用和服务。在邮件收发系统中,ASP.NET提供了丰富的服务器控件和类库,如System.Net.Mail,使得开发者...

    ASP.NET 发送电子邮件

    在这个过程中,ASP.NET提供了一种强大的工具——System.Net.Mail命名空间,允许开发者轻松地创建和发送电子邮件。下面我们将详细讲解如何在ASP.NET中实现这个功能。 首先,要发送电子邮件,你需要准备以下信息: 1....

    asp.net邮件发送

    3. **ASP.NET邮件发送类**:在代码层面,ASP.NET提供了`System.Net.Mail`命名空间,其中包含`SmtpClient`和`MailMessage`两个关键类。`SmtpClient`用于连接SMTP服务器并发送邮件,而`MailMessage`则用来构造邮件内容...

    Gmail邮件通过JavaMail发送(不带附件与带一个附件)

    本教程将详细讲解如何使用JavaMail API在Gmail上发送邮件,包括不带附件和带有一个附件的情况。 首先,JavaMail是一个开源的Java库,它提供了用于处理邮件的标准API。在使用JavaMail发送邮件前,你需要在项目中引入...

    Asp.Net 发送邮件(Email) 实例 代码 亲测 可用.rar

    在Asp.Net中,我们通常使用System.Net.Mail命名空间中的SmtpClient和MailMessage类来实现这个功能。 1. **SmtpClient类**:这是发送邮件的核心类,它负责与SMTP服务器进行通信。你需要设置SmtpClient的属性,如SMTP...

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

    ASP.NET邮件系统源代码是开发基于ASP.NET平台的电子邮件应用程序的关键资源。这些源代码提供了实现邮件发送、接收和管理功能的详细实现,可以帮助开发者快速构建自己的邮件服务或集成到现有项目中。以下是对这些源...

    .net发送邮件小程序

    .NET发送邮件小程序是一种使用C#编程语言开发的应用,它基于简单邮件传输协议(SMTP)来实现电子邮件的发送功能。在本文中,我们将深入探讨SMTP协议、.NET框架下的邮件发送技术以及如何配置和使用此类小程序。 SMTP...

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

    `GetEmailForm`可能是一个源代码文件或者是一个类,它展示了如何使用LumiSoft.Net.IMAP库来获取邮件。在C#中,通常会创建一个类或方法,负责初始化IMAP客户端,连接到服务器,选择邮箱,然后遍历和下载邮件。以下是...

    一个基于 ASP.NET 的使用Gmail credentials技术实现邮件发送的程序-m

    在ASP.NET平台上,使用Gmail凭据来发送邮件是一个常见的需求,这主要涉及到网络通信、身份验证和电子邮件处理等技术。下面将详细讲解这个过程涉及的知识点。 首先,要使用Gmail凭据发送邮件,我们需要了解Google的...

    教你如何用outlook收发yahoo.cn邮件和gmail邮件

    【如何使用Outlook收发Yahoo.cn和Gmail邮件】 在IT行业中,电子邮件是日常工作中必不可少的通讯工具。Microsoft Outlook作为一款强大的电子邮件客户端,允许用户管理多个邮件账户,包括Yahoo.cn和Gmail。以下将详细...

    Java Socket 实现SMTP邮件发送,支持SSL/TSL

    在本案例中,我们将关注如何使用Java Socket来实现SMTP(Simple Mail Transfer Protocol)邮件发送,并支持SSL(Secure Sockets Layer)和TLS(Transport Layer Security)安全协议。 SMTP是一种互联网标准,用于在...

    gmail 邮件接收系统

    标题中的“gmail 邮件接收系统”表明我们要讨论的是如何使用第三方软件来接收和处理Gmail邮箱中的邮件。在IT行业中,这通常涉及到电子邮件协议和API接口的使用。 描述中提到“第三方软件接收gmail中的邮件并加以...

    写程序用pop3收取gmail的邮件

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

    .NET基于SMTP发送邮件

    在.NET平台上,使用SMTP(Simple Mail Transfer Protocol)发送邮件是一种常见的任务,特别是在开发Windows桌面应用程序时,例如使用Visual Studio 2019创建的Winform应用。SMTP是互联网上用于在邮件服务器之间传递...

    Java查询OutLook邮件代码

    以上就是使用Java查询OutLook邮件的基本流程和关键知识点。根据具体需求,可能还需要处理更多细节,如邮件过滤、邮件分类、邮件发送状态跟踪等。在实际开发中,要根据实际情况选择合适的库和策略,以实现高效、稳定...

    Java发送带模版的邮件示例

    JavaMail API提供了一种标准的方式来处理邮件的发送,而结合模板技术,我们可以创建出更加专业和美观的邮件内容。本示例将详细介绍如何在Java中使用模板发送邮件,以及相关的知识点。 首先,你需要了解JavaMail API...

Global site tag (gtag.js) - Google Analytics