[php] PHP 라이브러리 이메일 발송

PHP는 이메일 발송을 위한 다양한 라이브러리를 제공합니다. 이 중에서 PHPMailerSwift Mailer는 가장 인기 있는 옵션들 중 하나입니다. 이 라이브러리들을 사용하면 PHP 애플리케이션에서 이메일을 쉽게 발송할 수 있습니다.

PHPMailer

PHPMailer는 오픈 소스 라이브러리로, SMTP를 통해 이메일을 발송할 수 있는 기능을 제공합니다. 다양한 설정 옵션을 제공하여 템플릿 기반 이메일 발송 및 다양한 첨부 파일을 처리하는 데 유용합니다.

다음은 PHPMailer를 사용하여 기본적인 이메일 발송하는 예제 코드입니다.

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'vendor/autoload.php';

$mail = new PHPMailer(true);

try {
    $mail->isSMTP();
    $mail->Host       = 'smtp.example.com';
    $mail->SMTPAuth   = true;
    $mail->Username   = 'user@example.com';
    $mail->Password   = 'password';
    $mail->SMTPSecure = 'tls';
    $mail->Port       = 587;

    $mail->setFrom('from@example.com', 'Sender Name');
    $mail->addAddress('recipient@example.com', 'Recipient Name');

    $mail->isHTML(true);
    $mail->Subject = 'Subject';
    $mail->Body    = 'Email body';

    $mail->send();
    echo 'Email sent successfully';
} catch (Exception $e) {
    echo "Email sending failed: {$mail->ErrorInfo}";
}

Swift Mailer

Swift Mailer는 또 다른 인기 있는 이메일 라이브러리로, 강력한 이메일 발송 및 기능 풍부한 MIME 메시지 작성을 제공합니다. PHPMailer와 유사하게 SMTP를 통해 이메일을 발송할 수 있도록 지원합니다.

다음은 Swift Mailer를 사용하여 기본적인 이메일 발송하는 예제 코드입니다.

require_once 'vendor/autoload.php';

// Create the Transport
$transport = (new Swift_SmtpTransport('smtp.example.org', 25))
  ->setUsername('your username')
  ->setPassword('your password');

// Create the Mailer using your created Transport
$mailer = new Swift_Mailer($transport);

// Create a message
$message = (new Swift_Message('Subject'))
  ->setFrom(['from@example.com' => 'Sender Name'])
  ->setTo(['recipient@example.com' => 'Recipient Name'])
  ->setBody('Email body');

// Send the message
$result = $mailer->send($message);

echo "Email sent successfully";

마무리

PHPMailerSwift Mailer는 PHP 애플리케이션에서 이메일 발송을 쉽게 만들어주는 강력한 도구입니다. 각 라이브러리는 다양한 설정과 기능을 제공하여 사용자가 필요에 맞게 선택할 수 있습니다. 이제 PHP 프로젝트에서 이메일을 발송하는 데 사용할 수 있는 라이브러리를 선택할 수 있을 것입니다.

참고 문헌:

이상으로 PHP를 이용하여 이메일을 발송하는 방법에 대해 알아보았습니다. 문제가 있거나 추가 질문이 있다면 언제든지 말씀해주세요.