③ 첨부파일 처리를 위한 MIME
파일을 다루는 작업까지 마쳤으니 마지막으로 알아야 할 것은 추가적인 MIME에 대한 내용이다.
Content-Type: multipart/mixed; boundary
• 이전에 배웠던 Content-Type은 text/plain과 text/html이었는데, 이 외에도 사용할 수 있는 값은 매우 많다. 그 중에서 multipart/mixed는 보내는 메일 내용 중에 본문 메시지뿐만 아니라 첨부파일도 포함되어 있는, 즉 여러 종류의 Content-Type이 섞여 있을 때 사용된다. 또한 첨부파일을 메일 본문에 넣을 때도 파일에 대한 Content-Type을 별도로 지정해줘야 하는데, 디폴트 값은 ‘application/octet’ 이다.
• boundary: 여러 타입이 섞여 있으면 boundary 값을 통해 타입을 분리해야 한다. boundary의 값으로는 메일 본문의 내용과 겹치지 않는 유일한 문자를 사용해야 하는데, 보통 무작위로 충분히 긴 문자(예를 들어, IDEOWKJ989LWFEW 같은)를 만들어 사용한다. 또한 메일 본문에 boundary를 추가할 때 boundary 값 앞에 ‘–’를 붙여야 하며, 가장 마지막에 붙이는 boundary의 맨 끝에 ‘–’를 반드시 붙여야 한다.
Content-Transfer-Encoding: base64
• 파일은 이진 데이터로 구성한다. SMTP에 따르면 메일은 ASCII 문자로 전송되어야 하는데, Content-Transfer-Encoding은 이진 데이터 파일을 ASCII로 변환하는 방법을 정의하는 내용이다. BASE64는 이진 데이터를 알파벳과 숫자, 특수문자로 변환하는 인코딩 방법 중 하나다. 즉 이메일을 보낼 때 첨부파일은 BASE64 방식으로 인코딩되어 전송된다.
Content-Disposition: attachment; filename="파일명"
• 첨부파일 전송 시 해당 파일명을 명시하는 부분이다.
이상이 첨부파일 전송 시 알아야 할 내용이다. 메일을 보내고 파일을 첨부하는데 있어 이 정도 내용만 알고 있으면 사전 준비는 모두 끝난 셈이다.