mime types — Проблема отправки электронных писем с цифровой подписью в Gmail из переполнения стека

Я пытаюсь отправить сообщения электронной почты с цифровой подписью через PHPBB. У меня он работает хорошо для всех наших электронных писем по обмену и для всех различных клиентов, но он не работает для пользователей Gmail. Похоже, что Google не обрабатывает / не читает тип MIME из нескольких частей. Может быть, я упускаю что-то глупое или легкое? Спасибо за внимание!

Вот пример тестового электронного письма, сертификат заблокирован с помощью #:

Это подписанное сообщение S / MIME

——############################ Content-Type: text / html; кодировка = «ISO-8859-1»

Content-Transfer-Encoding: 8 бит

Привет админ,

Поздравляю. Если вы получили это письмо, phpBB правильно
настроен на отправку писем.

Если вам нужна помощь, посетите форумы поддержки phpBB
https://www.phpbb.com/community/

——############################ Тип содержимого:
применение / х-PKCS7-подпись; name = «smime.p7s» Content-Transfer-Encoding: base64 Content-Disposition: вложение;
имя файла = «smime.p7s»

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

——############################ —

Вот фрагмент кода, который я использую:

// Send message ...
$mail_to = ($to == '') ? 'undisclosed-recipients:;' : $to;
$fp = fopen("/var/www/ssl/ext/phpbbservices/digests/includes/msg.txt", "w");
$this->msg = "".'Content-Type: text/html; charset="iso-8859-1"Content-Transfer-Encoding: 8bit'. "\n\n" .  $this->msg . "\n";
fwrite($fp, $this->msg);
fclose($fp);

openssl_pkcs7_sign("/var/www/ssl/ext/phpbbservices/digests/includes/msg.txt", "/var/www/ssl/ext/phpbbservices/digests/includes/signed.txt", file_get_contents("/var/www/ssl/ext/phpbbservices/digests/includes/publicCert.pem"), array(file_get_contents("/var/www/ssl/ext/phpbbservices/digests/includes/privateKey.pem"), 'PASSWORD_FOR_PRIVATE_KEY'), $headers);
$data = file_get_contents("/var/www/ssl/ext/phpbbservices/digests/includes/signed.txt");


$parts = explode("\n\n", $data, 2);
$newHeader = explode("\n", $parts[0]);

$newMessage =  $parts[1];


$result = phpbb_mail($mail_to, $this->subject, $newMessage, $newHeader, PHP_EOL, $err_msg);

1

Решение

Ну, это была простая вещь!
Заголовки обмена не совпадали с тем, что было у меня в обработанном файле signature.txt. Я покопался в ней и обнаружил, что система phpBB создает заголовок, в том числе Content-Type: text / html; charset = charset = «iso-8859-1». Таким образом, заголовок имел два, один и правильный «Content-Type: multipart / signature; Протокол = «применение / х-PKCS7-подпись»; micalg = «sha-256»; ”Exchange изменяет заголовки и просто игнорирует / очищает первую запись, в то время как Google игнорирует второй тип контента и просто использует первый.

В конечном счете, мне просто нужно было закомментировать запись заголовка phpBB в той части кода, которая устанавливает Content-Type.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]