PHP, LAMPP 및 PostFix를 사용하여 메일 보내기


9

나는 지금 하루 종일 노력했지만 가장 간단한 일을 할 수는 없습니다.

문제 : PHP에서 내 이메일 주소로 이메일을 보낼 수 없습니다

WindowsSendmail (Sendmail은 XAMPP 패키지에 포함 되어 있음)을 사용하여 작업 해 왔으며 모든 것이 정상입니다. Linux 용 XAMPP 패키지 (1.7.7)에는 Sendmail이 통합되어 있지 않습니다. 약간의 인터넷 검색 후 Postfix 가 LAMPP 환경에 더 잘 맞는다는 것을 알았습니다.


내가 지금까지 시도한 것 :

Postfix를 설치 했으며 Windows에서와 같이 개인 전자 메일 공급자의 smtp 서버를 사용 하도록 구성하려고했습니다 . 내 confogured 한 그래서 php.ini 파일을 다음과 같이 :

[mail function]
; For Win32 only.
;SMTP = localhost
;smtp_port = 25

; For Win32 only.
;sendmail_from = me@example.com

sendmail_path = /etc/postfix
mail.add_x_header = On

"Win32 전용"항목을 주석 처리했습니다. /etc/postfix/main.cf은 다음과 같습니다 :

smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_password
myhostname = ubuntu
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
sender_canonical_maps = hash:/etc/postfix/sender_canonical
mydestination = ubuntu, localhost.localdomain, localhost
relayhost = mail.gmx.net
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only

/ etc / aliases 는 변경되지 않았습니다.

# Required aliases
postmaster: root
MAILER-DAEMON:  postmaster

# Common aliases
abuse:      postmaster
spam:       postmaster

/ etc / postfix / sasl_password :

my.providers.smtp my_login:my_password

/ etc / postfic / sender_canonical :

postmaster my.email@ddress.com

무슨 일이야:

그래서 내가 할 때

> sudo /etc/init.d/postfix start

모든 것이 잘 작동 보인다과 /var/log/mail.log는 말한다 : "우분투 후위 / 마스터 [9720] : 데몬이 시작 - 버전 2.8.5, 구성은 / etc / 후위"

그러나 PHP 및 스크립트 (Windows 및 Sendmail에서 잘 작동 함)를 실행하면 오류가 발생하지 않고 그냥 실행되고 아무 일도 일어나지 않습니다.


내가 실제로 달성하고 싶은 것 :

저는 전자 상거래 웹 사이트에서 현지에서 일하고 있습니다. 전용 웹 서버에서 정상적으로 실행되지만 명확한 이유로 로컬에서 실행하고 싶습니다. 어떤 경우에는 이메일을 보내고 Thunderbird 또는 다른 방식으로 이메일을 받고 싶습니다. 여기서 Postfix overkill을 사용하고 있습니까? 이메일을받을 필요가 없습니다. 보낸 메일을 어떻게 든 보이게하고 싶습니다. Senmail이나 Postfix와 관련 하여이 문제에 대한 유용한 단계별 자습서를 찾을 수 없었지만 솔직히 말하면 Linux를 처음 접했습니다.

답변:


13

php.ini에서 이것은 :

sendmail_path = /etc/postfix

sendmail (또는 호환 가능) 바이너리의 경로 여야합니다.
postfix의 구성 디렉토리로 설정하지 않았습니다.

역사적 이유로 일반적으로 /usr/bin/sendmail호환성 링크로 유지됩니다.
sendmail처음에 있었고 (나는 추측한다) 거의 모든 것이 설치된 MTA에 있다고 가정합니다. 그렇지 않은 경우 교체시 심볼릭 링크가 만들어 지므로 아무런 문제가 없습니다.


정말 감사합니다! Sendmail과 Postfix가 왜 그리고 어떤 방식으로 함께 작동하는지 잘 모르겠지만 지금 작동합니다! postfix로 설정하는 것에 관해 읽은 위치를 기억할 수 없지만, 이것은 내 경우의 올바른 설정입니다.sendmail_path = "/usr/sbin/sendmail -t -i"
Quasdunk

약간 더 많은 정보가 추가되었습니다-기본적으로 그들은 함께 작동하지 않습니다. sendmail이 없지만 postfix는 그럴 것으로 예상되기 때문에 postfix가있는 것처럼 보입니다 :) 접미사 바이너리.
세슘

1
기억해! sendmail은 몇 년 동안 버그 후 버그 후 버그가 발생했습니다. 어느 시점에서 ~ / .forward에 루트 전용 명령을 포함시키고 메일을 보내며 Unix / Linux 시스템에서 무엇이든 할 수 있습니다. 대량의 출애굽기가 있었고 새 메일 서버에는 sendmail과 같이 동작하도록 설계된 sendmail과 같은 프로그램이 포함되어 있으므로 sendmail을 중심으로 구축 된 다른 모든 프로그램은 추가 노력 없이도 계속 작동합니다.

추가 정보를 주셔서 감사합니다! 모든 것이 지금 더 의미가 있습니다.) 가능하다면 다른 +1을 줄 것이지만, 도움이 될만한 다른 사람이 저에게 도움이되기를 바랍니다. :-D
Quasdunk

1

로컬 호스트 (WAMP, XAMP 또는 LAMP)에서 메일을 보내려면 PHPMailer 패키지를 사용할 수 있습니다

이것은 readme 파일에 제공된 명령과 동일합니다.

WAMP (창) :

먼저 "php.ini"를 편집해야합니다.이 파일을 찾으려면 WAMP 서버에서 다음 코드를 사용하여 phpinfo를 표시하십시오. C : / wamp / www / 안에 하나의 PHP 파일 [setting.php]을 만들고 그 파일에 다음 내용을 추가하십시오.

<?php
     echo phpinfo();
?>

브라우저에서 localhost / setting.php 를 입력하십시오 . "Loaded Configuration File"을 검색하십시오 . php.ini 경로 입니다.

에서는 php.ini의 연장 = php_openssl.dll`부여 (세미콜론) 파일을 제거한다. 이제 서버 설정이 끝났습니다 ...

  • github에서 PHPMailer 폴더를 다운로드 한 후
  • 추출-> 전체 폴더를 프로젝트 폴더에 복사하십시오 (예 : C : / wamp / www /
  • index.php 파일을 찾으십시오.
  • 필요에 따라 매개 변수를 변경하십시오.
  • 그런 다음 브라우저에서 localhost / PHPMailer / index.php를 입력하십시오 .
  • 그런 다음 전자 메일을 보내면 성공적인 메시지가 표시되고 그렇지 않으면 오류 메시지가 표시됩니다.

램프 (Linux) :

  • 리눅스의 경우 WAMP에서 첫 번째 포인트를 설명했듯이 php.ini 파일을 편집 할 필요가 없습니다.

  • 하나 더 변경하면 프로젝트 또는 문서 루트 폴더가 다릅니다.

  • Linux에서 기본 문서 루트 폴더는 / var / www입니다.
  • 문서 루트 폴더를 쉽게 변경할 수 있습니다. 해당 방문 https://stackoverflow.com/a/17612396/1925943
  • PhpMailer를이 문서 루트 폴더에 복사하고 필요에 따라 index.php를 편집하십시오.
  • 그런 다음 브라우저에 localhost / PhpMailer / index.php 를 입력하십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.