PHP는 기본 일반 문자 메시지, HTML 메시지 및 첨부 파일을 포함한 우편물을 포함하여 이메일을 쉽고 효율적인 방법을 제공합니다.
PHP의Phpmailer 라이브러리를 사용하면 SMTP 서버에 연결, 첨부 파일 추가, 오류 처리, 여러 메일 전송, 사용자 정의 헤더 추가 등을 허용하는 PHP에서 메일을 보내는 기능을 향상시킬 수 있습니다.
mail()
전체 HTML 메일 예
이제, HTML 본체와 일반 텍스트 대안과 파일 첨부 파일이 포함 된 완전한 멀티 파트 예를 보자.<?php mail($address, $subject, $message); ?>
배열에는 이메일을 공유하려는 일부 이메일 주소로 채워져 있습니다. 배열은 스크립트 끝에 반복되며 각 주소는 내 이메일 사본을받습니다. 다음으로, $emailList
문자열은 다양한 이메일 헤더로 구축됩니다. 문자열의 각 헤더는 CRLF ()로 분리되며 이메일 메시지의 형식을 정의하는 RFC 2822 표준을 준수합니다. "From :"Header의 "Fluffy Mumsy"$headers 다목적 인터넷 메일 확장 rn
를 기대하므로 일반 텍스트보다 고급 이메일을 가질 수 있습니다. "내용 유형 : multipart/mixed; boundary ="YagottakeEpemSeparated "RN" "Content-Type"헤더는 실제로 두 가지를 수행합니다. 본문에 여러 가지 다른 유형의 부품이 있으며 각 부품을 분리하는 데 사용되는 문자열을 지정합니다. 이 경계 문자열은 메시지의 다른 곳에서는 나타날 수 없습니다. 그렇지 않으면 메일 클라이언트가 메시지를 올바르게 구문 분석 할 수 없습니다. 예를 들어, "12"를 경계로 사용할 수 있지만 메일의 다른 곳에 나타날 수 있습니다. "YagottakeEpemSeparated"를 선택했습니다.대부분의 사람들은 충돌 가능성이 매우 낮기 때문에 무작위로 생성 된 해시를 경계로 할당합니다. $boundary = md5(time())
(여기서는 스크립트와 동일한 디렉토리에 위치)의 내용은 Base64에 의해 인코딩되고 "블록"으로 분류되어 메일 클라이언트가 더 쉽게 처리 할 수 있도록합니다. 결과는 에 저장되며 나중에 나타납니다. 마지막으로, 이메일 본문의 구성 ... "--yagottakeepemSeparatedrn"이것은 이전에 정의 된 경계를 사용하고 Mail 클라이언트에게 "이봐, 이것은 이메일 메시지의 첫 번째 부분의 시작 부분"이라고 말하는 첫 번째 인스턴스입니다. "Content-Type : multipart/antlanslity; boundary ="Every Amailalaltative "RN"은 전자 메일 헤더에 주어진 "Multipart/Mixed"외에도 본문에서 "multipart/anternative"를 사용하여 다른 경계 (이 분류와 관련하여)를 사용하여 메시지에 대한 대체 형식을 제공 할 수 있습니다. "-Eachemailalnativen"이것은 중첩 된 경계의 첫 번째 인스턴스이며 메시지의 첫 번째 대체 버전을 시작합니다. "Content-Type : Text/Plain; charset ="iso-8859-1 "rn"이 컨텐츠 유형 헤더는이 대안이 일반 텍스트임을 메일 클라이언트에 알려줍니다. 클라이언트가 더 복잡한 형식 (예 : HTML)을 표시 할 수없는 경우이 버전의 메시지를 사용합니다. "Content-Transfer-Encoding : 7bitrn"Content-Transfer-Encoding 헤더는 메시지에 사용 된 인코딩 체계를 지정합니다. 역사적 이유로 "7 비트"는 기본값이므로 생략 할 수 있습니다. 나는 당신에게 알려주기 위해 그것을 포함시켰다. "당신은 돈이없는 저렴한 텍스트 이메일이 있습니다. 무시하십시오. rn"이것은 비 HTML 기능 독자를 사용하는 사람들이 일반 텍스트 버전으로 볼 수 있다는 메시지입니다. "-Eachemailalnativen"첫 번째 대안이 완료되었으며 다음 대안을 시작할 수 있습니다. "Content-Type : Text/Html; charset ="ISO-8859-1 "RN"이 컨텐츠 유형 헤더는 클라이언트 에게이 버전이 HTML로 형식화되고 사용 된 문자 세트를 알립니다. "... RN"이 버전의 내용은 HTML 태그가 포함되어 있음을 제외하고는 일반 텍스트 버전과 매우 다릅니다. 일부 스팸 필터는 이것을 내 메일이받은 편지함에 도달하는 것을 방지하는 또 다른 이유로 볼 수 있습니다. "--yagottakeepemseparatedrn"이것은 멀티 파트/혼합 경계이며, 모든 대안이 포함 된 메시지 본문 섹션의 끝에 도달했음을 나타냅니다. "content-type : application/zip; name ="novyrus.zip "rn"콘텐츠 유형 헤더는 이메일의 다음 부분이 첨부 파일 ( 파일)임을 나타냅니다. "Content-Transfer-Encoding : Base64rn"7 비트 인코딩은 문자를 7 비트로 제한하며 ZIP 파일에 필요한 모든 이진 문자를 충실히 나타내지 않을 수 있으므로 파일이 Base64 인코딩 및 청크입니다. 여기에서 Content-Transfer-Encoding 헤더를 사용하면 클라이언트가 첨부 파일을 해독하는 방법을 알려줍니다. "Content-Disposition : AttachmentRn"컨텐츠 방지 헤더는 컨텐츠가 어떻게 렌더링되는지를 자세히 설명합니다.메시지에서 zip 파일을 인라인 요소로 표시하는 것은 의미가 없지만 이미지를 포함시키는 데 매우 유용합니다. $goodAttachment . "rn"
요약
그게 다야! 초음파 텍스트 이메일과 첨부 파일이 포함 된 전체 HTML 이메일을 보내는 방법을 배웠습니다. 간단한 이메일은 단순히 기능을 호출합니다. HTML 메시지의 경우 MIME 표준을 사용하여 이메일을 섹션으로 나누고 선택한 경계와 분리해야합니다. 그런 다음 내용의 내용, 인코딩 방법, 컨텐츠 처리 방법 및 컨텐츠 자체를 정의합니다. 이메일을 보내려고하는 사람에 따라, 정말로 진지한 것을 보내고 싶을 경우를 대비하여 이메일을 스팸으로 표시 할 가능성이 무엇인지 알고 있어야합니다. (FAQ 부품은 길이가 너무 길고 의사 원리 목표와 일치하지 않기 때문에 여기서 생략됩니다. FAQ 부분의 내용은 원본 텍스트와 일치합니다. 단순한 진술을 원본 텍스트로 조정하여 유사 원리를 완성합니다.) .
위 내용은 PHP와 이메일 보내기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!