使用Zend(PHP)

时间:2015-05-28 17:02:39

标签: php email zend-framework smtp gmail-api

我正在使用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}\1auth=Bearer {$token}\1\1");
        $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的大量问题:How to send an email in C# with gmail template/signature 但不要认为这是有效的,因为我没有创建签名,只是想得到客户已经使用的东西。这很有希望,只是不确定如何将它实现到我的代码中(因为它使用codeigniter): How can add email signature in codeigniter? 大多数网络搜索都是关于电子邮件的数字签名。我正在寻找我创建的电子邮件底部的实际HTML签名。

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

1 个答案:

答案 0 :(得分:2)

签名是客户特定的设置,遗憾地无法检索,正如borfast在这里所说:Sending email with signature using Gmail API

  

API不会添加签名,因为它是一个设置   Web客户端,而不是整个帐户的全局设置。如果你   在Thunderbird,Outlook或其他电子邮件上配置您的Gmail帐户   客户端,Gmail也不会添加签名。你应该想一想   关于Gmail有两种不同的方式:

     

可在mail.google.com上访问的网络客户端界面   像任何其他电子邮件客户端;您的收件箱,邮件的地方   最终进入,完全独立于您使用的客户端   访问它。换句话说,这是一个依赖于电子邮件客户端的设置,   客户端唯一做的就是在文本中加入一些文字   写自己,没别的。

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