본문 바로가기
PHP

PHP 상담신청, 게시글 작성 시 SMTP 이메일 받기 (+코드예제)

by 규루리 2025. 4. 4.
728x90

php send email gll

왜 PHP로 이메일 시스템을 만들까요?

이메일 마케팅은 고객과 소통하고, 비즈니스를 성장시키는 데 아주 효과적인 방법이에요. 그런데 시중에 이미 많은 이메일 마케팅 도구가 있는데, 왜 직접 만들어야 할까요?

  • 비용 절감 : 직접 만들면 외부 서비스를 사용하는 비용을 아낄 수 있어요. 알림톡, 문자는 건당금액이 들지만 이메일을 이용하여 받으면 무료입니다.
  • 커스터마이징 가능 : 내가 원하는 대로 기능을 추가하거나 디자인을 바꿀 수 있죠. 상담신청 시 내용을 이메일에 그대로 받아볼 수 있어요!
  • 배우면서 성장 : PHP를 배우고 활용하는 좋은 기회가 될 거예요!

 

 

준비물 체크리스

먼저 필요한 준비물을 확인해볼까요?

  • PHP 실행 환경: 로컬 서버(XAMPP, Laragon)나 웹 호스팅 서비스
  • SMTP 서버: Gmail SMTP 같은 이메일 발송 서버
  • PHPMailer 라이브러리: PHP에서 이메일 발송을 쉽게 도와주는 라이브러리예요

 

 

PHP mailer 설치와 사용 하는 방법

먼저, PHPMailer를 설치해야 해요. Composer라는 도구를 사용하면 쉽게 설치할 수 있어요. 터미널(명령 프롬프트)에 아래 명령어를 입력해 주세요

composer require phpmailer/phpmailer

설치가 끝났다면, 이제 PHP 코드에서 PHPMailer를 불러와서 설정해볼게요

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php';
$mail = new PHPMailer(true);
try {
    // SMTP 설정
    $mail->isSMTP();
    $mail->Host = 'smtp.gmail.com'; // Gmail SMTP 서버
    $mail->SMTPAuth = true;
    $mail->Username = 'my-email@gmail.com'; // Gmail 계정
    $mail->Password = 'my-password'; // Gmail 비밀번호
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
    $mail->Port = 587;

    // 이메일 내용 설정
    $mail->setFrom('my-email@gmail.com', 'Your Name');
    $mail->addAddress('recipient@example.com', 'Recipient Name');
    $mail->Subject = '테스트 이메일';
    $mail->Body = '안녕하세요! 이건 PHP로 보낸 첫 번째 이메일이에요.';

    // 이메일 보내기
    $mail->send();
    echo '이메일이 성공적으로 전송되었습니다!';
} catch (Exception $e) {
    echo "이메일 전송 실패: {$mail->ErrorInfo}";
}
?>

어때요? 생각보다 간단하죠? 위 코드를 실행하면 지정한 이메일 주소로 테스트 메일이 발송될 거예요.

 

 

이메일이 도착하지 않고,  무슨문제인지 원인을 확인하실 수 없다구요?

PHPMailer에서 제공하는 SMTPDebug 속성을 설정하면 디버그 메시지를 출력할 수 있습니다. 아래의 내용을 추가하여, 디버깅모드로 어떠한 문제가 있는지 확인이 가능해요!

$mail->SMTPDebug = 2; // 디버그 수준 설정 (0: 없음, 1: 클라이언트 메시지, 2: 클라이언트와 서버 메시지)
$mail->Debugoutput = 'html'; // 디버그 출력 형식 (html 또는 plain)

 

 

이외에 에러사항에 대한 문제점을 확인해볼까요?

1. SMTP 인증오류

SMTP Error: Could not authenticate.

인증절차에 실패한 오류 메세지입니다. 계정정보가 일치하는지 확인해주세요. Gmail 계정을 사용하는 경우, 계정에서 "보안 수준이 낮은 앱 허용"을 활성화해야 합니다.

 

2. 포트 또는 호스트 문제

SMTP connect() failed.

SMTP 호스트나 포트 번호가 잘못되었을 가능성이 있습니다.  Gmail의 경우는 포트: 587 (TLS) 또는 465 (SSL)를 사용합니다. 다른 SMTP를 쓰는경우  전송 서버의 포트를 확인하세요!

 

3. 잘못된 이메일 주소

Invalid address: (to): reciv-mail@example.com.

수신자 이메일 주소가 잘못되었거나 유효하지 않은 형식일 수 있습니다.

 


 

이제 PHPMailer를 활용한 이메일 발송과 디버깅 방법까지 배웠습니다! 디버깅 모드를 통해 문제를 확인하고 해결하는 과정은 처음엔 조금 복잡하게 느껴질 수 있지만, 익숙해지면 PHP로 이메일 시스템을 구축하는 데 큰 자신감을 얻으실 거예요. 😊

혹시 아직 해결되지 않은 문제가 있거나 추가적으로 궁금한 점이 있다면 언제든 문의해 주세요. 함께 고민하고 해결할 수 있도록 도와드릴게요! PHP로 멋진 프로젝트를 만들어 나가길 응원합니다!

 

728x90
반응형
LIST