Gmail, PHPMailer를 이용하여 홈페이지에 메일 보내기 기능을 쉽게 구현하는 방법


홈페이지에 이메일 문의 기능을 넣기 위해서는 메일을 보낼 수 있는 메일 서버, 메일 서버와 통신을 하여 실제 메일 전송을 담당할 프로그램이 필요 합니다.

별도의 메일 서버를 운영하지 않고, 구글이 운영하는 메일 서버를 이용하여 쉽게 메일 전송 기능을 구현할 수 있는 방법을 설명 합니다.


1. PHPMailer를 다운 받습니다.

PHPMailer는 https://github.com/PHPMailer/PHPMailer 에서 다운로드 받을 수있습니다.

해당 경로로 접속하신 다음 우측 상단의 초록색 "Clone or download" 버튼을 클릭하여 압축파일 형태로 다운로드 받으면 됩니다.




2. 다운받은 파일의 압축을 적당한 곳에 해제하면,

language와 src라는 폴더가 있습니다. 이중 language 폴더에 있는 phpmailer.lang-ko.php 파일을 src 폴더로 복사해 줍니다.

이 글을 쓰는 시점 기준으로 제대로 따라 하셨다면 아래와 같은 모양이 될겁니다.

기존에 있던 5개의 파일과 방금 복사한 phpmailer.lang-ko.php 파일까지 총 6개의 파일이 src폴더에 있는 것을 확인 하실 수 있습니다.



3. src폴더 이름을 Sendmail로 변경 합니다.(대소문자 주의)



4. 아래 두 파일을 방금 이름을 바꿨던 Sendmail폴더의 부모폴더, 즉 PHPMailer-master 폴더에 다운 받습니다.



5. 다운 받은 Sendmail.php 파일을 메모장으로 열어서 지메일 계정과 문의 메일 받을 주소를 입력 합니다.



6. 위에서 입력한 구글 계정으로 로그인 하여, 지메일 설정->전달 및 POP/IMAP으로 들어가신 다음,

아래 그림과 같이 IMAP사용에 체크하고 변경사항을 저장 합니다.



7. Sendmail 폴더와 추가로 다운 받았던 Sendmail.htm 그리고 수정했던 Sendmail.php 파일을 경로를 맞춰서 웹서버에 업로드 합니다. 제대로 따라 하셨다면 다음과 같은 구조일겁니다.



8. 업로드한 웹페이지로 접속 합니다.



9. 간단하게 내용을 입력하고 메일을 보내 봅니다.



10. 메일 발송이 정상적으로 되었습니다.



11. 받을 메일로 로그인 하여 메일이 정상적으로 발송되었는지 확인해 봅니다.

저는 받을 메일 주소를 네이버로 했는데 이상없이 도착 했네요.



12. 메일이 정상적으로 도착한 것이 확인 되었으면, Sendmail.htm 파일 내용을 각자 필요한 양식에 맞게 수정 합니다.

만약 테스트 도중 메일 발송에 실패 했다는 메세지가 뜬다면, Sendmail.php의 내용중

$mail->SMTPDebug = 0;

라고 되어 있는 부분을 찾아서 0으로 되어 있는 부분을 2로 바꾸면 에러 메세지가 표시되는데, 메세지를 보고 적절한 조치를 취한 다음, 실제 적용시에는 다시 0으로 바꿔주는게 좋습니다.



추가. 간혹 구글에서 의심스러운 계정 활동이라고, Sendmail로 구글에 로그인 하는 것을 차단하는 경우가 있을 수 있습니다. 이 경우 설정한 지메일로 로그인 해보면 메일이 도착해 있을텐데,

해당 활동을 자신이 한 활동이라고 지정해 주면 이후부터는 Sendmail이 구글로 로그인 할 수 있게 됩니다.

Posted by 5CFM

댓글을 달아 주세요

  1. 2019.04.15 18:21  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

  2. goatHam 2019.04.15 18:40 신고  댓글주소  수정/삭제  댓글쓰기

    덕분에 메일 보내기를 실현하였습니다!

    다만 잘 안되는 부분이 있어서 댓글로 여쭤보려고 합니다.
    Sendmail.php에서
    $mail->setFrom( $_POST["from_mail"], $_POST["from_name"]); // From email and name
    해당 부분에서 $_POST["from_mail"]이 상대방 메일을 가져오지 않고
    username의 메일을 가지고 옵니다

    상대방의 아이디와 비번을 알아야한다는 얘긴데
    이렇게 말고 상대방의 주소만 입력받아서 저한테 보내는 식으로는 불가능한건가요?

    • 5CFM 2019.04.29 16:15 신고  댓글주소  수정/삭제

      php파일이나 htm파일을 잘못 수정 하신것으로 보입니다.
      질문의 맨 마지막 부분 "상대방의 주소만 입력 받아서 저한테 보내는 식"으로 이미 구현해놓은 것입니다.
      안그러면 누가 문의 메일 하나 남기려고 자신의 구글 아이디와 비번을 매번 입력 하겠습니까.
      php파일을 수정 하실 때,
      지메일 아이디, 지메일 비번, 문의받을 이메일주소, 받을사람 이름
      이렇게 한글로 적어놓은 네가지 부분만 자신에게 맞게 수정하시면 됩니다.
      혹시 from_mail 같은 다른걸 수정하지 않으셨는지요?
      만약 php파일을 잘못수정한게 아니라면 htm파일에서 값을 잘못넘겨 주는 것이니 이부분도 확인이 필요합니다.