>  기사  >  백엔드 개발  >  [PHP] 이메일을 보낼 때 mail() 함수가 실패합니다(sendmail 명령 및 postfix).

[PHP] 이메일을 보낼 때 mail() 함수가 실패합니다(sendmail 명령 및 postfix).

little bottle
little bottle앞으로
2019-04-17 14:29:382640검색

1. PHP의 메일() 기능은 이메일을 보낼 수 있지만 성공적으로 테스트된 적이 없습니다. 이제 이유를 요약해 보겠습니다.

php의 메일 기능은 sendmail 명령을 기반으로 합니다. postfix 소프트웨어

2를 설치해야 합니다. 메일 기능인 php -i|grep sendmail

#🎜에 의해 호출되는 기본 명령인 PHP 구성 항목 sendmail_path를 확인하세요. 🎜## 🎜🎜#3 postfix 소프트웨어를 설치한 후에만 sendmail 명령을 사용할 수 있습니다. apt-get install postfix

소프트웨어 설치가 완료된 후 전송이 가능한지 테스트합니다. 명령줄 성공

eml 텍스트 파일 만들기, 콘텐츠는 가장 중요한 이메일 프로토콜 헤더입니다

Subject: title-testing
From: shihan2@sopans.com
To: 630892807@qq.com
Sorry, I'm testing. ~_~

# 🎜🎜#

 /usr/sbin/sendmail -t -i -f shihan2@sopans.com < 2.eml

-f 매개변수 뒤에 오는 내용은 from 값에 해당합니다. 일치하지 않으면 오류가 보고됩니다. /var/log/mail.log 로그 파일을 확인할 수 있습니다. 오류의 원인과 성공 여부를 확인하려면
#🎜 🎜#

from 값이 일치하지 않으면 로그에 표시된 정보

은 성공적인 정보 후 전송됩니다. 250ok

4. 파일을 만들고 php 함수를 사용하여 메시지를 보냅니다

이를 수정했습니다. /etc/php/7.0/cli/php.ini 구성 파일에서 from 매개변수는 테스트 중에 하드 코딩됩니다. 보낸 사람 사서함이 기록되지 않으면 전송이 항상 실패하고 501 구문: MAIL FROM: 208700f394e4cf40a7aa505373e0130b (MAIL FROM 명령에 대한 응답)) , 보낸 사람이 보낸 편지와 일치하지 않습니다. #

구성 확인

# 🎜🎜#

php 파일 만들기#🎜 🎜#

<?php
$to=&#39;630892807@qq.com&#39;;
$subject = &#39;测试一下&#39;;
$message = &#39;我来测试&#39;;
$headers[] = &#39;From: shihan2@sopans.com&#39;;
mail($to, $subject, $message, implode("\r\n", $headers));

테스트 성공

관련 튜토리얼:
php 프로그래밍 입문부터 마스터까지 전체 비디오 튜토리얼 세트

위 내용은 [PHP] 이메일을 보낼 때 mail() 함수가 실패합니다(sendmail 명령 및 postfix).의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제