标签: gmail-imap

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
查看次数

使用AccountManager进行Gmail Imap身份验证

使用下面的代码,我可以从中获取令牌AccountManager.我无法弄清楚如何在Android(Session,Store,Folder,..)的javamail(IMAP)api中使用此令牌?

我想使用客户经理对Gmail IMAP进行身份验证,我该如何进行此操作?

    AccountManager manager = AccountManager.get(this);
    Account[] accounts = manager.getAccounts();

    manager.getAuthToken(accounts[0], "oauth2:https://mail.google.com/", null, this, new AccountManagerCallback<Bundle>(){

        public void run(AccountManagerFuture<Bundle> future) {
            try {
                String token = future.getResult().getString(AccountManager.KEY_AUTHTOKEN);

            } catch (OperationCanceledException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (AuthenticatorException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (MessagingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    }, null);
Run Code Online (Sandbox Code Playgroud)

android imap jakarta-mail gmail-imap

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

更快地阅读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
查看次数

如何使用 IMAP 协议从 Gmail 的电子邮件中删除标签?

在 Gmail 上添加标签效果很好:

imap.store(item, '+X-GM-LABELS', label)
imap.expunge()
Run Code Online (Sandbox Code Playgroud)

但:

imap.store(item, '-X-GM-LABELS', label)
imap.expunge()
Run Code Online (Sandbox Code Playgroud)

...应该删除标签不会执行任何操作,不会返回错误(“确定”)。

去除标签的正确方法是什么?

gmail imap gmail-imap

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

是否广泛支持IMAP CONDSTORE?

我正在构建一个简单的Webmail,我想使用IMAP的CONDSTORE扩展名:它允许获取自日期以来发生更改的所有内容(消息,标志等),这对于将电子邮件客户端同步到IMAP服务器。

但是,我绝对不知道大多数IMAP服务器是否实际上支持此IMAP扩展。

那么,有没有什么资料可以告诉我该扩展的支持程度呢?例如,GMail或Hotmail是否支持它?

(这背后的隐藏问题很明显:CONDSTORE是将电子邮件客户端同步到IMAP服务器的最合适方法吗?我在本地存储电子邮件副本,这就是为什么我需要同步的原因)

imap email-client gmail-imap

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

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
查看次数