Rumah  >  Soal Jawab  >  teks badan

Mel PHP menghantar pengepala rosak

Saya sedang berusaha untuk menghantar e-mel daripada skrip PHP. Apabila fungsi mail() dicetuskan, peti mel penerima dihoskan oleh perkhidmatan tertentu (seznam.cz) dan mesej dimuat turun ke klien mel (Mozilla Thunderbird) dan disemak oleh ESET Antivirus, mesej itu nampaknya rosak.

Saya percaya bahawa isu ini disebabkan oleh perisian antivirus yang memasukkan pengepala khas dalam mesej mel dan meninggalkan baris kosong selepasnya:

...
Subject: =?UTF-8?B?Tm92w70gxI1sZW4gd2VidSBBU1AgxIxSIQ==?=
X-EsetId: 37303A298C7FEE69657363

X-PHP-Originating-Script: 80:script.php
MIME-Version: 1.0
Content-type:text/html;charset=UTF-8
...

Pelanggan e-mel saya menganggap mesej itu adalah teks biasa dan bermula dengan baris X-PHP-Originating-Script. Baki mesej termasuk semua penanda HTML.

Ini adalah skrip yang saya gunakan untuk menghantar e-mel:

$subject = mb_encode_mimeheader('Subject text');
$emailBody = '<!DOCTYPE html>
<html lang="cs">
    ...
</html>';
$emailAltBody = "...";

$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
$headers .= 'From: <email.address@example.com>' . "\r\n";

$result = mail("email.address@example.com", $subject, $emailBody, $headers);

Namun, apabila menggunakan rangka kerja Laravel, e-mel dihantar dan dipaparkan dengan betul. Saya membandingkan perbezaan dan menyedari bahawa pengepala X-PHP-Originating-Script tidak dihantar oleh Laravel.

Bolehkah ini sebabnya? Bagaimana saya boleh menyelesaikannya?

P粉979586159P粉979586159431 hari yang lalu619

membalas semua(1)saya akan balas

  • P粉573943755

    P粉5739437552023-09-08 00:38:50

    Ia mungkin hanya masalah pemisah talian yang berbeza.

    Sehingga PHP 7.4 pembatas selepas X-PHP-Originating-Script hanyalah n (ini telah berubah Menggunakan n (这已更改 在 PHP 8 中使用 rn dalam PHP 8 dan lebih baru lagi dalam master

    membuat keputusan berdasarkan faktor lain).

    rnMemandangkan semua pengepala lain disambungkan menggunakan

    , perisian antivirus mungkin menyebabkan kekeliruan semasa menambah pengepala. Ini menghasilkan baris baharu berganda, yang ditafsirkan oleh pelanggan sebagai permulaan badan.

    nrLihat mesej asal dengan editor yang memaparkan semua aksara (termasuk

    ) dan anda mungkin memahaminya dengan lebih baik.

    mail.add_x_header = OffX-PHP-Originating-ScriptPenyelesaian adalah untuk memadankan penghujung baris versi PHP, atau tetapkan semua

    ​​pengepala > dalam php.ini. 🎜

    balas
    0
  • Batalbalas