通过 Google Calendar API 发送活动电子邮件通知

问题描述 投票:0回答:5

我正在使用 calendar.events.insert API 通过 PHP 客户端将事件添加到我的日历。 该事件与 API 设置的适当值一起正确插入。 但同样无法触发向与会者发送电子邮件邀请。我环顾四周发现该请求需要将参数sendNotifications设置为true。 同样的似乎也没有帮助。

这是示例代码:

var request = gapi.client.calendar.events.insert({
        "calendarId" : calendarData.id,
        "sendNotifications": true,
        "end": {
          "dateTime": eventData.endTime
        },
        "start": {
          "dateTime": eventData.startTime
        },
        "summary": eventData.eventName, 
        "attendees": jQuery.map(eventData.attendees, function(a) {
          return {'email' : a};
        }),
        "reminders": {
          "useDefault": false,
          "overrides": [
            {
              "method": "email",
              "minutes": 15
            },
            {
              "method": "popup",
              "minutes": 15
            }
          ]
       }
      });

其中 eventData 和 calendarData 是适当的对象。

虽然我的主要问题是第一次发送电子邮件邀请,但我也尝试(如上所示)设置提醒(使用overrides)。虽然弹出窗口按预期工作,但在这种情况下我也没有收到电子邮件更新。

这让我想知道这是否可能是一个权限问题 - 我可能需要为我的应用程序启用某些功能(可以理解的是,用户需要知道我的应用程序是否代表他们发送电子邮件)?

javascript php google-api google-calendar-api google-api-php-client
5个回答
6
投票

插入事件的Google API文档中,“sendNotifications”选项实际上是一个参数。您可能希望将其放入请求参数而不是正文中。

流星中

注意: 在我的 Meteor 应用程序中,我确实手动执行了请求,而且我对 JavaScript 仍然很陌生。我不确定你会如何用纯 JavaScript 或日历 API 来做到这一点,所以我只放 Meteor 代码,希望它能有所帮助,尽管它有点偏离主题。

var reqUrl = "https://www.googleapis.com/calendar/v3/calendars/primary/events";
var payload = {
  'headers' : {
    'Authorization': "Bearer " + token,
    'Content-Type': 'application/json'
  },
  'params': {
    'sendNotifications': true
  },
  'data': {
    "summary": summary,
    "location": "",
    "start": {
      "dateTime": start
    },
    "end": {
      "dateTime": end
    },
    "attendees": [
      {
        "email": "*********@gmail.com"
      }
    ]
  }
};
Meteor.http.post(reqUrl, reqParams, function () {});

4
投票

@linaa 是正确的。我自己刚刚遇到这个问题。

在 JS 中,这看起来像:

var request = gapi.client.calendar.events.insert(
    sendNotifications: true,
    {
              // request body goes here
    }
);

3
投票
event = service.events().insert(calendarId='primary', body=event, sendUpdates='all').execute()

这会起作用


0
投票

为此,您应该将“remindOnRespondedEventsOnly”值设置为“true”。

这意味着,是否仅针对用户响应状态为“是”和“也许”的事件发送事件提醒。

您可以在此处找到此信息。

希望有帮助!


0
投票

如果有人想知道为什么他们没有收到活动的电子邮件通知 - 我学到的东西:

仅针对未来的事件发送电子邮件通知。

因此,如果您正在使用过去的事件运行测试,请注意不会发送通知。

(╯°□°)╯︵┻⁄┻

© www.soinside.com 2019 - 2024. All rights reserved.