标签: gmail-imap

Gmail IMAP:以任何方式查找特定邮件所在的所有标签(文件夹)?

所以,Gmail的IMAP有点'怪异'.他们使用IMAP文件夹来表示标签.我通常认为IMAP中的电子邮件只能属于一个"文件夹",但是对于Gmail,电子邮件可以属于许多"文件夹",这使我们能够非常接近标签.

我的问题是,我正在编写一个gmail客户端(因此像Starring,删除和存档这样的工作比标准的imap客户端更直观),但我希望能够显示给定的电子邮件,哪些文件夹(标签)它在.

据我所知,这并不容易(我必须遍历每个文件夹中的每条消息,看看它在哪些中).

有谁知道一个整洁的方法来做到这一点?或者我是否正确地假设没有简单的方法?

gmail imap gmail-imap

7
推荐指数
1
解决办法
2977
查看次数

PHP:Gmail的邮件包含无效的HTML和随机行话

我正在使用PHP创建基于电子邮件的CMS,我需要使用Gmail作为电子邮件服务.这个脚本现在非常简单,我遇到的唯一问题是处理Gmail的电子邮件语法.

在收到电子邮件时,我期待一些更容易管理的东西,比如这样:

<u>asfasfasf</u> <u style="font-style: italic;">asdfaf</u> <ustyle="font-style: italic; font-weight: bold;">asfsaf</u> asfasf <a href="http://asfasfafs">asfasf</a>
<br />
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent sodales mauris quis nisl pellentesque eleifend. Sed convallis turpis quis turpis malesuada feugiat. Fusce sed metus non orci convallis congue. Integer egestas vulputate ipsum, sed fringilla velit elementum scelerisque. Pellentesque convallis metus sit amet enim faucibus adipiscing.
Run Code Online (Sandbox Code Playgroud)

但我得到了这个(鸭子和封面):

<u>asfasfasf </u><u style=3D"font-style: italic; ">asdfaf =A0</u><u style=
=3D"font-style: italic; font-weight: bold; ">asfsaf </u>asfasf <a href=3D"h=
ttp://asfasfafs">asfasf</a><div><br></div><div><meta …
Run Code Online (Sandbox Code Playgroud)

php gmail tidy gmail-imap

7
推荐指数
1
解决办法
2708
查看次数

为什么在通过IMAP连接到Gmail时会收到"需要Web登录"消息?

我正在尝试通过IMAP连接并从Gmail检索邮件标头列表.

我收到了Google的回复,其中包含"需要Web登录",然后是一个URL,通过网络界面继续登录.记录:http://hastebin.com/odufaducew.vhdl

为什么会这样?如何处理这种情况?我正在使用适用于iOS的MailCore2 lib,如果这有帮助的话.

gmail imap google-authentication gmail-imap mailcore2

7
推荐指数
2
解决办法
7040
查看次数

SUBJECT的Javamail IMAP搜索失败

我在Gmail上使用javamail进行imap搜索.我使用subjectTerm类创建一个searchTerm对象并传递给搜索函数.搜索适用于纯字母数字的主题字符串.只要我在搜索字符串中输入单引号或短划线,搜索就会失败.

IMAPSSLStore imapSslStore = connectToImap("imap.googlemail.com",993,email,oauthToken,oauthTokenSecret,getAnonymousConsumer(),true);

Folder inbox = imapSslStore.getFolder("[Gmail]/All Mail");
inbox.open(Folder.READ_ONLY);

SearchTerm sTerm = new SubjectTerm("String with quote's and da-sh"); //this fails

Message messages[] = inbox.search(sTerm);  //no results found !
Run Code Online (Sandbox Code Playgroud)

是否有一种标准的方法来逃避搜索字符串或这是对gmail结束的限制?

java imap jakarta-mail gmail-imap

6
推荐指数
1
解决办法
3981
查看次数

通过GMail XOAUTH IMAP"无效凭据"

我正在尝试使用OA提供的使用Zend Imap类的PHP示例代码进入带有OAuth的IMAP服务器,但我无法进行身份验证.Zend给了我错误:

Zend_Mail_Storage_Exception [ Error ]: cannot select INBOX, is this a valid transport?
Run Code Online (Sandbox Code Playgroud)

令人讨厌的是,这是一个相当混乱的错误消息,基本上是"无效的凭据".我怎么知道的?通过调试发送到IMAP套接字的实际命令,我看到:

string(44) "NO Invalid credentials ey9if1544983wid.142
"
Run Code Online (Sandbox Code Playgroud)

我尝试使用telnet和Ruby gmail_xoauth gem,这表明它不是代码问题,而是其他问题.

看看这一切的最基本水平,我得到这样的命令:

TAG1 AUTHENTICATE XOAUTH R0VUIGh0dHBzOi8vbWFpbC5nb29nbGUuY29tL21h......etc
Run Code Online (Sandbox Code Playgroud)

这是我得到的地方NO Invalid credentials:

TAG2 SELECT "INBOX"
Run Code Online (Sandbox Code Playgroud)

这会回来BAD Unknown command并踢我.

我一直试图寻找有同样问题的人,但我发现只有问题,没有答案.有一些类似StackOverflow的问题:

一篇帖子显示有人在Python中遇到完全相同的问题.

这篇文章显示有人试图尴尬并用OAuth 2做,没有成功的报告.

还有就是建议"无效凭证"的错误可以通过将要解决的Gmail谷歌集团线程https://accounts.google.com/DisplayUnlockCaptcha对于Gmail帐户和https://www.google.com/a/ [YOURDOMAIN.COM]/UnlockCaptcha如果您使用的是Google Apps,但后者只是说我的用户名和密码错误,当他们显然没有.使用此https://accounts.google.com/DisplayUnlockCaptcha工作正常 - 即使我的帐户是托管应用程序,而不是普通的旧GMail - 但是当我尝试使用由提供的PHP示例代码重新登录时,我仍然会遇到相同的错误谷歌.

我尝试过使用各种托管的Google App帐户和一个简单的GMail帐户.我已经尝试将IMAP服务器从imap.gmail.com切换到imap.googlemail.com,没有任何区别.

      /**
       * Make the IMAP connection and send the auth request
       */
      $imap = new …
Run Code Online (Sandbox Code Playgroud)

authentication gmail imap zend-framework gmail-imap

6
推荐指数
1
解决办法
2801
查看次数

更快地阅读Java中的收件箱

我想获得一个列表,列出我收件箱中任何邮件中包含的所有人.现在我可以使用javax邮件API通过IMAP连接并下载消息:

Folder folder = imapSslStore.getFolder("[Gmail]/All Mail");
folder.open(Folder.READ_ONLY);
Message[] messages = folder.getMessages();

for(int i = 0; i < messages.length; i++) {
  // This causes the message to be lazily loaded and is slow
  String[] from = messages[i].getFrom();
}
Run Code Online (Sandbox Code Playgroud)

行消息[i] .getFrom()比我想要的慢,因为导致消息被延迟加载.有什么办法可以加快速度吗?例如,我可以做一些批量加载而不是一个一个地加载消息吗?这是否会加载整个消息,是否我只能加载to/from/cc字段或标题?POP会比IMAP更快吗?

pop3 imap jakarta-mail javax.mail gmail-imap

6
推荐指数
2
解决办法
4020
查看次数

具有多个OR的IMAP标准

我正在使用gmail的IMAP API来搜索邮件.

我使用"OR"条件来搜索不同的关键字.如果我只去一个级别,就像这样的东西,那么效果很好

'UID SEARCH OR (FROM "somebody@email.com") (TO "somebody@email.com")'
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试更长的表达时,它不起作用

标准或标准或标准或标准

转换为(据我所知的语法)

'UID SEARCH OR ( OR (FROM "somebodyelse@email.com") (TO "somebodyelse@email.com")) ( OR (FROM "somebody@email.com") (TO "somebody@email.com"))'
Run Code Online (Sandbox Code Playgroud)

为了清楚起见,我基本上希望从给定的电子邮件列表中发送或发送给所有邮件

我从libray得到的错误是

[ 'A34', 'BAD', 'Could', 'not', 'parse', 'command' ]
Run Code Online (Sandbox Code Playgroud)

有什么建议?

imap gmail-imap

6
推荐指数
1
解决办法
4440
查看次数

Google OAuth 访问令牌

我对 OAuth 和 Google 感到很困惑。我花了很长时间才获得 refresh_token 以创建新的 access_token。然后找出refresh_token也过期了??这有什么意义!!!?

我需要做的就是保留一个有效的 access_token 以与legato一起使用。

这是我手动输入终端以检索 OAUTH 代码的内容:

client = OAuth2::Client.new('GA_CLIENT_ID', 'GA_SECRET_KEY', {
        :authorize_url => 'https://accounts.google.com/o/oauth2/auth',
        :token_url => 'https://accounts.google.com/o/oauth2/token'
})
client.auth_code.authorize_url({
       :scope => 'https://www.googleapis.com/auth/analytics.readonly',
       :redirect_uri => 'http://localhost',
       :access_type => 'offline',
       :approval_prompt=> 'force'
}) 
Run Code Online (Sandbox Code Playgroud)

然后我在浏览器中手动输入输出的 url。我将返回的 OAUTH 代码导出为一个 env 变量并获取访问令牌:

access_token = client.auth_code.get_token(ENV['GA_OAUTH_CODE'], :redirect_uri => 'http://localhost')
Run Code Online (Sandbox Code Playgroud)

然后我可以访问 access_token 和 refresh_token:

   begin
      api_client_obj = OAuth2::Client.new(ENV['GA_CLIENT_ID'], ENV['GA_SECRET_KEY'], {:site => 'https://www.googleapis.com'})
      api_access_token_obj = OAuth2::AccessToken.new(api_client_obj, ENV['GA_OAUTH_ACCESS_TOKEN'])
      self.user = Legato::User.new(api_access_token_obj)
      self.user.web_properties.first # this tests the access code and …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails oauth gmail-imap oauth-2.0

6
推荐指数
1
解决办法
2599
查看次数

GmailService创建Watch()获取用户未经授权的错误

这个代码snniped:

  credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                GoogleClientSecrets.Load(stream).Secrets,//read from client secret.json file
                Scopes,
                "user",
                CancellationToken.None).Result;

   // Create Gmail API service.
   var service = new GmailService(new BaseClientService.Initializer()
   {
      HttpClientInitializer = credential,
      ApplicationName = ApplicationName,
   });

   UsersResource.LabelsResource.ListRequest request = service.Users.Labels.List("me");
   WatchRequest body = new WatchRequest()
        {
            TopicName = "projects/push-notifications-ver3/topics/mytopic",
            LabelIds = new[] {"INBOX"}
  string userId = "me";
  UsersResource.WatchRequest watchRequest = service.Users.Watch(body, userId);
  WatchResponse test = watchRequest.Execute();
Run Code Online (Sandbox Code Playgroud)

获取错误:将测试消息发送到Cloud PubSub项目/ push-notifications-ver3/topics/mytopic时出错:用户未被授权执行此操作.[403]

主题是通过订阅创建的,作为主题的所有者给予当前用户许可任何建议用户未授权的原因?

c# google-api gmail-imap gmail-api google-cloud-pubsub

6
推荐指数
1
解决办法
832
查看次数

我如何使用 imap (nodejs) 将传入邮件 (gmail) 接收到我的应用程序服务器

我想使用 imap 阅读完整的传入邮件。但 imap 只通知我收到的新邮件数量

 imap.on('mail', (number) => {
      console.log('got mails', number);
    });
Run Code Online (Sandbox Code Playgroud)

有什么办法可以阅读收到的邮件吗?

任何帮助将不胜感激

gmail imap gmail-imap

6
推荐指数
1
解决办法
7901
查看次数