PHP

 

 

http://macaronics.net/PHPMailer  에 소스가 있다.

 

mailer.lib.php 

<?php
include_once('./PHPMailer/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 = "junhoda79";
	$mail->Password = "@centos7901"; 

    $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;
}
?>

 

다음 아래 두줄만 변경하면 된다.

$mail->Username = "junhoda79";

$mail->Password = "@centos7901";

 

 

sendmail.php 즉 메일 전송에서는  다음과 같이 한줄이면 된다.

 $sendmail=mailer($name, "ebirdrent@naver.com", "ebirdrent@naver.com", $subject, $content, "1");
 

<?php

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

 

 

 

 

 

다음 원본 블로그 내용이다

 

기존 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

<?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 (테스트를 위해 임의로 생성한 파일)

 

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

 

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

 

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

 

 

 

테스트 결과 화면입니다.

 

 

 

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

 

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

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

 

 

 

2018.02.05 내용 추가

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

 

 

 

 

 

 

 

 

 

about author

PHRASE

Level 60  라이트

우리의 몸의 머리털 하나 살갗 한 점도 모두 부모에게서 받은 것이다. 감히 훼손하거나 조금이라도 상하게 하지 않는 것이 효도의 시작이다. -효경

댓글 ( 5)

댓글 남기기

작성

PHP 목록    more