使用 Zend 在 Gmail 中包含客户端的默认电子邮件签名 (PHP)

Include client's default email signature in Gmail using Zend (PHP)

我正在使用 Google oAuth2 对我的客户进行身份验证,然后使用 Zend (v1.12) SMTP 代表他们发送电子邮件,全部使用 PHP。我的问题是如何在使用 Zend 创建的外发邮件中包含客户的默认电子邮件签名(在他们的 Gmail 设置中设置)?

我可以完全访问客户的 Gmail,所以希望有办法获得他们的 HTML 签名,然后将其添加到我的 html 电子邮件正文中。像这样:

...    
    if (isset($_SESSION['access_token']) && $_SESSION['access_token']) {
        $client->setAccessToken($_SESSION['access_token']);
        $obj=json_decode($_SESSION["access_token"],true);
        $client_token=$obj['access_token'];

        require_once 'Zend/Mail/Transport/Smtp.php';
        require_once 'Zend/Mail.php';

        $email = 'ClientJohn@abcco.com';//uses gmail business app
        $token = $client_token;
        $initClientRequestEncoded = base64_encode("user={$email}auth=Bearer {$token}");
        $config = array('ssl' => 'ssl', 'port' => '465', 'auth' => 'oauth2', 'xoauth2_request' => $initClientRequestEncoded);
        $transport = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config);
        $mail = new Zend_Mail();

        // Not real code: 
        $signature=$_GET['client HTML signature'];
        // 

        $mail->setBodyText('EMAIL_BODY'.$signature);
        $mail->setBodyHtml('<b>EMAIL</b>_BODY'.$signature);
        $mail->setFrom('ClientJohn@abcco.com', 'Client John');
        $mail->addTo('michaelt@test.com', 'Michael F');
        $mail->setSubject('EMAIL_SUBJECT');
        $mail->send($transport);    
    } else {
        $authUrl = $client->createAuthUrl();
    }
...

我查看了 Gmail rest API (https://developers.google.com/gmail/api/),其中没有提及任何关于签名的内容。

我在网上搜索并查看了 Stack Overflow 上的许多问题,例如: 但不要认为这行得通,因为我没有创建签名,只是想获得客户已经使用的东西。这很有希望,只是不确定如何将其实现到我的代码中(因为它使用的是 codeigniter): How can add email signature in codeigniter? 大多数网络搜索都是关于电子邮件的数字签名的。我正在寻找我创建的电子邮件底部的实际 HTML 签名。

如果没有办法从 Gmail 获取它,我想我必须让每个客户给我发一封电子邮件,将他们的签名 HTML 字符串复制并粘贴到数据库中,然后将不得不为基于用户的每封电子邮件提取 HTML...这并不理想,因为如果他们更改签名,他们还必须告诉我,以便我可以更新数据库。

签名是客户端特定的设置,遗憾的是无法检索,正如 borfast 所说:

The signature is not added by the API because it is a setting on the web client, not a global setting for the entire account. If you configure your Gmail account on Thunderbird, Outlook or another email client, Gmail will not add the signature either. You should think about Gmail in two separate ways:

The web client interface, accessible at mail.google.com, which is just an email client like any other; Your inbox, the place where messages end up in, which is completely independent of the clients you use to access it. In other words, this is an email client-dependent setting, and the only thing the clients do is add a bit of text to the text you write yourself, nothing else.

考虑到这一点,您最好让您的用户在您的应用程序中创建一个单独的签名,供他们发送邮件时使用。