标签: gmail-api

使用 MailApp.sendEmail 时电子邮件被拒绝

我有问题MailApp.sendEmail()。我尝试通过 Google 电子表格中的脚本发送电子邮件。我的脚本适用于我的帐户,但不适用于我朋友的帐户。我收到这条消息:

消息被拒绝。有关详细信息,请参阅https://support.google.com/mail/answer/69585。最终收件人:rfc822;xx@xx.xx 操作:失败状态:5.0.0 诊断代码:smtp;消息被拒绝。有关详细信息,请参阅https://support.google.com/mail/answer/69585。上次尝试日期:2018 年 3 月 21 日星期三 05:41:31 -0700 (PDT)

我使用了 Martin Hawksey 教程脚本(经过一些修改):

var TO_ADDRESS = "xxx@gmail.com";

// spit out all the keys/values from the form in HTML for email
function formatHtmlMailBody(obj, order) {
    var result = "html text";
    // loop over all keys in the ordered form data
    for (var idx in order) {
        var key = order[idx];
        result += key + " " + obj[key];
    }
    return …
Run Code Online (Sandbox Code Playgroud)

email google-apps-script gmail-api

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

错误:OAuth2 请求失败:服务响应错误:'坏客户端 ID:APP_ID_OR_ORIGIN_NOT_MATCH'

我正在尝试创建此示例:

https://github.com/GoogleDeveloperExperts/chrome-extension-google-apis

我的客户 ID 有问题。我已经将 Gmail API 服务添加到我的客户端 ID。此外,当我使用示例的客户端 ID 时,一切正常,但是当我使用客户端 ID 时,出现此错误:

OAuth2 请求失败:服务响应错误:“错误的客户端 ID:APP_ID_OR_ORIGIN_NOT_MATCH”。

有人知道出了什么问题吗?

google-chrome gmail-api

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

Python - Gmail API - “资源”的实例没有“用户”成员

[编辑] 我现在已经在我的 linux 发行版上尝试了 Python 快速入门指南,它按预期工作,这让我相信这只是 Windows 的问题。[end_edit]

遵循此处找到的 Python 快速入门指南:https : //developers.google.com/gmail/api/quickstart/python

我遇到的问题是在使用 Python 时,在

service = build('gmail','v1', http=creds.authorize(Http()))
Run Code Online (Sandbox Code Playgroud)

下一行,是这样的:

results = service.users().labels().list(userID='me').execute()
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Instance of 'Resource' has no 'users' member
Run Code Online (Sandbox Code Playgroud)

现在我已经尝试了 .NET 快速入门指南并且有效。出于某种原因,API 不适用于 python。

我的 google-api-python-client pip 安装说它是最新的。

我使用 googleapiclient 而不是 apiclient 因为从我读过的内容来看,apiclient 只是出于遗留原因而存在,在此代码中使用它会导致错误“无法从 apiclient 导入构建”。

这是我的pipfreeze

快速入门代码:

"""
Shows basic usage of the Gmail API.

Lists the user's Gmail labels.
"""
from __future__ import print_function
from googleapiclient.discovery import build
from httplib2 import Http
from …
Run Code Online (Sandbox Code Playgroud)

python google-api google-oauth google-api-python-client gmail-api

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

在 python 中从 Gmail 下载附件:没有“数据”键

我正在使用官方 Google 教程连接到 Gmail 地址并使用Gmail API从电子邮件下载附件。

给出的示例代码是这样的:

try:
    message = service.users().messages().get(userId=user_id, id=msg_id).execute()

    for part in message['payload']['parts']:
      if part['filename']:
        file_data = base64.urlsafe_b64decode(part['body']['data']
                                             .encode('UTF-8'))

        path = ''.join([store_dir, part['filename']])

        f = open(path, 'w')
        f.write(file_data)
        f.close()   

except errors.HttpError, error:
        print 'An error occurred: %s' % error
Run Code Online (Sandbox Code Playgroud)

我系统地得到一个KeyError:'数据'。

当我打印“零件”对象时,我得到了这个。我检查了所有电子邮件都包含附件,我看到“正文”键有“attachmentId”和“size”字段,但没有“数据”字段。

{'partId': '1',
 'mimeType': 'application/x-zip-compressed',
 'filename': 'Statement.zip',
 'headers': [{'name': 'Content-Type', 'value': 'application/x-zip-compressed; name="Statement.zip"'},
             {'name': 'Content-Description', 'value': 'Statement.zip'},
             {'name': 'Content-Disposition', 'value': 'attachment; filename="Statement.zip"; size=317; creation-date="Fri, 05 Oct 2018 11:00:24 GMT"; modification-date="Fri, 05 Oct 2018 …
Run Code Online (Sandbox Code Playgroud)

python google-api-python-client gmail-api

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

带有跟踪功能的 Gmail 断开链接

我们正在通过亚马逊 ses 发送 html 电子邮件。看来 gmail 正在更改 href 标签并使其无法使用。它几乎看起来像是在那里放置跟踪信息而不是原始链接。以下是我们发送给 ses 的内容以及我们在客户电子邮件中看到的内容。电子邮件中的所有 href 标签都会发生这种情况,但并非所有发送到 gmail 的电子邮件都会发生这种情况。

发送到 ses: <a ses:no-track href="http://www.Google.com">www.Google.com</a>

客户邮箱: <a href="http://esfsecev-ty3014" rel="noreferrer" target="_blank" data-saferedirecturl="https://www.google.com/url?q=http://esfsecev-ty3014&amp;source=gmail&amp;ust=1541799752348000&amp;usg=AFQjCNHRj6rzLaQFMfQQPtoDE_Q9RTTFQQ"> www.GoSurvey.com</a>

提前致谢!

email html-email amazon-ses gmail-api

6
推荐指数
0
解决办法
1170
查看次数

无效的主题名称不匹配

我一整天都在试图解决这个问题,但我找不到错误在哪里。我正在制作一个程序来检测我何时在我的 gmail 中收到邮件并在 Google 电子表格中写入该邮件,我正在使用 Gmail API 和 Google Apps 脚本。这是我的代码:

gs代码是:

function doPost(e) {
  var message = JSON.parse(e.postData.getDataAsString()).message
  var data = Utilities.newBlob(Utilies.base64Decode(message.data)).getDataAsString()[0];
  var ss = SpreadsheetApp.openById('1b8s5PLItCsmk8l1q0T1KHYOzjW7iDv4sRXSFvAxVFbQ').getSheets()[0];
  ss.appendRow([new Date(), message.message_id,data]);
  return 200;
}

function capturemail(){

  var WatchRes = Gmail.newWatchRequest();
  WatchRes.labelIds = ["INBOX"];
  //WatchRes.labelFilterAction = "include";
  WatchRes.topicName = "projects/proyecgmailyou/topics/mailsuc";

  var response = Gmail.Users.watch(WatchRes,"rjdelrio@uc.cl");

  Logger.log(response);

}
Run Code Online (Sandbox Code Playgroud)

函数 doPost() 我放在一个网络中:https : //script.google.com/a/uc.cl/macros/s/AKfycby8gOrWrMDkaAlgNdXNHl2J424Hvv0yu2CKKhJQW41Ka3Xa55g/exec

然后我尝试运行功能 capturemail 但出现下一个错误:

The API call to gmail.users.watch failed with the error: Invalid topicName does not match projects/sys-72285619869091378116913905/topics/* 
Run Code Online (Sandbox Code Playgroud)

很奇怪,因为我从不使用这个名字“sys-72285619869091378116913905”而且我没有在同一个地方看到它

我也允许 …

watch google-apps-script google-cloud-platform gmail-api google-cloud-pubsub

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

如何在 Gmail API 中下载credentials.json 启用Java

我正在尝试按照Java Quickstart 中的步骤启用Gmail API。当我点击Google 开发者控制台中的按钮时,没有显示“下载客户端配置”之类的选项。"Enable the Gmail API"

所以,我无法获得 credentials.json 文件。

google-api gmail-api google-developers-console

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

在 Spring Faremework 中通过 smtp.gmail 发送电子邮件

我正在 Spring Boot 中通过 smtp.gmail 发送电子邮件。

电子邮件配置文件

@Configuration
public class EmailConfig
{
    @Bean
    public JavaMailSender getJavaMailSender()
    {
        JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
        mailSender.setHost("smtp.gmail.com");
        mailSender.setPort(25);

        mailSender.setUsername("abc@gmail.com");
        mailSender.setPassword("123");

        Properties props = mailSender.getJavaMailProperties();
        props.put("mail.transport.protocol", "smtp");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.debug", "true");

        return mailSender;
    }

    @Bean
    public SimpleMailMessage emailTemplate()
    {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setTo("abc@gmail.com");
        message.setFrom("johndoe@gmail.com");
        message.setText("FATAL - Application crash. Save your job !!");
        return message;
    }
}
Run Code Online (Sandbox Code Playgroud)

发送电子邮件服务.java

@Service("emailService")
public class SendEmailService {

    @Autowired
    JavaMailSender mailSender;

    @Autowired
    private SimpleMailMessage preConfiguredMessage;

    public void …
Run Code Online (Sandbox Code Playgroud)

java smtp spring-boot gmail-api

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

超出配额指标“查询”的配额,并限制服务“gmail.googleapis.com”的“每用户每分钟查询数”

我们的应用程序使用管理员为整个域授权的服务帐户。使用此服务帐户,我们的应用程序使用 GetMessage 等 Gmail API 访问域用户的电子邮件。

突然间,从本周开始,我们开始间歇性地收到错误

Quota exceeded for quota metric 'Queries' and limit 'Queries per minute per user' of service 'gmail.googleapis.com' for consumer 'project_number:XYZ
Run Code Online (Sandbox Code Playgroud)

我们的应用程序或访问电子邮件的频率没有变化。我们在使用 API 时使用 10 的批量大小。

GCP 仪表板中的“配额超出错误计数(10 秒)- 每分钟查询数”图表为空。所以我们真的不确定发生了什么以及为什么我们突然达到配额限制。

此外,我不确定当我的应用程序使用服务帐户访问用户邮箱时如何应用“每用户”限制。围绕这个的文档是模糊的,至少对我来说是这样。

这些错误确实影响了我们为客户服务的能力。此外,不知道为什么会出现这些错误正在动摇我们对 Gmail API 的信心。

高度赞赏这方面的任何帮助。

谢谢

更新:今天我们看到很多

"User-rate limit exceeded.  Retry after <timestamp>"
Run Code Online (Sandbox Code Playgroud)

错误。似乎这一次我们达到了除“每分钟查询数”之外的一些配额限制。当我查看我的客户端实施并找出发生这种情况的原因时,请随时分享您可能有的任何建议。

谢谢。

service-accounts gmail-api

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

身份验证后带有 gmail-api 的 UserRecoverableAuthIOException

我正在使用Gmail api,许多用户抱怨发送电子邮件不起作用。对于大多数用户来说,它工作正常,我无法重现该问题。在 Firebase 中,我收到以下崩溃报告。

Non-fatal Exception: com.google.api.client.googleapis.extensions.android.gms.auth.UserRecoverableAuthIOException
        at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential$RequestHandler.intercept(GoogleAccountCredential.java:297)
        at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:868)
        at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:419)
        at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352)
        at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:469)
        at com.dummydomain.myapp.EmailUtils.sendMessage(EmailUtils.java:397)
        (...)

        
Caused by com.google.android.gms.auth.d: NeedPermission
        at com.google.android.gms.auth.zze.zzb(zze.java:13)
        at com.google.android.gms.auth.zzd.zza(zzd.java:77)
        at com.google.android.gms.auth.zzd.zzb(zzd.java:20)
        at com.google.android.gms.auth.zzd.getToken(zzd.java:7)
        at com.google.android.gms.auth.zzd.getToken(zzd.java:5)
        at com.google.android.gms.auth.zzd.getToken(zzd.java:2)
        at com.google.android.gms.auth.GoogleAuthUtil.getToken(GoogleAuthUtil.java:55)
        at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential.getToken(GoogleAccountCredential.java:267)
        at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential$RequestHandler.intercept(GoogleAccountCredential.java:292)
        at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:868)
        at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:419)
        at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352)
        at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:469)
        at com.dummydomain.myapp.EmailUtils.sendMessage(EmailUtils.java:397)
        (...)

Run Code Online (Sandbox Code Playgroud)

以下是我的身份验证过程的要点。此时已授予 Manifest.permission.GET_ACCOUNTS,并且 Google Cloud Console 中的相应 API 内容已正确配置,并且我的应用已通过使用敏感权限/范围 GMAIL_SEND 的验证。

private void authenticate() {
    
    String[] SCOPES = {GmailScopes.GMAIL_SEND};
    GoogleAccountCredential mCredential = GoogleAccountCredential.usingOAuth2(
            context,
            Arrays.asList(SCOPES)) …
Run Code Online (Sandbox Code Playgroud)

java android gmail-api

6
推荐指数
0
解决办法
275
查看次数