Nginx php sendmail с ошибкой тайм-аута заголовков MIME - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть код, написанный на PHP, который использует функцию mail (). Письмо содержит html, обычный текст и вложение в формате PDF. Чтобы отправить такое письмо, мне нужно отправить заголовки с типами MIME, но когда я делаю это, ему нужно очень много времени для отправки почты и возникает ошибка тайм-аута Nginx. Но когда я отправляю письмо только с простым текстом и без какой-либо информации MIME в заголовке, письмо отправляется без ошибок и быстро.

Ошибка: превышено максимальное время выполнения 30 секунд

Это письмо, которое отправляется:

$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

$headers = "MIME-Version: 1.0\n" . "Content-Type: multipart/alternative;\n" . " boundary=\" 
{$mime_boundary}\"";


$message = "--{$mime_boundary}\n" . "Content-Type: text/plain; charset=\"UTF-8\"\n" .
"Content-Dispotion: inline\n" . "Content-Transfer-Encoding: 7bit\n\n $plainText\n\n";

$message .= "--{$mime_boundary}\n" . "Content-Type: text/html; charset=\"UTF-8\"\n" .
"Content-Dispotion: inline\n" . "Content-Transfer-Encoding: 7bit\n\n" . $htmlContent . "\n\n";





if (!empty($file) > 0) {
    if (is_file($file)) {
        $message .= "--{$mime_boundary}\n";
        $fp =    @fopen($file, "rb");
        $data =  @fread($fp, filesize($file));

        @fclose($fp);
        $data = chunk_split(base64_encode($data));
        $message .= "Content-Type: application/octet-stream; name=\"" . basename($file) . "\"\n" .
            "Content-Description: " . basename($file) . "\n" .
            "Content-Disposition: attachment;\n" . " filename=\"" . basename($file) . "\"; size=" . 
filesize($file) . ";\n" .
            "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n";
    }
}


$message .= "--{$mime_boundary}--";
...