2016. 9. 6. 11:06
PHP로 Gmail SMTP 사용하기
2016. 9. 6. 11:06 in 팁&테크/PHP
composer 로 PHPMailer를 설치한다.
리눅스 서버에 OpenSSL 확장이 설치 되어있어야 한다.
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 | <?php namespace google; require __DIR__.'/../../_composer/vendor/autoload.php'; /** * Class GmailApi * TODO: OpenSSL Extension 이 있는 지 확인할 것. * @package google */ class GmailApi { const FROM = '보내는이'; const FROM_MAIL = 'Gmail주소'; const FROM_PASSWORD = 'GMail비밀번호'; /** * @param $toMail * @param $subject * @param $msg * @return bool * @throws \phpmailerException */ public function send($toMail, $subject, $msg) { $mail = new \PHPMailer(); $mail->isSMTP(); $mail->SMTPAuth = true; $mail->SMTPSecure = 'tls'; $mail->Host = 'smtp.gmail.com'; $mail->Port = 587; $mail->Username = self::FROM_MAIL; $mail->Password = self::FROM_PASSWORD; $mail->setFrom(self::FROM_MAIL, self::FROM); $mail->addReplyTo(self::FROM_MAIL, self::FROM); $mail->CharSet = 'UTF-8'; $mail->Subject = $subject; $mail->msgHTML($msg); $mail->addAddress($toMail); return $mail->send(); } } | cs |
Gmail 에서 Imap 을 Enable 해야하고
구글계정 설정에서 보안 수준이 낮은 앱의 액세스를 허용해야 이용이 가능함
SMTPSecure = 'ssl', Port = 465 로도 접속 가능하다.
만약 설정에 이상이 없는데 아래 오류가 발생한다면 나와있는 링크를 방문에서 문제를 확인해보면 된다.
SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
Gmail계정으로 IMAP을 처음 접속하게 되면 별도로 접속허용을 해줘야 이용이 가능한데.
$mail->SMTPDebug = 2; 로 설정하고 송수신되는 내용을 살펴보면
서버에서 https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsb.... 와같은 내용을 수신 받으면서 password faile 이 뜨는 경우가 난다.
서버에서 내려받은 주소를 웹브라우저에 연결해서 작업을 해줘야 하지만 소켓이라 안된다.
해결방법은 Troubleshooting 링크에도 나와있지만 웹브라우저로 사용하려는 gamil 계정에 로그인 한뒤에
https://www.google.com/accounts/DisplayUnlockCaptcha 링크를 방문해서 허용해주면 된다.