Gmail API请求Excel VBA PHP
我正在使用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开发人员示例中的所有引用均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是可行的,因为它有更高的配额,但找不到任何详
/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());
}
}
?>