SMTP와 PHP를 사용하여 이메일 전송 - Amazon Simple Email Service

이 가이드에서는 Amazon SES용 클래식 콘솔 (V1) 을 반영합니다. Amazon SES 용 새 콘솔 (V2) 에 대한 자세한 내용은Amazon Simple Email Service 개발자 가이드를 선택합니다.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

SMTP와 PHP를 사용하여 이메일 전송

이 예제에서는 SMTP 인터페이스에서 PHPMailer 클래스를 사용하여 Amazon SES 를 통해 이메일을 전송합니다.

중요

이 자습서에서는 수신 여부를 확인할 수 있도록 자신에게 이메일을 발송합니다. 추가적인 실험 또는 로드 테스트는 Amazon SES 메일박스 시뮬레이터를 사용하십시오. 사서함 시뮬레이터로 전송되는 이메일은 전송 할당량이나 반송 메일 및 수신 거부 발생률에 포함되지 않습니다. 자세한 내용은 Amazon SES 에서 이메일 전송 테스트 단원을 참조하세요.

Prerequisites

시작하기 전에 다음 작업을 수행하십시오.

  • Amazon SES 를 사용하여 이메일 주소 확인— Amazon SES 에서 이메일을 보내기 전에 발신자 이메일 주소의 소유자인지 확인해야 합니다. 사용자 계정이 아직 Amazon SES 샌드박스 환경에 있는 경우 수신자 이메일 주소도 확인해야 합니다. 이메일 주소를 확인하는 가장 쉬운 방법은 Amazon SES 콘솔을 사용하는 것입니다. 자세한 내용은 Amazon SES 에서 이메일 주소 확인 단원을 참조하세요.

  • SMTP 자격 증명 받기- Amazon SES SMTP 인터페이스에 액세스하려면 Amazon SES SMTP 사용자 이름과 암호가 필요합니다. SMTP 자격 증명은하지AWS 자격 증명과 동일합니다. SMTP 자격 증명을 찾을 수 있는SMTP 설정페이지에서 확인할 Amazon SES 있습니다. SMTP 자격 증명에 대한 자세한 내용은 Amazon SES SMTP 자격 증명 받기을 참조하십시오.

  • PHP 설치- PHP에서 사용할 수 있습니다http://php.net/downloads.php를 선택합니다. PHP를 설치한 후, 원하는 모든 명령 프롬프트에서 PHP를 실행할 수 있도록 PHP에 대한 경로를 환경 변수에 추가합니다.

  • 작곡가 종속성 관리자 설치- Composer 종속성 관리자를 사용하여 PHPMailer 클래스와 클래스의 종속성을 다운로드하여 설치할 수 있습니다. Composer를 설치하려면 https://getcomposer.org/download의 설치 지침을 따르십시오.

  • PHPMailer 클래스를 설치하십시오.— Composer를 설치한 후에는 다음 명령을 실행하여 다음과 같이 PHPMailer를 설치합니다.

    path/to/composer require phpmailer/phpmailer

    앞의 명령에서 path/to/ 를 설치한 경로로 바꿉니다.

Procedure

다음 절차에서는 PHP를 사용하여 Amazon SES 를 통해 이메일을 보내는 방법을 보여줍니다.

PHP를 사용하여 Amazon SES SMTP 인터페이스를 통해 이메일을 전송하려면

  1. amazon-ses-smtp-sample.php이라는 이름의 파일을 만듭니다. 텍스트 편집기로 파일을 열고 다음 코드를 붙여 넣습니다.

    <?php // Import PHPMailer classes into the global namespace // These must be at the top of your script, not inside a function use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; // If necessary, modify the path in the require statement below to refer to the // location of your Composer autoload.php file. require 'vendor/autoload.php'; // Replace sender@example.com with your "From" address. // This address must be verified with Amazon SES. $sender = 'sender@example.com'; $senderName = 'Sender Name'; // Replace recipient@example.com with a "To" address. If your account // is still in the sandbox, this address must be verified. $recipient = 'recipient@example.com'; // Replace smtp_username with your Amazon SES SMTP user name. $usernameSmtp = 'smtp_username'; // Replace smtp_password with your Amazon SES SMTP password. $passwordSmtp = 'smtp_password'; // Specify a configuration set. If you do not want to use a configuration // set, comment or remove the next line. $configurationSet = 'ConfigSet'; // If you're using Amazon SES in a region other than US West (Oregon), // replace email-smtp.us-west-2.amazonaws.com with the Amazon SES SMTP // endpoint in the appropriate region. $host = 'email-smtp.us-west-2.amazonaws.com'; $port = 587; // The subject line of the email $subject = 'Amazon SES test (SMTP interface accessed using PHP)'; // The plain-text body of the email $bodyText = "Email Test\r\nThis email was sent through the Amazon SES SMTP interface using the PHPMailer class."; // The HTML-formatted body of the email $bodyHtml = '<h1>Email Test</h1> <p>This email was sent through the <a href="https://aws.amazon.com/ses">Amazon SES</a> SMTP interface using the <a href="https://github.com/PHPMailer/PHPMailer"> PHPMailer</a> class.</p>'; $mail = new PHPMailer(true); try { // Specify the SMTP settings. $mail->isSMTP(); $mail->setFrom($sender, $senderName); $mail->Username = $usernameSmtp; $mail->Password = $passwordSmtp; $mail->Host = $host; $mail->Port = $port; $mail->SMTPAuth = true; $mail->SMTPSecure = 'tls'; $mail->addCustomHeader('X-SES-CONFIGURATION-SET', $configurationSet); // Specify the message recipients. $mail->addAddress($recipient); // You can also add CC, BCC, and additional To recipients here. // Specify the content of the message. $mail->isHTML(true); $mail->Subject = $subject; $mail->Body = $bodyHtml; $mail->AltBody = $bodyText; $mail->Send(); echo "Email sent!" , PHP_EOL; } catch (phpmailerException $e) { echo "An error occurred. {$e->errorMessage()}", PHP_EOL; //Catch errors from PHPMailer. } catch (Exception $e) { echo "Email not sent. {$mail->ErrorInfo}", PHP_EOL; //Catch errors from Amazon SES. } ?>
  2. amazon-ses-smtp-sample.php에서 다음 값을 사용자의 값으로 대체합니다.

    • sender@example.com—Amazon SES에서 확인한 이메일 주소로 바꿉니다. 자세한 내용은 자격 증명 확인 단원을 참조하세요. Amazon SES 의 이메일 주소는 대/소문자를 구분합니다. 입력하는 주소는 사용자가 확인한 것과 정확하게 동일해야 합니다.

    • recipient@example.com- 수신자의 주소로 바꿉니다. 계정이 아직 샌드박스에 있는 경우, 이 주소를 확인해야 계정을 사용할 수 있습니다. 자세한 내용은 Amazon SES 샌드박스 환경에서 나가기 단원을 참조하세요. 입력하는 주소는 사용자가 확인한 것과 정확하게 동일해야 합니다.

    • smtp_username- SMTP 사용자 이름 자격 증명으로 바꿉니다. 이 자격 증명은SMTP 설정페이지에서 확인할 Amazon SES 있습니다. 이것은하지AWS 액세스 키 ID와 동일합니다. SMTP 사용자 이름 자격 증명은 식별 가능한 이름이 아니라 문자/숫자를 포함하는 20자 길이 문자열입니다.

    • smtp_password- SMTP 암호로 바꿉니다. 이 암호는SMTP 설정페이지에서 확인할 Amazon SES 있습니다. 이것은하지AWS 보안 액세스 키와 동일합니다.

    • (선택 사항)ConfigSet- 이 이메일을 전송할 때 구성 세트를 사용하려면 이 값을 구성 세트의 이름으로 바꿉니다. 구성 세트에 대한 자세한 내용은 Amazon SES 구성 세트 사용 단원을 참조하십시오.

    • (선택 사항)email-smtp.us-west-2.amazonaws.com- 미국 서부 (오레곤) 이외의 리전에서 Amazon SES SMTP 엔드포인트를 사용하려면 사용할 리전에서 Amazon SES SMTP 엔드포인트로 바꿉니다. Amazon SES 를 사용할 수 있는 AWS 리전에 대한 SMTP 엔드포인트 URL 목록은 단원을 참조하십시오.Amazon Simple Email Service(Amazon SES)AWS 일반 참조를 선택합니다.

  3. Save amazon-ses-smtp-sample.php.

  4. 프로그램을 실행하려면 amazon-ses-smtp-sample.php와 동일한 디렉터리에서 명령 프롬프트를 열고 php amazon-ses-smtp-sample.php를 입력합니다.

  5. 출력 결과를 검토합니다. 이메일이 성공적으로 전송되었으면 콘솔에 "Email sent!"가 표시됩니다. 그렇지 않으면 오류 메시지가 표시됩니다.

  6. 수신자 주소의 이메일 클라이언트에 로그인합니다. 보낸 메시지가 도착해 있을 것입니다.