Включение подписи электронной почты по умолчанию клиента в Gmail с использованием Zend (PHP)

1

Я использую Google oAuth2 для аутентификации моего клиента, а затем отправки электронной почты от их имени, используя Zend (v1.12) SMTP, используя PHP. Мой вопрос: как включить подпись электронной почты клиента по умолчанию (как указано в настройках Gmail) исходящей почты, созданной с помощью Zend?

У меня есть полный доступ к клиенту 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 = '[email protected]';//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('[email protected]', 'Client John');
        $mail->addTo('[email protected]', 'Michael F');
        $mail->setSubject('EMAIL_SUBJECT');
        $mail->send($transport);    
    } else {
        $authUrl = $client->createAuthUrl();
    }
...

Я просмотрел API останова Gmail (https://developers.google.com/gmail/api/), который ничего не говорит о подписях.

Я искал в Интернете и рассмотрел множество вопросов о переполнении стека, например: Как отправить электронное письмо на С# с помощью шаблона/подписи gmail, но не думаю, что это работает, поскольку я не создаю подпись, просто хочу получить то, что клиент уже использует. Это многообещающе, просто не уверен, как реализовать его в моем коде (так как он использует codeigniter): Как добавить подпись электронной почты в codeigniter? Большинство поисковых запросов в Интернете касаются цифровой подписи электронной почты. Я ищу фактическую подпись HTML внизу электронной почты, которую я создаю.

Если нет способа получить его из Gmail, я думаю, что мне придется каждый клиент отправлять мне электронное письмо, копировать и вставлять свою строку HTML подписи в базу данных, тогда вам придется вытащить этот HTML для каждого письма основанные на пользователе... не идеальны, потому что, если они меняют свою подпись, они также должны будут сказать мне, чтобы я мог обновить БД.

Теги:
email
smtp
zend-framework
gmail-api

1 ответ

2
Лучший ответ

Подпись - это специфический для клиента параметр, который, к сожалению, не может быть восстановлен, как сказано borfast здесь: отправка электронной почты с сигнатурой с использованием API Gmail

Подпись не добавляется API, потому что это параметр на веб-клиенте, а не глобальный параметр для всей учетной записи. Если вы настроите свою учетную запись Gmail в Thunderbird, Outlook или другом почтовом клиенте, Gmail также не добавит подпись. Вы должны подумать о Gmail двумя способами:

Интерфейс веб-клиента, доступный на mail.google.com, который является только почтовым клиентом, как и любой другой; Ваш почтовый ящик, место, где появляются сообщения, полностью независимое от клиентов, которые вы используете для доступа к нему. Другими словами, это настройка, зависящая от клиента электронной почты, и единственное, что делают клиенты, это добавить немного текста в текст, который вы пишете сами, и ничего другого.

Имея это в виду, вероятно, было бы хорошей идеей, чтобы вы позволили своим пользователям создавать отдельную подпись в приложении, которую вы используете при отправке почты.

  • 0
    Благодарю. Как вы заявили, и я обнаружил, что в нескольких других местах в настоящее время нет способа получить подпись пользователя. Разработчики Google, добавить к запросу функции? Еще раз спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню