آموزش ارسال ایمیل با استفاده از PHPMailer
۹ خرداد ۱۴۰۰
این روزها تعامل با کاربران از راههای مختلف به مشخصهی برنامههای خوب تبدیل شده و ما شاهد ایمیلها، پیامهای کوتاه و انواع اعلانها از سمت برنامههای مختلف هستیم. حال در زبان PHP یک کتابخانهی بسیار مشهور بهنام PHPMailer وجود دارد که با استفاده از آن میتوانیم ایمیلهای مورد نیاز خود را بهراحتی و با استفاده از یک سرور SMTP به کاربر یا کاربران مورد نظر خود ارسال کنیم.
بنابراین در ادامهی مقاله میخواهیم نحوهی ارسال ایمیل با استفاده از کتابخانهی PHPMailer و Gmail SMTP را به شما آموزش دهیم.
پیشنیازها
در ادامهی مقاله برای اضافه کردن کتابخانهی PHPMailer به پروژه از Composer استفاده شده بنابراین توصیه میشود حتما مقالهی آموزش نصب و استفاده از Composer را مطالعه کنید و همچنین توجه داشته باشید که برای استفاده از Gmail SMTP به یک حساب Gmail نیاز دارید و اگر Two-Step Verification آن فعال باشد باید یک رمز عبور ثابت از بخش App passwords دریافت کنید.
نصب PHPMailer
نصب کتابخانهی PHPMailer با استفاده از Composer بهسادگی اجرای دستور زیر در مسیر پروژه است:
composer require phpmailer/phpmailer
پیادهسازی برنامهی نهایی
اول از همه در مسیر اصلی پروژه یک فایل با نام app.php
ایجاد کنید و کدهای زیر را بهمنظور فراخوانی کتابخانهی PHPMailer در ابتدای این اسکریپت قرار دهید:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
require_once "vendor/autoload.php";
در مرحلهی بعد باید یک Mailer Object ایجاد کرده و آن را پیکربندی کنید:
$mail = new PHPMailer(true);
$mail->isSMTP();
$mail->SMTPDebug = 1;
$mail->SMTPAuth = true;
$mail->SMTPSecure = "tls";
$mail->Port = 587;
$mail->Host = "smtp.gmail.com";
$mail->Username = "<username>@gmail.com";
$mail->Password = "<password>";
توجه داشته باشید که باید مقادیر <username>@gmail.com
و <password>
را با اطلاعات حساب Gmail خود جایگزین کنید. اکنون پس از پیکربندی Mailer Object میتوانید ایمیل مبدا و مقصد را بههمراه محتوای ایمیل در ادامهی کدها قرار دهید:
$mail->From = "<username>@gmail.com";
$mail->FromName = "<your name>";
$mail->addAddress("<destination>@host.name", "<destination name>");
$mail->isHTML(true);
$mail->Subject = "Mailing with PHPMailer";
$mail->Body = "<b>Congratulation</b>";
$mail->AltBody = "Congratulation";
درنهایت زمان ارسال ایمیل فرا میرسد که این کار به شکل زیر انجام خواهد شد:
try {
$mail->send();
echo "Message has been sent successfully";
} catch (Exception $e) {
echo "Mailer Error: " . $mail->ErrorInfo;
}
حال اگر تمام کدها را درکنار هم قرار دهید، اسکریپت نهایی به شکل زیر خواهد بود:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
require_once "vendor/autoload.php";
$mail = new PHPMailer(true);
$mail->isSMTP();
$mail->SMTPDebug = 1;
$mail->SMTPAuth = true;
$mail->SMTPSecure = "tls";
$mail->Port = 587;
$mail->Host = "smtp.gmail.com";
$mail->Username = "<username>@gmail.com";
$mail->Password = "<password>";
$mail->From = "<username>@gmail.com";
$mail->FromName = "<your name>";
$mail->addAddress("<destination>@host.name", "<destination name>");
$mail->isHTML(true);
$mail->Subject = "Mailing with PHPMailer";
$mail->Body = "<b>Congratulation</b>";
$mail->AltBody = "Congratulation";
try {
$mail->send();
echo "Message has been sent successfully";
} catch (Exception $e) {
echo "Mailer Error: " . $mail->ErrorInfo;
}
برای اجرای این اسکریپت PHP کافی است دستور php app.php
را اجرا کنید و ایمیل شما با موفقیت به آدرس <destination>@host.name
ارسال خواهد شد اما توجه داشته باشید اگر ایمیل شما به پوشهی Spam رفته باشد، ممکن است برخی از موارد فوق را بهدرستی پیکربندی نکرده باشید.
منبع: https://codeburst.io/send-emails-with-php-mailer-8ce6bb5871f6