아주 간단하게 메일을 보낼 수 있지만

예쁘게 꾸민 html 코드로 메일을 보낼 수도 있다.

 

1. mailtest.php

$to      = '받는사람@gmail.com';
$subject = 'html을 보냈습니다.';
$fp = fopen('mailtest.html',"r");
$message = fread($fp,filesize('mailtest.html'));

$name = '김광인';
$age = '21';
$gender = '남자';
$message = str_replace('{name}', $name, $message);
$message = str_replace('{age}', $age, $message);
$message = str_replace('{gender}', $gender, $message);
echo $message;


// html 메일을 보낼 때 꼭 이헤더가 붙어야한다.
$headers[] = 'MIME-Version: 1.0';
$headers[] = 'Content-type: text/html; charset=utf-8';

// Additional headers
$headers[] = 'To: Kim<받는사람@gmail.com>';
$headers[] = 'From: Admin<test@naver.com>';
$headers[] = 'Cc: Kim1<참조인1@naver.com>,Kim2<참조인2@gmail.com>';
$headers[] = 'Bcc: 숨은참조인3@gmail.com';


$result =mail($to, $subject, $message, implode("\r\n", $headers));
echo "메일 성공여부 : ";
if($result){echo "성공";}else{echo "실패";}

2_1. mailtest.html

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<style type="text/css">
table tr td{
border: 1px solid #5da399;
text-align: center;
padding: 10px;
}
</style>
</head>

<body>
	<table>
		<tr>
			<td>이름</td>
			<td>{name}</td>
		</tr>		
		<tr>
			<td>나이</td>
			<td>{age}</td>
		</tr>		
		<tr>
			<td>성별</td>
			<td>{gender}</td>
		</tr>
	</table>
</body>
</html>

 

 

이렇게 하면, mailtest.html은

 

다음과 같이 출력된다.

 

메일을 보낸 후

메일함을 확인해보면

 

다음과 같이 스타일이 적용이 하나도 안된 상태로 온다.

따라서 html의 스타일을 inline방식으로 바꾼다.

 

2_2. mailtest.html

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<style type="text/css">

</style>
</head>

<body>
	<table style="border-collapse: collapse;text-align: center;">
		<tr>
			<td style="border: 1px solid #5da399;padding: 10px;">이름</td>
			<td style="border: 1px solid #5da399;padding: 10px;">{name}</td>
		</tr>		
		<tr>
			<td style="border: 1px solid #5da399;padding: 10px;">나이</td>
			<td style="border: 1px solid #5da399;padding: 10px;">{age}</td>
		</tr>		
		<tr>
			<td style="border: 1px solid #5da399;padding: 10px;">성별</td>
			<td style="border: 1px solid #5da399;padding: 10px;">{gender}</td>
		</tr>
	</table>
</body>
</html>

 

 

스타일이 잘 적용된 상태로 메일이 보내진다.

 

다 끝난 것 같지만 아직 문제가 하나 남았다.

 

잘 살펴보자

 

 

분명 받는 사람은 나 하나고 참조인이 2명인데, 왜 받는사람이 두명인 것인가?

 

이는 mailtest.php에서 $to 와 $headers[] = 'To: Kim<받는사람@gmail.com>';

때문인다. to를 두번 지정해준 것이므로 "$headers[] = 'To: Kim<받는사람@gmail.com>';" 지워줘야 한다.

 

그럼 다음과 같이 받는 사람이 한명으로 제대로 나온다.


WRITTEN BY
beautifulhill

,