2fdd8de5c181e7c61733574b5274329571fc29e2.svn-base
4.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
<?php
if(! class_exists("Email") ) {
class Email {
protected $MailHeaderArray = array(); // 메일헤더를 담을 배열
protected $MailFrom; // 보내는 사람
protected $MailTo; // 회신받을 주소 (기본적으로 보내는 메일주소가 된다)
protected $ArrMailTo = array(); // 받는 사람을 담을 배열
protected $Subject; // 메일제목
protected $MailBody; // 메일본문
protected $Charset = 'UTF-8'; // 메일기본 캐릭터셋
protected $no ; // 데이터베이스 메일폼 no
protected $strArray = array() ; // replace할 배열
protected $ori_subject; // 컨버팅전 제목
function __construct() //보내는 사람
{
}
public function setFrom($email, $name = null)
{
// 보내는 메일
$this->setReplyTo($email);
return $this->MailFrom = ($name) ? $name . ' <' . $email . '>' : $email;
}
public function makeMailBody()
{
$mailbody = $this->MailBody ;
foreach($this->strArray as $key => $val)
$mailbody = str_replace($key, $val, $mailbody) ;
return $mailbody ;
}
public function setReplyTo($email)
{
// 회신주소 - 기본적으로 보내는 메일을 회신주소로 셋한다
return $this->MailTo = $email;
}
public function addTo($email, $name = null)
{
// 받는 메일을 추가한다
return $this->ArrMailTo[$email] = $name;
}
private function AddBasicHeader()
{
// 메일의 기본 헤더를 작성한다
$this->addHeader('From', $this->MailFrom);
$this->addHeader('User-Agent', 'Dabuilder Mail System');
$this->addHeader('X-Accept-Language', 'ko, en');
$this->addHeader('X-Sender', $this->MailTo);
$this->addHeader('X-Mailer', 'PHP');
$this->addHeader('X-Priority', 1);
$this->addHeader('Reply-to', $this->MailTo);
$this->addHeader('Return-Path', $this->MailTo);
$this->addHeader('Content-Type', 'text/html; charset=' . $this->Charset);
$this->addHeader('Content-Transfer-Encoding', 'base64');
}
private function addHeader($Content, $Value)
{
// 메일헤더의 내용을 추가한다
$this->MailHeaderArray[$Content] = $Value;
}
private function makeMailHeader()
{
// 보낼 메일의 헤더를 작성한다
$header = "";
foreach($this->MailHeaderArray as $Key => $Val)
$header .= $Key . ": " . $Val . "\r\n";
return $header . "\r\n";
}
public function setMailBody($Body, $useHtml = true)
{
if(!$useHtml) { // 메일본문이 HTML 형식이 아니면 HTML 형식으로 바꾸어준다
$Body = '
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=' . $this->Charset . '">
</head>
<body>
' . nl2br($Body) . '
</body>
</html>
';
}
$this->MailBody = $Body ; // 메일본문을 셋한다
}
public function setSubject($subject)
{
$this->Subject="=?UTF-8?B?".base64_encode($subject)."?=\n";
$this->ori_subject = $subject ;
}
public function sendMail($fromMail, $fromName, $toMail, $toName, $strArr)
{
$fromName = iconv("UTF-8","EUC-KR",$fromName) ;
$toName = iconv("UTF-8","EUC-KR",$toName) ;
$this->strArray = $strArr ;
// 보내는 메일
$this->setReplyTo($fromMail);
$this->MailFrom = ($fromName) ? $fromName . ' <' . $fromMail . '>' : $fromMail;
// 받는 메일
$this->addTo($toMail, $toName) ;
$Contents = $this->makeMailBody() ;
$Contents = chunk_split(base64_encode($Contents));
// 메일을 전송한다
$this->AddBasicHeader(); // 메일의 기본헤더를 생성한다
$Succ = 0;
foreach($this->ArrMailTo as $Email => $Name) {
$toEMail = ($Name) ? $Name . ' <' . $Email . '>' : $Email; // 받는메일
$this->addHeader('To', $toEMail); // 메일헤더에 받는메일을 추가한다
$header = $this->makeMailHeader(); // 헤더를 작성한다
//echo "subject: " .$this->Subject ."Email". $Email ."header: ". $header ;
if(mail($Email, $this->Subject, $Contents, $header)) $Succ++; // 성공여부 판단
}
return $Succ;
}
}//클래스 종료
}
?>