PHP 스크립트에서 이메일을 보내는 중입니다.mail()
기능이 트리거되면 수신자의 사서함이 특정 서비스(seznam.cz)에 의해 호스팅되고 메시지가 메일 클라이언트(Mozilla Thunderbird)에 다운로드되어 ESET Antivirus에서 확인되면 메시지가 손상된 것으로 나타납니다.
이 문제는 바이러스 백신 소프트웨어가 메일 메시지에 특수 헤더를 삽입하고 그 뒤에 빈 줄을 남겨두기 때문에 발생한다고 생각합니다.
으아악내 이메일 클라이언트는 메시지가 일반 텍스트라고 생각하고X-PHP-Originating-Script
라는 줄로 시작합니다. 메시지의 나머지 부분에는 모든 HTML 마크업이 포함됩니다.
이메일을 보내는 데 사용하는 스크립트는 다음과 같습니다.
으아악그러나 Laravel 프레임워크를 사용하면 이메일이 올바르게 전송되고 표시됩니다. 차이점을 비교한 결과X-PHP-Originating-Script
헤더가 Laravel에서 전송되지 않는다는 것을 깨달았습니다.
이것이 이유일까요? 어떻게 해결할 수 있나요?
단순히 다른 줄 구분 기호의 문제일 수도 있습니다.
PHP 7.4까지 X-PHP-Originating-Script 뒤의 구분 기호는 단지
에서 다른 요소를 기반으로 결정을 내립니다.n
이었습니다(이것은PHP 8n
(这已更改在 PHP 8中使用rn
에서를 사용하고 더욱 최근에는master
을 사용하여 연결되므로 바이러스 백신 소프트웨어로 인해 헤더를 추가할 때 약간의 혼란이 발생할 수 있습니다. 이로 인해 클라이언트가 본문의 시작으로 해석하는 이중 줄 바꿈이 발생합니다.rn
다른 모든 헤더는
포함)를 표시하는 편집기로 원본 메시지를 보면 더 잘 이해할 수 있습니다.n
和r
모든 문자(
헤더를 설정하는 것입니다.mail.add_x_header = Off
时删除X-PHP-Originating-Script
해결책은 PHP 버전의 줄 끝을 일치시키거나 php.ini에서 모든