Я использую 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 для каждого письма основанные на пользователе... не идеальны, потому что, если они меняют свою подпись, они также должны будут сказать мне, чтобы я мог обновить БД.
Подпись - это специфический для клиента параметр, который, к сожалению, не может быть восстановлен, как сказано borfast здесь: отправка электронной почты с сигнатурой с использованием API Gmail
Подпись не добавляется API, потому что это параметр на веб-клиенте, а не глобальный параметр для всей учетной записи. Если вы настроите свою учетную запись Gmail в Thunderbird, Outlook или другом почтовом клиенте, Gmail также не добавит подпись. Вы должны подумать о Gmail двумя способами:
Интерфейс веб-клиента, доступный на mail.google.com, который является только почтовым клиентом, как и любой другой; Ваш почтовый ящик, место, где появляются сообщения, полностью независимое от клиентов, которые вы используете для доступа к нему. Другими словами, это настройка, зависящая от клиента электронной почты, и единственное, что делают клиенты, это добавить немного текста в текст, который вы пишете сами, и ничего другого.
Имея это в виду, вероятно, было бы хорошей идеей, чтобы вы позволили своим пользователям создавать отдельную подпись в приложении, которую вы используете при отправке почты.