【问题标题】:how to send email from my personal gmail account using PHP and Gmail API?如何使用 PHP 和 Gmail API 从我的个人 gmail 帐户发送电子邮件?
【发布时间】:2019-06-21 10:49:24
【问题描述】:

我想使用 Gmail API 和 PHP 以编程方式从我的个人电子邮件帐户发送电子邮件。问这个问题的原因是:

我无法使用 SMPT,因为我使用的是 A2 Hosting,它禁止共享主机计划连接到远程 SMPT 服务器。

似乎唯一的解决方案是使用 Gmail API。我可以看到很多类似的教程。但是,它们大多不用于使用个人电子邮件帐户(即,这些方法中的大多数都要求用户授权并代表他们发送电子邮件)。我的情况不同:我只想使用我的个人 gmail 帐户发送电子邮件。

到目前为止,我刚刚找到了一个关于这个主题的相关教程http://sahmwebdesign.com/gmail-api-via-service-accounts/。但似乎我必须有一个 G-Suite 帐户才能使用这种方法,这对我来说意味着额外的费用。

无论如何,是否可以让服务帐户与普通的 gmail 用户帐户一起使用。如果不是,我怎样才能使用 gmail api 而不必一直登录。

【问题讨论】:

  • @pinoyyid 谢谢,我已经阅读了您在上述链接中的回答。你有 PHP 的示例代码吗?
  • 您需要的唯一代码是使用刷新令牌获取访问令牌的休息调用,然后提交您的电子邮件的休息调用。

标签: php google-oauth gmail-api


【解决方案1】:

您需要记住,Gmail 帐户是私人用户数据。要使用 Gmail API 发送电子邮件,您必须获得该帐户所有者的许可才能从该帐户以编程方式发送电子邮件。

为此,我们使用 Oauth2。将刷新令牌存储在某个地方后,您将需要对应用程序进行身份验证,然后您将能够在以后使用刷新令牌来获取新的访问令牌以使用它。使用普通用户 gmail 帐户无法解决此问题

我这里有一些代码显示如何使用刷新令牌Oauth2Authentication.php

$client->refreshToken($_SESSION['refresh_token']);
$client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
$client->setAccessToken($client->getAccessToken()); 

服务帐号

服务帐户用于服务器到服务器的交互,它们是预先批准的。不幸的是,服务帐户仅适用于 Gsuite gmail 帐户,而不适用于普通用户 gmail 帐户。

【讨论】:

  • 感谢 DalmTo。我不清楚 RedirectUri。我不需要将我的应用程序重定向到撰写电子邮件的页面,因为我知道我的电子邮件内容(包括收件人电子邮件地址、主题、内容、附件)。我还需要指定 RedirectUri 吗?如果是这样,它会是什么样子(或者我应该在 RedirectUri 中做什么)?我正在努力理解此页面上的示例代码pipiscrew.com/2015/04/php-send-mail-through-gmail-api 似乎在用户进行身份验证后,它会重定向到x.com/pipis2(但我不知道这个链接的作用)。非常感谢!
猜你喜欢
  • 2020-09-30
  • 1970-01-01
  • 2012-05-25
  • 1970-01-01
  • 2012-03-30
  • 2013-03-24
  • 2017-08-05
  • 2017-05-25
  • 2020-06-16
相关资源
最近更新 更多