파일 첨부하여 메일 보내기
<?php
/*
** 함수 : makeAttachment
** 입력 : ARRAY attachment
** 출력 : STRING
** 설명 : 하나의 첨부에 대한 헤더들과 데이터를 돌려준다.
** 입력 배열에는 name, type, content 원소들이
** 있어야 한다. 첨부파일은 무조건 base64로 인코딩한다.
*/
function makeAttachment($attachment)
{
$headers = "Content-Type: " . $attachment["type"];
if($attachment["name"] != "")
{
$headers .= "; name=\"{$attachment["name"]}\"";
}
$headers .= "\r\n";
$headers .= "Content-Transfer-Encoding : base64\r\n";
$headers .= "\r\n";
$headers .= chunk_split(base64_encode($attachment["content"]));
$headers .= "\r\n";
return($headers);
}
/*
** 함수 : mailAttachment
** 입력 : STRING to, STRING from, STRING subject, ARRAY attachment
** 출력 : 없음
** 설명 : 파일이 첨부된 메세지를 전송, attachment 는 2차원 배열이다
** 각 원소는 type, name, content 를 원소로 하는 연관 배열이다.
*/
function mailAttachment($to, $from, $subject, $attachment)
{
// From : 헤더를 추가
$headers = "FROM : $from\r\n";
// MIME 버전 1.0을 지정
$headers .= "MIME-Version: 1.0\r\n";
// 첨부파일이 여러 개인 경우 특별한 처리가 필요하다.
if(count($attachment) > 1)
{
//첨부파일이 여러 개인 경우 특별한 처리가 필요하다.
$boundary .= uniqid("COREPHP");
$headers .= "Content-Type: multipart/mixed";
$headers .= "; boundary = $boundary\r\n\r\n";
$headers .= "This is a MIME encoded message. \r\n\r\n";
$headers .= "--$boundary";
foreach($attachment as $a)
{
$headers .= "\r\n";
$headers .= makeAttachment($a);
$headers .= "--$boundary";
}
$headers .= "--\r\n";
}
else
{
$headers .= makeAttachment($attachment[0]);
}
// 메시지를 보낸다.
mail($to, $subject, "", $headers);
}
// 메시지 본문과 형식을 지정
$bodyText = "한글 is best text.";
$bodyText = iconv('utf-8', 'euc-kr', $bodyText); // 문자셋 설정하여 보내면 한글이 본문 내용이 안깨집니다.
$attach[] = array("content"=>"$bodyText","type"=>"text/plain"); // 마지막을 text/html 로 바꾸면 본문에 html 적용 가능
// 첨부목록에 스크립트를 추가
//******************************************
// mail 인자값 *************
//*****************************************
$fileName = "/tmp/sales.xls";
$mailTo = "받을놈 메일주소";
$mailFrom = "보낸놈 메일주소";
$mailTitle = "메일제목 ";
$mailTitle = "=?UTF-8?B?".base64_encode($mailTitle)."?="; // 문자셋 설정하여 보내면 한글이 안깨집니다. (깨진 코드 아님)
$fp = fopen($fileName, "r");
$attach[] = array("name"=>basename($fileName),
"content"=>fread($fp, filesize($fileName)),
"type"=>"application/octet-stream");
fclose($fp);
// send message maru
mailAttachment($mailTo,$mailFrom,$mailTitle,$attach)
?>
[출처] http://blog.naver.com/marufloor/33446917
'프로그래밍 > PHP' 카테고리의 다른 글
php 로 소켓 프로그램 만들기 (다중 처리 불가, queue 진행 방식) (0) | 2016.10.14 |
---|---|
한글 및 공백이 포함된 URL 주소를 UTF-8 로 변환 (urlencode) (0) | 2015.12.10 |
특정 날짜로 요일 알아내기 (0) | 2015.06.11 |
php 에서 mysql 접근시 캐릭터셋 지정하기 (0) | 2015.05.14 |
세션 생성 및 종료 (0) | 2015.05.12 |