Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gmail API请求Excel VBA PHP_Php_Gmail_Gmail Api - Fatal编程技术网

Gmail API请求Excel VBA PHP

Gmail API请求Excel VBA PHP,php,gmail,gmail-api,Php,Gmail,Gmail Api,我正在使用Excel VBA为本地应用程序的mail.google.com范围获取用户的oAuth2令牌。它工作正常,所以我有用户的访问令牌(如果过期,它会刷新)和用户的电子邮件地址。我使用Zend SMTP发送电子邮件,但发现以这种方式批量发送电子邮件是有限制的(目前我的帐户被锁定,因为周末试图解决这个问题时超过了配额)。我的客户可能一次发送2000封电子邮件,将自己锁定在Gmail帐户之外24小时是不可接受的。我认为使用Gmail REST API是可行的,因为它有更高的配额,但找不到任何详

我正在使用Excel VBA为本地应用程序的mail.google.com范围获取用户的oAuth2令牌。它工作正常,所以我有用户的访问令牌(如果过期,它会刷新)和用户的电子邮件地址。我使用Zend SMTP发送电子邮件,但发现以这种方式批量发送电子邮件是有限制的(目前我的帐户被锁定,因为周末试图解决这个问题时超过了配额)。我的客户可能一次发送2000封电子邮件,将自己锁定在Gmail帐户之外24小时是不可接受的。我认为使用Gmail REST API是可行的,因为它有更高的配额,但找不到任何详细的PHP示例来说明如何通过HTTP请求创建和发送HTML电子邮件

我知道我必须创建MIME电子邮件,我想我可以从我成功创建的Zend电子邮件中找到答案(使用这个线程stackoverflow.com/questions/24940984/使用gmail api和google api php客户端发送电子邮件)。我的问题是我使用什么PHP代码来创建和发送电子邮件

Google开发人员示例中的所有引用均
/userId/
(来自developers.Google.com/gmail/api/v1/reference/),但如果我只有用户令牌和他们的电子邮件地址,则不确定从何处获取

我想是这样的:

<?php
require 'GoogleAPI/src/Google/autoload.php';
extract($_POST); // use to get my client token, client's email address, the email to, cc, bcc, subject, body, etc.

//<Build the email $mime message here>

$m = new Google_Service_Gmail_Message();
$data = base64_encode($mime);
$data = str_replace(array('+','/','='),array('-','_',''),$data); // url safe
$m->setRaw($data);
$service->users_messages->send('me', $m);
?>

你看过谷歌自己的PHP示例吗?对最后这个例子是整个oauth过程,只是关于返回标签。我不知道如何将其应用到我的需要中,因为我已经有了客户的令牌(我是否将其设置为$client?),同时,我也在寻找如何从客户的gmail帐户发送电子邮件,而没有运气从标签示例到实际发送邮件……用户id指的是用户的电子邮件地址。您可以检查此链接以在请求中使用令牌。谢谢。我将尝试使用电子邮件作为用户ID,但仍然不清楚如何创建请求以及将客户端令牌放置在何处。我也审阅了你发送的链接。只是不清楚如何在我的PHP文件中格式化和使用它。我相信这很容易,我只是不在那里。我正在阅读RESTAPI,希望这会有所帮助。如果我已经有了客户的电子邮件地址和Oauth2令牌,我很想用Gmail API发送一封电子邮件……你可以查看oauth play ground以发送带有令牌的示例请求。
<?php
require 'GoogleAPI/src/Google/autoload.php';

/**
 * Returns an authorized API client.
 * @return Google_Client the authorized client object
 */
 $client = new Google_Client();
 $client->setAccessToken('ya29.hwFcwk2M73vaPwNObeuwizHGjXT2y6UsAFEcDIvRAoWTM28gu2pJeK4GiMySkfAllTOQvXVMYfffff');

// Get the API client and construct the service object.
//$client = getClient();
$service = new Google_Service_Gmail($client);

// Print the labels in the user's account.
$user = 'me';
$results = $service->users_labels->listUsersLabels($user);

if (count($results->getLabels()) == 0) {
  print "No labels found.\n";
} else {
  print "Labels:\n";
  foreach ($results->getLabels() as $label) {
    printf("- %s\n", $label->getName());
  }
}
?>