PHPMailer를 사용해보자!
PHPMailer를 사용해보자!
안녕하세요 오늘은 제가 사용했던 php의 PHPMailer
의 사용법을 한번 알아보겠습니다.
다운로드 링크는 PHPMailer입니다.
PHPMailer?
PHPMailer는 PHP로 이메일을 전송하는 데 사용되는 오픈 소스 라이브러리입니다. 이 라이브러리는 SMTP(Simple Mail Transfer Protocol)를 통해 이메일을 쉽게 보내는 기능을 제공합니다. PHP의 기본 mail() 함수보다 더 강력하고 유연한 기능을 제공하여 이메일 전송 작업을 단순화하고 향상시켜 줍니다.
주요 특징
- SMTP 지원: PHPMailer는 SMTP를 사용하여 이메일을 전송할 수 있습니다. 이는 이메일 전송의 신뢰성과 보안성을 높이는 데 도움이 됩니다.
- HTML 이메일: HTML 형식의 이메일을 쉽게 작성하고 보낼 수 있습니다. 이를 통해 스타일링된 이메일을 만들 수 있습니다.
- 첨부 파일: 이메일에 파일을 첨부할 수 있습니다. 여러 파일도 쉽게 첨부 가능합니다.
- 인증 지원: SMTP 인증을 통해 보안이 강화된 이메일 전송을 할 수 있습니다.
- 다국어 지원: 여러 언어로 오류 메시지와 알림을 제공하여 국제적인 사용이 가능합니다.
- 디버깅: 이메일 전송 과정에서 발생하는 문제를 쉽게 추적하고 해결할 수 있도록 디버그 기능을 제공합니다.
사용 이유
- 단순함: 이메일 전송을 위한 복잡한 코드를 간단하게 만들어 줍니다.
- 유연성: 다양한 이메일 전송 옵션을 제공하여 다양한 요구사항에 맞출 수 있습니다.
- 보안성: SMTP 인증과 같은 보안 기능을 쉽게 구현할 수 있어 보안성이 높습니다.
- 기능성: HTML 이메일, 첨부 파일 등 고급 기능을 지원하여 다양한 이메일 형식을 보낼 수 있습니다.
- 커뮤니티와 문서: 잘 정리된 문서와 활발한 커뮤니티가 있어 문제 해결이 용이합니다.
PHPMailer는 이러한 이유들로 인해 PHP 개발자들이 이메일 기능을 구현할 때 많이 사용하는 도구입니다.
이렇게 PHPMailer
가 무엇인지 알아보았으니 예제 코드를 이용해 본격적으로 PHPMailer
를 사용해보겠습니다.
PHPMailer 예제 코드
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
require '../PHPMailer/src/Exception.php';
require '../PHPMailer/src/PHPMailer.php';
require '../PHPMailer/src/SMTP.php';
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
// Sample data for demonstration
$userEmail = 'user@example.com';
$userName = 'John Doe';
date_default_timezone_set('Asia/Seoul');
$mail = new PHPMailer;
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = 'smtp.server.com'; // Specify main and backup SMTP servers
$mail->Port = 465; // TCP port to connect to
$mail->SMTPSecure = 'ssl'; // Enable TLS encryption, `ssl` also accepted
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'account'; // SMTP username
$mail->Password = 'password'; // SMTP password
$mail->setFrom('tsagaanaa123@naver.com', 'picker'); // Sender's email address and name
$mail->addReplyTo('picker@pickstom.com', 'picker'); // Reply-to address
$mail->addAddress($userEmail, $userName); // Add a recipient
$mail->Subject = 'OOO님께'; // Email subject
$mail->CharSet = 'UTF-8'; // Character set
$mail->msgHTML("<html><body>안녕하세요 저는 OOO입니다.</body></html>"); // HTML message body
$mail->AltBody = "안녕하세요 저는 OOO입니다."; // Plain text body for non-HTML email clients
if (!$mail->send()) {
echo 'Mailer Error: ' . $mail->ErrorInfo; // Display error message if email fails to send
} else {
echo 'Message sent successfully!'; // Display success message if email is sent
}
상세 설명
PHPMailer
포함 및 사용 선언
1
2
3
4
5
6
require '../PHPMailer/src/Exception.php';
require '../PHPMailer/src/PHPMailer.php';
require '../PHPMailer/src/SMTP.php';
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
PHPMailer
를 포함하고 사용할 수 있도록 네임스페이스를 선언합니다.
- 샘플 데이터 설정
1
2
3
$userEmail = 'user@example.com';
$userName = 'John Doe';
$randomCode = 'ABC123';
이메일 전송을 테스트하기 위해 샘플 데이터를 설정합니다.
- 타임존 설정
1
date_default_timezone_set('Asia/Seoul');
PHP 스크립트의 기본 타임존을 설정합니다.
- PHPMailer 객체 생성 및 설정
1
2
3
4
5
6
7
8
9
10
11
$mail = new PHPMailer;
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = 'smtp.server.com'; // Specify main and backup SMTP servers
$mail->Port = 465; // TCP port to connect to
$mail->SMTPSecure = 'ssl'; // Enable TLS encryption, `ssl` also accepted
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'account'; // SMTP username
$mail->Password = 'password'; // SMTP password
$mail->setFrom('tsagaanaa123@naver.com', 'picker'); // Sender's email address and name
$mail->addReplyTo('picker@pickstom.com', 'picker'); // Reply-to address
$mail->addAddress($userEmail, $userName); // Add a recipient
new PHPMailer
로PHPMailer
객체를 생성합니다.isSMTP()
를 사용하여SMTP
를 사용하도록 설정합니다.Host
속성에SMTP
서버 주소를 지정합니다.Port
속성에 포트 번호를 설정합니다.SMTPSecure
속성에SSL
을 사용하도록 설정합니다.SMTPAuth
속성에SMTP
인증을 사용하도록 설정합니다.Username
및Password
속성에SMTP
서버의 로그인 자격 증명을 설정합니다.setFrom
메서드로 보낸 사람의 이메일 주소와 이름을 설정합니다.addReplyTo
메서드로 회신 이메일 주소를 설정합니다.addAddress
메서드로 수신자의 이메일 주소와 이름을 설정합니다.
- 이메일 내용 설정
1
2
3
4
$mail->Subject = 'OOO님께'; // Email subject
$mail->CharSet = 'UTF-8'; // Character set
$mail->msgHTML("<html><body>안녕하세요 저는 OOO입니다.</body></html>"); // HTML message body
$mail->AltBody = "안녕하세요 저는 OOO입니다."; // Plain text body for non-HTML email clients
Subject
속성에 이메일 제목을 설정합니다.CharSet
속성에 문자 인코딩을 설정합니다.msgHTML
메서드로HTML
형식의 이메일 본문을 설정합니다.AltBody
속성에HTML
을 지원하지 않는 클라이언트를 위한 텍스트 형식의 이메일 본문을 설정합니다.
- 이메일 전송 및 결과 처리
1
2
3
4
5
if (!$mail->send()) {
echo 'Mailer Error: ' . $mail->ErrorInfo; // Display error message if email fails to send
} else {
echo 'Message sent successfully!'; // Display success message if email is sent
}
send
메서드를 사용하여 이메일을 전송합니다.- 전송에 실패하면 오류 메시지를 출력하고, 성공하면 성공 메시지를 출력합니다.
이렇게 예제를 상세하게 한번 알아보았습니다.
도움이 되셨다면 댓글한번씩만 달아주세요!
This post is licensed under CC BY 4.0 by the author.