PHP 8.1 , Apache 2.4를 사용한다.
php.ini에
extension=openssl
extension=curl
주석을 풀어준다.
mail_sender.php 를 만들고 include를 위 파일 경로로 본인에 맞게 셋팅한다.
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
include($_SERVER['DOCUMENT_ROOT']."/inc/Exception.php");
include($_SERVER['DOCUMENT_ROOT']."/inc/PHPMailer.php");
include($_SERVER['DOCUMENT_ROOT']."/inc/SMTP.php");
function send_email_naver ($user_email, $user_name, $subject, $content) {
$USER ='xxxx@naver.com'; //보내는 사람 이메일
$PASSWORD = 'xxxx'; //비밀번호
$SEND_EMAIL = 'master@mydomain.io';
$mail = new PHPMailer(true);
//Enable SMTP debugging.
$mail->SMTPDebug = 3; // debug 표시 레벨
//Set PHPMailer to use SMTP.
$mail->isSMTP();
//Set SMTP host name
$mail->Host = "smtp.naver.com";
$mail->SMTPSecure = "tls";
//Set TCP port to connect to
$mail->Port = 587;
//Set this to true if SMTP host requires authentication to send email
$mail->SMTPAuth = true;
//Provide username and password
$mail->Username = $USER;
$mail->Password = $PASSWORD;
$mail->SMTPKeepAlive = true;
$mail->CharSet = "utf-8"; //이거 설정해야 한글 안깨짐
//If SMTP requires TLS encryption then set it
$mail->setFrom($USER,"밋유저스");
// 이름은 적용이 되는데 메일 적용이 안되는데 네이버에서 막아놓음. 네이버는 아예 다른 메일이면 send가 실패함
// 네이버에 별칭 추가 해야함. google이랑 마찬가지.
$mail->addAddress($user_email, $user_name); //받는 사람
$mail->isHTML(true);
$rand_num = sprintf("%06d",rand(000000,999999));
$mail->Subject = $subject;
$mail->Body = $content1.(string)$rand_num;
$mail->AltBody = "";
try {
$mail->send();
} catch (Exception $e) {
$rand_num = -1;
}
return $rand_num;
}
function send_email_google ($user_email, $user_name, $subject, $content) {
$USER ='xxx@gmail.com'; //보내는 사람 이메일
$PASSWORD = 'xxxx'; //비밀번호
$SEND_EMAIL = 'master@mydomain.io';
$mail = new PHPMailer(true);
//Enable SMTP debugging.
$mail->SMTPDebug = 3; // debug 표시 레벨
//Set PHPMailer to use SMTP.
$mail->isSMTP();
//Set SMTP host name
$mail->Host = "smtp.gmail.com";
$mail->SMTPSecure = "ssl";
//Set TCP port to connect to
$mail->Port = 465;
//Set this to true if SMTP host requires authentication to send email
$mail->SMTPAuth = true;
//Provide username and password
$mail->Username = $USER;
$mail->Password = $PASSWORD;
$mail->SMTPKeepAlive = true;
$mail->CharSet = "utf-8"; //이거 설정해야 한글 안깨짐h
//If SMTP requires TLS encryption then set it
$mail->setFrom($SEND_EMAIL,"밋유저스");
// 이름은 적용이 되는데 메일 적용이 안된다 구글에서 막아놓음. (보내지긴 하는데 user mail로 수정됨)
// 보내는 사람 메일을 바꾸려면 User메일의 별칭 메일에 send mail을 추가해야 함. (master@mydomain.io가 실제 메일을 받을 수 있어야함)
$mail->addAddress($user_email, $user_name); //받는 사람
$mail->isHTML(true);
$rand_num = sprintf("%06d",rand(000000,999999));
$mail->Subject = $subject;
$mail->Body = $content.(string)$rand_num;
$mail->AltBody = "";
try {
$mail->send();
} catch (Exception $e) {
$rand_num = -1;
}
return $rand_num;
}
?>
메일은 6자리 인증번호를 생성하여 메일을 보내는 역할을 한다.
구글이나 네이버 smtp 셋팅을 해야하는데, 그 과정은 검색해보면 많이 나와있다.
smtp 셋팅하고, 보안 풀고 이것저것~~
setFrom에 sender mail (보내는 사람 메일)이 변경되지 않는데, 별칭 추가를 해야한다.
그럼 결국 보내는 사람 도메인이 있어야 하는데... 나는 그냥 발신전용(없는메일)로 하려고 했는데 낭패다ㅠ.ㅠ
다른방법을 찾아봐야겠다.
'개발 > php' 카테고리의 다른 글
PHP hashtag 정규식 한글 영어 숫자 혼용 글자수 제한 (0) | 2022.01.31 |
---|