웹 개발 & 정보/PHP

[PHP] PHP Mailer로 메일 전송 (네이버 아이디 사용)

Rozera 2017. 10. 20. 14:46
반응형

 

기존 PHP Mailer 를 사용하는 경우, 네이버 메일 주소로는 메일 전송이 안되는 경우가 있습니다.

 

그럴 때 메일 전송이 가능한 PHP Mailer 소스를 공유합니다.

 

※ 다량 메일 전송, 대용량 첨부파일 메일 전송 등은 테스트 해보지 않았습니다.

 

 

이 소스를 사용하기 위해서는 PHP Mailer에 사용될 네이버 아이디가 하나 필요합니다.

 

(제재를 받거나 이용 정지를 당한 아이디는 PHP Mailer로 메일이 발송되지 않습니다.)

 

 

1. 네이버 아이디 설정

 

1) 네이버 메일함 -> 환경 설정

 

 

 

2) POP3/IMAP 설정

 

 

 

3) IMAP/SMTP 설정 탭

 

 

 

4) IMAP/SMTP 사용 체크 -> 확인

 

 

 

여기까지 했으면, 일단 네이버 아이디는 PHP Mailer를 사용할 준비가 완료되었습니다.

 

 

2. PHP 소스

 

PHPMailer (네이버).zip
다운로드

 

위 첨부파일에 PHPMailer 에 필요한 파일들이 들어있습니다.

 

 

1) mailer.lib.php 상단에 PHPMailer/PHPMailerAutoload.php 를 include 하기위해 경로를 지정합니다. (PHPMailer 폴더를 업로드 후, 사용)

 

mailer.lib.php

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
<?php
include_once('폴더경로/PHPMailer/PHPMailerAutoload.php');
 
// 네이버 메일 전송
// 메일 -> 환경설정 -> POP3/IMAP 설정 -> POP3/SMTP & IMAP/SMTP 중에 IMAP/SMTP 사용
 
// mailer("보내는 사람 이름", "보내는 사람 메일주소", "받는 사람 메일주소", "제목", "내용", "type");
// type : text=0, html=1, text+html=2
 
// ex) mailer("kOO", "zzxp@naver.com", "zzxp@naver.com", "제목 테스트", "내용 테스트", 1);
function mailer($fname$fmail$to$subject$content$type=0$file=""$cc=""$bcc="")
{
    if ($type != 1)
        $content = nl2br($content);
 
    $mail = new PHPMailer(); // defaults to using php "mail()"
    
    $mail->IsSMTP(); 
//    $mail->SMTPDebug = 2; 
    $mail->SMTPSecure = "ssl";
    $mail->SMTPAuth = true
 
    $mail->Host = "smtp.naver.com"
    $mail->Port = 465
    $mail->Username = "네이버 아이디";
    $mail->Password = "네이버 아이디 비밀번호"
 
    $mail->CharSet = 'UTF-8';
    $mail->From = $fmail;
    $mail->FromName = $fname;
    $mail->Subject = $subject;
    $mail->AltBody = ""// optional, comment out and test
    $mail->msgHTML($content);
    $mail->addAddress($to);
    if ($cc)
        $mail->addCC($cc);
    if ($bcc)
        $mail->addBCC($bcc);
 
    if ($file != "") {
        foreach ($file as $f) {
            $mail->addAttachment($f['path'], $f['name']);
        }
    }
    return $mail->send();
}
 
// 파일을 첨부하는 경우 사용
function attach_file($filename$tmp_name)
{
    // 서버에 업로드 되는 파일은 확장자를 주지 않는다. (보안 취약점)
    $dest_file = '경로지정/tmp/'.str_replace('/''_'$tmp_name);
    move_uploaded_file($tmp_name$dest_file);
    $tmpfile = array("name" => $filename"path" => $dest_file);
    return $tmpfile;
}
?>
 
 

 

 

2) PHP Mailer를 실제 사용할 파일 상단에 mailer.lib.php 파일을 include 한 후, 아래 예시처럼 mailer를 실행합니다.

(mailer.lib.php 파일은 첨부파일에 포함되어 있습니다.),

 

mailer_test.php (테스트를 위해 임의로 생성한 파일)

1
2
3
4
5
6
<?php
include_once('경로지정/mailer.lib.php');
 
// mailer("보내는 사람 이름", "보내는 사람 메일주소", "받는 사람 메일주소", "제목", "내용", "1");
mailer("test""test@naver.com""test@naver.com""제목""내용"1);
?>
 
 

 

해당 PHP Mailer를 적용하여, 아래 처럼 메일 전송 테스트를 해보았습니다.

1
2
3
4
5
6
<?php
.
.
.
mailer("PHPMailer""보내는사람메일@naver.com""받는사람메일@naver.com""조용한 웹 개발자의 블로그""내용"1);
?>
 

 

 

테스트 결과 화면입니다.

 

 

 

 

네이버가 아닌 다른 메일 (gmail, daum 등) 에도 전송이 가능합니다.

 

 

이 소스를 악용할 경우, 해당 PHP Mailer에 사용한 네이버 아이디가 제재 및 정지 당할 수 있으니,

 

일반적인 메일 발송 용도로 사용하는 것을 추천드립니다.

 


 

 

2018.02.05 내용 추가

 

@hotmail.com 로의 전송은 스팸 메일함으로 들어가는 것을 확인하였습니다.

 

반응형