을, 당신은 실제로 당신이 건설하는지 나타내는 바탕으로 메일 텍스트 패킷을 알게 필요 mail()
인수 이과 을 이해하지 못하면 여기에 무슨 일이 일어나고 있는지, 첨부 파일을 보내 이메일을 보내려는 투쟁을 할 것입니다. 너무 날카로운 가장자리가 있습니다.
Gmail에는 원본 메시지 패킷을 일반 텍스트로 볼 수있는 멋진 기능이 있습니다. 원본 표시입니다. 전자 메일 스크립트를 테스트 할 때 가능한 경우 Gmail 계정을 사용하여 실제 전자 메일 일반 텍스트 패킷을 검사 할 수 있습니다. 원본을 표시하려면 이메일의 답장 화살표 옆에있는 아래쪽 화살표로 시작되는 왼쪽 상단 드롭 다운으로 이동하십시오.
첨부 된 이미지가 첨부 된 테스트 이메일을 나에게 보내면 아래에 있습니다. 메일 호출은 본질적으로이 예제와 다소 다른 것으로 변환되어야합니다.
헤더가 처음부터 어떻게 시작되는지 알아 두십시오 (아래의 상위 5 개 헤더는 처리하지 않습니다. MIME-Version
제외). 그 블록의 끝에서, 당신은 :
Content-Type: multipart/mixed; boundary=089e0118416874703004d86a5106
=
당신이 인코딩 된 첨부 파일의 내용을 포함하여 다중 메시지 블록을 추가 할 수있는 메시지 부분의 경계이며, 다음과 같은 부분 적절한 하위 부품 헤더가 주어진다.
그래서 거기에 다음 text/plain
및 text/html
이중 메시지 형식을 포함
Content-Type: multipart/alternative; boundary=089e0118416874702b04d86a5104
:
는
--089e0118416874703004d86a5106
... message block(s) ...
--089e0118416874703004d86a5106--
으로, 실제로 다른 경계 선언이있다. 이것은 필수 사항은 아니지만 많은 메일 클라이언트가 본질적으로 그렇게합니다. text/plain
또는 text/html
중 하나를 선택할 수 있습니다. 귀하의 의견과 귀하의 의견이 어떻게 구성되어 있습니까?
다음으로 우리는 다음을 참조하십시오 경계의가 a를 끝에 자신의 블록 (안 각 블록)에서 --
후행 한
--089e0118416874703004d86a5106
Content-Type: image/jpeg; name="opinion (2).jpg"
Content-Disposition: attachment; filename="opinion (2).jpg"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_hejlmnuz0
/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAIEBAYIBggICAgICAgICAgKCgoKCgoKCgoKCgoKCgoK
... lots of lines for the encoded file block ...
W5R3W8ajLwrgUJEDGKWN2kWvO5iB7qdKwB6MwwfqVrQKcObveZxZBtQNCp0vc//Z
--089e0118416874703004d86a5106--
하는 것으로.
아래를보고 luk3thomas의 답변과 비교하십시오. 자신에게 매우 간단한 이메일 메시지를 전송하는 시도하고 첨부 파일 형식의 이메일에 그 비교 :
mail('[email protected]', 'Simple mail test', 'Test message body content.');`
당신은 첨부 파일을 포함하여 이메일을 보낼 필요가 무슨 생각을하기 시작한다. 문제는 전송 용 이메일 패킷을 형식화하는 것이 매우 특수하며 거의 실패하지 않을 수 있다는 것입니다. 그래서주의를 기울여야합니다.
MIME-Version: 1.0
Received: by 10.50.40.164 with HTTP; Thu, 21 Mar 2013 00:30:51 -0700 (PDT)
Date: Thu, 21 Mar 2013 02:30:51 -0500
Delivered-To: [redacted]@gmail.com
Message-ID: <[email protected]om>
Subject: Test of email with attachment for plaintext
From: Jared Farrish <[redacted]@gmail.com>
To: Jared Farrish <[redacted]@gmail.com>
Content-Type: multipart/mixed; boundary=089e0118416874703004d86a5106
--089e0118416874703004d86a5106
Content-Type: multipart/alternative; boundary=089e0118416874702b04d86a5104
--089e0118416874702b04d86a5104
Content-Type: text/plain; charset=UTF-8
This is the body of the email message.
--089e0118416874702b04d86a5104
Content-Type: text/html; charset=UTF-8
<div dir="ltr">This is the body of the email message.<br></div>
--089e0118416874702b04d86a5104--
--089e0118416874703004d86a5106
Content-Type: image/jpeg; name="opinion (2).jpg"
Content-Disposition: attachment; filename="opinion (2).jpg"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_hejlmnuz0
/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAIEBAYIBggICAgICAgICAgKCgoKCgoKCgoKCgoKCgoK
CgoKCgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/2wBDAQIICBAQEBAQEBAgICAgIEBAQEBA
QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQED/wgARCAEsASwDASIA
AhEBAxEB/8QAHQAAAgIDAQEBAAAAAAAAAAAABgcFCAIDBAkAAf/EABsBAAMBAQEBAQAAAAAAAAAA
[-- snip many lines of base64 file contents --]
yGrjmAV5jlw7j5RFebDQu8RG2rLa/up9x/xHOU5eppGo7lm3uDTz6w5XxBYgB7ruYJFwW/2PiD9q
XjDEturp55IeLGM36+Tlz8JY6v8AXGhta9/4Ih62UvuWHuP3DfOg/wAGFg/g0mNKnahdifSKKua+
h0likOlp+yFa2FgP0rtOReVitRTIiUuJSjw6JpN4thVyhRdZ8EE/aYzn523NZeJYu7judhllHo0g
W5R3W8ajLwrgUJEDGKWN2kWvO5iB7qdKwB6MwwfqVrQKcObveZxZBtQNCp0vc//Z
--089e0118416874703004d86a5106--
PHPMailer 또는 SwiftMailer와 같은 클래스 또는 라이브러리를 사용하십시오. –
@ luk3thomas - 메시지 블록의 경계입니다. 내가 볼 수없는 것은 전자 메일 본문과 전자 메일 본문과 인코딩 된 첨부 파일 콘텐츠의 각 블록을 경계 짓는 전자 메일 본문입니다. '$ message'는 어디에 정의되어 있습니까? –
선생님, 제 코드가 바뀌 었습니다. 제 코드를 제게 알려주십시오. –