为什么 google 日历活动邀请邮件在创建活动时没有发送给客人?
Why google calendar event invite mail not send to there guests when event is create?
我想通过电子邮件向多个用户发送 google 日历事件电子邮件。当前事件已创建,但邮件不会发送给我们在此事件中添加的来宾用户。所以想在创建事件时向来宾用户发送电子邮件。那么你能帮我看看为什么邮件发不出去吗?
require __DIR__ . '/vendor/autoload.php';
/*if (php_sapi_name() != 'cli') {
throw new Exception('This application must be run on the command line.');
}*/
/**
* Returns an authorized API client.
* @return Google_Client the authorized client object
*/
function getClient()
{
$client = new Google_Client();
$client->setApplicationName('Google Calendar API PHP Quickstart');
$client->setScopes(Google_Service_Calendar::CALENDAR);
$client->setAuthConfig(__DIR__ .'/credentials.json');
$client->setAccessType('offline');
$client->setPrompt('select_account consent');
// Load previously authorized token from a file, if it exists.
// The file token.json stores the user's access and refresh tokens, and is
// created automatically when the authorization flow completes for the first
// time.
$tokenPath = 'token.json';
if (file_exists($tokenPath)) {
$accessToken = json_decode(file_get_contents($tokenPath), true);
$client->setAccessToken($accessToken);
}
// If there is no previous token or it's expired.
if ($client->isAccessTokenExpired()) {
// Refresh the token if possible, else fetch a new one.
if ($client->getRefreshToken()) {
$client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
} else {
// Request authorization from the user.
$authUrl = $client->createAuthUrl();
printf("Open the following link in your browser:\n%s\n", $authUrl);
print 'Enter verification code: ';
$authCode = trim(fgets(STDIN));
// Exchange authorization code for an access token.
$accessToken = $client->fetchAccessTokenWithAuthCode($authCode);
$client->setAccessToken($accessToken);
// Check to see if there was an error.
if (array_key_exists('error', $accessToken)) {
throw new Exception(join(', ', $accessToken));
}
}
// Save the token to a file.
if (!file_exists(dirname($tokenPath))) {
mkdir(dirname($tokenPath), 0700, true);
}
file_put_contents($tokenPath, json_encode($client->getAccessToken()));
}
return $client;
}
// Get the API client and construct the service object.
$client = getClient();
$service = new Google_Service_Calendar($client);
// Print the next 10 events on the user's calendar.
$calendarId = 'primary';
$optParams = array(
'maxResults' => 10,
'orderBy' => 'startTime',
'singleEvents' => true,
'timeMin' => date('c'),
);
$results = $service->events->listEvents($calendarId, $optParams);
$events = $results->getItems();
// Refer to the PHP quickstart on how to setup the environment:
// https://developers.google.com/calendar/quickstart/php
// Change the scope to Google_Service_Calendar::CALENDAR and delete any stored
// credentials.
$event = new Google_Service_Calendar_Event(array(
'summary' => 'Test Event',
'location' => 'Test Event',
'description' => 'This is my test description',
'start' => array(
'dateTime' => '2020-05-21T04:02:00-04:00',
'timeZone' => 'Asia/Kolkata',
),
'end' => array(
'dateTime' => '2020-05-22T16:05:00-07:00',
'timeZone' => 'Asia/Kolkata',
),
'recurrence' => array(
'RRULE:FREQ=DAILY;COUNT=1'
),
'attendees' => array(
array('email' => 'lorit12866@frost2d.net'),
),
'reminders' => array(
'useDefault' => FALSE,
'overrides' => array(
array('method' => 'email', 'minutes' => 24 * 60),
array('method' => 'popup', 'minutes' => 10),
),
),
));
$calendarId = 'primary';
$event = $service->events->insert($calendarId, $event, ['sendUpdates' => 'all']);
//$event = $service->events->insert($calendarId, $event);
printf('Event created: %s\n', $event->htmlLink);
提前致谢!
如果您的问题与参加者在活动开始前 24 小时未收到提醒有关:
请注意,覆盖默认提醒仅适用于活动创建者。
您可以在 Private event properties 下验证:
Some properties are private, such as reminders, colorId, transparency,
or the extendedProperties.private property. These properties are
controlled by the attendee's settings and not by the organizer
calendar.
换句话说,与会者将根据他们在日历中的设置接收(或不接收)提醒,您不能强制提醒他们。
如果您的问题与创建警报时与会者未收到通知有关:
- 请注意,您指定的活动开始和结束日期是过去的日期
- 只有在您创建将来发生的事件时才会发送通知
我想通过电子邮件向多个用户发送 google 日历事件电子邮件。当前事件已创建,但邮件不会发送给我们在此事件中添加的来宾用户。所以想在创建事件时向来宾用户发送电子邮件。那么你能帮我看看为什么邮件发不出去吗?
require __DIR__ . '/vendor/autoload.php';
/*if (php_sapi_name() != 'cli') {
throw new Exception('This application must be run on the command line.');
}*/
/**
* Returns an authorized API client.
* @return Google_Client the authorized client object
*/
function getClient()
{
$client = new Google_Client();
$client->setApplicationName('Google Calendar API PHP Quickstart');
$client->setScopes(Google_Service_Calendar::CALENDAR);
$client->setAuthConfig(__DIR__ .'/credentials.json');
$client->setAccessType('offline');
$client->setPrompt('select_account consent');
// Load previously authorized token from a file, if it exists.
// The file token.json stores the user's access and refresh tokens, and is
// created automatically when the authorization flow completes for the first
// time.
$tokenPath = 'token.json';
if (file_exists($tokenPath)) {
$accessToken = json_decode(file_get_contents($tokenPath), true);
$client->setAccessToken($accessToken);
}
// If there is no previous token or it's expired.
if ($client->isAccessTokenExpired()) {
// Refresh the token if possible, else fetch a new one.
if ($client->getRefreshToken()) {
$client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
} else {
// Request authorization from the user.
$authUrl = $client->createAuthUrl();
printf("Open the following link in your browser:\n%s\n", $authUrl);
print 'Enter verification code: ';
$authCode = trim(fgets(STDIN));
// Exchange authorization code for an access token.
$accessToken = $client->fetchAccessTokenWithAuthCode($authCode);
$client->setAccessToken($accessToken);
// Check to see if there was an error.
if (array_key_exists('error', $accessToken)) {
throw new Exception(join(', ', $accessToken));
}
}
// Save the token to a file.
if (!file_exists(dirname($tokenPath))) {
mkdir(dirname($tokenPath), 0700, true);
}
file_put_contents($tokenPath, json_encode($client->getAccessToken()));
}
return $client;
}
// Get the API client and construct the service object.
$client = getClient();
$service = new Google_Service_Calendar($client);
// Print the next 10 events on the user's calendar.
$calendarId = 'primary';
$optParams = array(
'maxResults' => 10,
'orderBy' => 'startTime',
'singleEvents' => true,
'timeMin' => date('c'),
);
$results = $service->events->listEvents($calendarId, $optParams);
$events = $results->getItems();
// Refer to the PHP quickstart on how to setup the environment:
// https://developers.google.com/calendar/quickstart/php
// Change the scope to Google_Service_Calendar::CALENDAR and delete any stored
// credentials.
$event = new Google_Service_Calendar_Event(array(
'summary' => 'Test Event',
'location' => 'Test Event',
'description' => 'This is my test description',
'start' => array(
'dateTime' => '2020-05-21T04:02:00-04:00',
'timeZone' => 'Asia/Kolkata',
),
'end' => array(
'dateTime' => '2020-05-22T16:05:00-07:00',
'timeZone' => 'Asia/Kolkata',
),
'recurrence' => array(
'RRULE:FREQ=DAILY;COUNT=1'
),
'attendees' => array(
array('email' => 'lorit12866@frost2d.net'),
),
'reminders' => array(
'useDefault' => FALSE,
'overrides' => array(
array('method' => 'email', 'minutes' => 24 * 60),
array('method' => 'popup', 'minutes' => 10),
),
),
));
$calendarId = 'primary';
$event = $service->events->insert($calendarId, $event, ['sendUpdates' => 'all']);
//$event = $service->events->insert($calendarId, $event);
printf('Event created: %s\n', $event->htmlLink);
提前致谢!
如果您的问题与参加者在活动开始前 24 小时未收到提醒有关:
请注意,覆盖默认提醒仅适用于活动创建者。
您可以在 Private event properties 下验证:
Some properties are private, such as reminders, colorId, transparency, or the extendedProperties.private property. These properties are controlled by the attendee's settings and not by the organizer calendar.
换句话说,与会者将根据他们在日历中的设置接收(或不接收)提醒,您不能强制提醒他们。
如果您的问题与创建警报时与会者未收到通知有关:
- 请注意,您指定的活动开始和结束日期是过去的日期
- 只有在您创建将来发生的事件时才会发送通知