标签: gmail-api

检索单个/多个附件 Gmail API PHP

我正在尝试使用 Gmail API PHP 获取邮箱中所有附件的列表。我在某个时候卡住了,但我真的不知道在哪里。这是我用来获取消息内容的代码,当我尝试获取附件时,它以某种方式失败了。

我想获取与我的“q”查询对应的所有消息的文件名和附件 ID。这是我的代码:


    function atta($service, $userId, $expeditor)
          {
            try
            {
              unset($optParamsamz);
              $optParamsamz = [];
              $optParamsamz['maxResults'] = 10; // Return Only 5 Messages
              $optParamsamz['q'] = "has:attachment larger_than:10000000 "; // Only show messages in Inbox
              $messagesamz = $service->users_messages->listUsersMessages('me',$optParamsamz);
              $listamz = $messagesamz->getMessages();
              $idlist = array();
              foreach ($listamz as $key => $value) {
                $message = $service->users_messages->get('me', $value['id']);
                $array_message = $message->getPayload();
                print_r($array_message);
                echo "<br><br>";
              }

            }
            catch (Exception $e)
            {
              print 'An error occurred: ' . $e->getMessage();
            }

          }


Run Code Online (Sandbox Code Playgroud)

php api gmail gmail-api

3
推荐指数
1
解决办法
4425
查看次数

电子邮件中的 Base64 编码图像

我正在尝试使用 gmail api 和 python 发送嵌入了 base64 编码图像的 html 电子邮件。

这是我想作为电子邮件发送的 html 文件

<h1>This is a test message</h1>
<p>
<img src="data:image/png;base64,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">
</p>
Run Code Online (Sandbox Code Playgroud)

这是我的代码

"""Send an email message from the user's account.
"""

import base64
from email.mime.audio import MIMEAudio
from email.mime.base import MIMEBase
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import mimetypes
import os

from apiclient import errors



def send_message(service, user_id, message):
  """Send an email message.

  Args:
    service: Authorized Gmail API service instance.
    user_id: User's email …
Run Code Online (Sandbox Code Playgroud)

html python email mime gmail-api

3
推荐指数
1
解决办法
4924
查看次数

在 Gmail 过滤器中排除多个发件人

我一直在尝试设置一个 Gmail 过滤器,该过滤器应包含抄送给用户 A 的所有邮件,但不包含那些也发送给用户 B 或 C(或两者)的电子邮件。

换句话说,我希望过滤器选择仅发送给用户 A 的电子邮件,但如果它也发送给团队中的其他任何人(B 或 C),则不应选择它们。

这是我试图写的,但没有奏效:

A@gmail.com -{B@gmail.com or C@gmail.com}
Run Code Online (Sandbox Code Playgroud)

email gmail filter gmail-api

3
推荐指数
1
解决办法
1万
查看次数

创建 Gmail 共享链接

我想在我的单页 Web 应用程序上放置一个按钮,允许用户通过 Gmail 发送链接。我发现有些网站(例如 addthis.com)提供了这样的按钮,但是该按钮会自动使用 url 栏中的链接。由于我有一个单页 Web 应用程序,因此 url 栏中的链接将始终相同。我需要能够自己将链接放入按钮中(例如,可以使用 Facebook 和 Twitter 共享按钮)。

如何创建可用于共享链接的 Gmail 按钮?

谢谢你。

html javascript outlook gmail gmail-api

3
推荐指数
1
解决办法
6388
查看次数

观看对新主题的请求暂停向现有主题推送通知

我在我的 Google Cloud Pub/Sub 帐户中配置了两个主题,每个主题都有一个订阅,在一个项目下。

当我在收件箱中调用 watch() 并将主题 1 传递给监视请求时,我会收到推送到所需端点的通知。当我在收件箱中为主题 2调用 watch() 时,我会收到与主题 2 相关的端点的推送通知,但推送通知停止到达主题 1

对于给定的项目,似乎只有一个主题可以在任何给定的时间为给定的收件箱推送通知。任何人都可以帮助确认是否是这种情况?

我在Gmail 推送通知的文档中找不到任何说明此限制的内容。每次我再次调用 watch() 时,我都会收到来自 API 的成功响应(订阅主题 1 -> 为主题 2 调用 watch(),反之亦然),但我之前订阅的主题的通知仍然停止。我也在 watch() 请求的到期窗口内。

任何建议/方向将不胜感激!

gmail-api

3
推荐指数
1
解决办法
1112
查看次数

无法登录到 gmail - imaplib.error - 警报请通过您的网络浏览器登录

我正在尝试登录 gmail 并读取来自 python 包的消息。但是出现错误:[ALERT] 请通过您的网络浏览器登录:https : //support.google.com/mail/accounts/answer/78754(失败)

import imaplib
import email

m = imaplib.IMAP4_SSL("imap.gmail.com", 993)
m.login("username@gmail.com","password")
m.select('"[Gmail]/All Mail"')

result, data = m.uid('search', None, "ALL") # search all email and return uids
if result == 'OK':
    for num in data[0].split():
        result, data = m.uid('fetch', num, '(RFC822)')
    if result == 'OK':
        email_message = email.message_from_bytes(data[0][1])    # raw email text including headers
        print('From:' + email_message['From'])

m.close()
m.logout()
Run Code Online (Sandbox Code Playgroud)

email gmail-imap python-2.7 gmail-api

3
推荐指数
1
解决办法
4885
查看次数

Python Gmail Api Base64 解码电子邮件正文中的奇怪字符

我正在使用 Gmail API 从我的收件箱中检索电子邮件:

query = 'to:me after:{}'.format(weekStartDate)

unreadEmailsQuery = service.users().messages().list(userId='me', q=query).execute()

# For Each Email
for message in unreadEmailsQuery['messages']:
    result = service.users().messages().get(id=message['id'],userId='me').execute()
  email_content = ''

  if 'data' in result['payload']['body'].keys():
         email_content+= result['payload']['body']['data']
    else:

        for part in result['payload']['parts']:
            email_content = part['body']['data'] + email_content



    test = bytes(str(email_content),encoding='utf-8')
    print(base64.decodebytes(test))
Run Code Online (Sandbox Code Playgroud)

正确打印出简单的纯文本消息:

b'Got another one with me

但是会像这样打印出 html 消息:

b'<body\x03B\x83B\x83B\x83B\x88\x08\x0f\x1bY]\x18H\x1a\x1d\x1d\x1c\x0bY\\]Z]\x8fH\x90\xdb\
Run Code Online (Sandbox Code Playgroud)

我可以看到,直到第一个 > 从那时起字符串被错误打印出来之前都可以,我不知道为什么。

我试图从我的电子邮件中提取单词,以便我可以训练分类器,但我被卡住了。

任何帮助将不胜感激。

python base64 gmail-api

3
推荐指数
1
解决办法
1246
查看次数

BodyMimePart 类中的 setText() 和 setContent() 有什么区别

这两个函数在 JavaMail API 中提供相同的结果有什么区别?

Multipart multipart = new MimeMultipart();
BodyPart textBody = new MimeBodyPart();
textBody.setText(bodyText);
textBody.setContent(bodyText, "text/html") ;
multipart.addBodyPart(textBody);
Run Code Online (Sandbox Code Playgroud)

java android jakarta-mail mime-types gmail-api

3
推荐指数
1
解决办法
6522
查看次数

400 错误。需要收件人地址。JavaScript

我在 Gmail API 中一步一步地提出了一个简单的请求。

根据我打这个电话的所有说明:

var request = gapi.client.gmail.users.messages.send({
    'userId': 'me',
    "payload": {
    "headers": [
             {
              "name": "To",
              "value": "########@gmail.com"
             }
           ]},
     'raw': 'SEVMTE8gTVkgREVBUiBGUklFTkQ='
     });

request.then(()=>{console.log('yep')})
Run Code Online (Sandbox Code Playgroud)

但是收到一个错误:

{
   "error": {
   "errors": [
     {
       "domain": "global",
       "reason": "invalidArgument",
       "message": "Recipient address required"
     }
   ],
   "code": 400,
   "message": "Recipient address required"
  }
}
Run Code Online (Sandbox Code Playgroud)

google-apis-explorer gmail-api

3
推荐指数
1
解决办法
5024
查看次数

尝试使用 Gmail 的 Ruby API 修改标签时出现“未指定标签添加或删除错误”

我看过https://www.rubydoc.info/github/google/google-api-ruby-client/Google/Apis/GmailV1/ModifyThreadRequest和示例https://developers.google.com/gmail/api /v1/reference/users/labels/update适用于 Python 和 JS,但无法弄清楚如何在 ruby​​ 中正确格式化请求。

我想:

service.modify_thread('me',thread_id,{'add_label_ids'=>['UNREAD']})
Run Code Online (Sandbox Code Playgroud)

以及对象的各种其他排列,但除了Google::Apis::ClientError: invalidArgument: No label add or removes specified响应之外无法获得任何东西。

任何帮助表示赞赏

ruby gmail-api

3
推荐指数
1
解决办法
255
查看次数