2009-09-28 2 views
0

나는 인터넷 검색을 시도했지만 슬프게도 나는 단지 문서를 얻는다. (또는 나쁜 키워드를 사용하고있다.) 어쨌든
나는 프로그래머가 많이 있다는 것을 알 수있다. (심지어 현재 작업하고있는 사람들도) PHP 기본 메일을 사용하는 것을 승인하지 않는 것 같다. sendmail과 같은 다른 프레임 워크를 사용하는 방법을 제안합니까? 신속한 우편 발송자 등 ...

이유를 알고 싶습니다. 네이티브 메일 기능을 사용하는 데 실제로 단점이 있습니까? 그렇다면 메일 링 프레임 워크가 어떻게 해결할 수 있습니까?PHP의 기본 메일 기능을 사용할 때 문제가 있습니까?

답변

5

간단한 일반 텍스트 이메일을 보내는 데는 아무런 문제가 없습니다.

그러나 멀티 파트 MIME 전자 메일 (예 : HTML 버전을 원하거나 첨부 파일을 추가하려는 경우)을 작성한 후에는 전자 메일을 직접 작성해야하며 모든 헤더와 인코딩을 올바르게 작성하는 것은 매우 어려울 수 있습니다 . 이 경우 라이브러리를 사용하는 것이 좋습니다.

+0

mail()이 쉽게 만드는 이메일 헤더 삽입의 더 큰 문제와 비교할 때 복잡성은 중요하지 않다고 생각합니다. – Kzqai

2

function mail에 대한 PHP 매뉴얼에는 메일 기능에는 몇 가지 제한 사항이 있으며 그 중 하나는 각 이메일에 대해 SMTP 소켓을 열고 닫는 것입니다. 메일 기능은 메일 하나 또는 두 개를 보낼 때 유용합니다.

1

PHP의 mail() 함수를 사용하려면 프로그램이 실행중인 호스트에서 제대로 구성된 sendmail이나 이에 상응하는 호스트가 필요합니다. 그러나 Windows 구현은 약간 다릅니다. MTA를 올바르게 구성하지 않으면 PHP 스크립트에서 전자 메일을 보낼 수 없습니다. 다른 주석 기자가이 스레드에서 말했듯이, PHP 매뉴얼은 mail() 함수에 대한 각각의 호출이 소켓을 열고 닫음을 명시 적으로 기술하고있다. 이로 인해 스크립트 실행에 불필요한 지연이 발생할 수 있습니다.

또한 개발 및 테스트 환경에는 공용 정적 IP 주소가 없을 수 있습니다. 귀하의 IP 주소가 DNSBL, Gmail, Yahoo!에 의해 블랙리스트에 올 수도 있습니다. 및 기타 인기있는 이메일 서비스 제공 업체.

제대로 구성된 외부 SMTP 서버를 사용하는 것이 가장 좋습니다. 고용주가 이미 SMTP 액세스 권한이있는 이메일 계정을 제공 할 가능성이 있습니다. Gmail 계정이 없으면 Gmail 계정을 사용할 수 있습니다. Gmail은 모든 이메일 계정에 대한 SMTP 액세스를 제공합니다.

스크립트를 작성하여 외부 SMTP 서버에 대한 소켓 연결을 열 수 있습니다. 이 목적을 위해 시험되고 테스트 된 오픈 소스 라이브러리가있을 때 왜 직접 작성합니까?

그런데, 어제 바로 그 주제에 대한 블로그 포스트를 작성했습니다 : Using SMTP With Zend Framework - Solve Email Delivery Problem

감사합니다, 지금까지 내가 걱정으로

1

, 이러한 모든 문제는 주요 보안 문제에 비하면 : 메일 헤더 주입 : (http://en.wikipedia.org/wiki/E-mail_injection 및 PHP 특정 정보 : http://www.damonkohler.com/2008/12/email-injection.html)

이로써 스패머 봇은 여전히 ​​매우 안전하지 않은 메일을 사용하는 경우가 쉬운 스크립트의 취약점을 발견, 귀하의 사이트를 거미와() 함수 , 귀하의 서버로부터 귀하의 서버에있는 연락처 인의 중재자 명단에 이메일을 보내면됩니다. 스크립트 &을 스팸 메일 컴퓨터의 톱니 바퀴로 바꾸는 것이 중요합니다.

사용자 입력과 함께 mail()을 사용하지 말고, 일반적으로 PEAR :: mail을 대신 사용하는 것이 좋습니다.http://pear.php.net/package/Mail/

관련 문제