Почта не отправляется из php скрипта после обновления до PHP 7.1 (тело сообщения пустое) - PullRequest
0 голосов
/ 11 января 2019

Я только что изменил некоторый код, чтобы иметь возможность отправлять письма снова с моим mailscript.

Сначала у меня была ошибка 500 из-за устаревшей функции eregi_replace в этой строке:

$body = eregi_replace("[\]",'',$body);

Я изменил его на:

$body = preg_replace("[\]",'',$body);

Но теперь я не могу отправлять электронные письма, в моей консоли нет ошибок (я пишу в скрипт с помощью ajax), но во вкладке сети, когда я смотрю на ответ, я получаю следующее:

Message body empty
Message body empty
{"type":"error","text":"Could not send mail! Please check your PHP mail configuration."}

Я отправляю два письма, чтобы двойное сообщение было правильным.

Это тело, которое я хочу отправить:

$body                   = "
    <div id='sig' style='min-height: 50px; line-height: 17px; margin: 6px 0; padding-top: 0px; padding-bottom: 8px; font-family: calibri, Arial, Sans-Serif; font-size: 13px; color: #5C5C5C; min-width: 530px;'>
    <div style=' padding-left: 10px;'>
        <br>
        <br>
        Geachte heer/mevrouw " . $name . ",<br>
        <br>
        Bedankt voor uw aanvraag bij ".$naambedrijf.".<br>
        Wij nemen binnen zo spoedig mogelijk contact met u op.

        <br><br>
        Met vriendelijke groet, <br>
        <br>
        ".$naambedrijf."<br>
        <br>
        <br>
    </div>
    <table height='120' border='0' width='100%' cellspacing='0' cellpadding='0' style='border-top: 1px #000000 dotted; border-bottom: 1px #000000 dotted; color: #5C5C5C; font-size:10pt;line-height:22px;'>
    <tr>
        <td width='140' valign='top' style='padding-left:10px;padding-top:20px;'>
            ".$adres."
        </td>
        <td width='180' valign='top' style='padding-left:10px;padding-top:20px;'>
            ".$gegevenscontact."
        </td>
        <td align='right' style='padding-right:10px;padding-top:5px;'>
            <a href='#' title='Ga naar ".$sitenaam."'><img  src='".$logo."' alt='Ga naar ".$sitenaam."' style='text-align: right; margin:0px; padding: 0px;max-height:65px;' border='0'></a>
        </td>
    </tr>
    </table>
    <div style='color:#a3a3a3; font-size:11px;margin-top:6px;line-height:14px;'>
        Dit e-mailbericht is uitsluitend bestemd voor de geadresseerde. Als dit bericht niet voor u bestemd is, wordt u vriendelijk verzocht dit aan de afzender te melden. ".$naambedrijf." staat door de elektronische verzending van dit bericht niet in voor de juiste en volledige overbrenging van de inhoud, noch voor tijdige ontvangst daarvan. Voor informatie over ".$naambedrijf." raadpleegt u <a href='hhtp://".$sitenaam."' style='color: #5C5C5C; text-decoration: none; border-bottom: 1px #5C5C5C dotted;' target='_BLANK'>".$sitenaam."</a>.
    </div>
</div>
</div>";

$body = preg_replace("[\]",'',$body);
// $mail->AddReplyTo("info@".$sitenaam."","".$naambedrijf."");
$mail->SetFrom('info@'.$sitenaam.'', ''.$naambedrijf.'');
$address = $email;
$mail->AddAddress($address, $voornaam);
$mail->Subject = "Bedankt voor uw offerteaanvraag bij ".$naambedrijf.".";
$mail->AltBody = "Om dit bericht te bekijken, heeft u een email programma nodig dat HTML-mail kan bekijken!"; // optional, comment out and test
$mail->MsgHTML($body);

Что я могу сделать, чтобы это исправить?

1 Ответ

0 голосов
/ 11 января 2019

Вам нужно сбежать "\".

попробуй

$body =preg_replace("/[\\\\]/i",'',$body);

Почему мы используем четыре обратных слеша вместо одного? Посмотрите на https://ubuntuforums.org/archive/index.php/t-1245302.html

Параметр i предназначен для нечувствительного к регистру соответствия, например eregi_replace, и может быть здесь избыточен.

...