آموزش ارسال ایمیل در php با SMTP و کتابخانه PHPMailer
برای ارسال ایمیل از طریق php چند روش و کتابخانهی مختلف وجود دارد. در این نوشته با روش ارسال ایمیل از طریق کتابخانهی PHPMailer و پروتکل SMTP آشنا میشویم. تنظیمات لازم برای ارسال ایمیل با عنوان و متن فارسی و ساختار محتوایی HTML را نیز انجام میدهیم.
برای استفاده از این آموزش به پیشنیازهای زیر نیاز خواهید داشت:
- نصب Composer برای ایجاد اتصال به کتابخانه PHPMailer
- آشنایی اولیه با استفاده از Composer
- یک سرور ایمیل که از SMTP پشتیبانی کند
- یک وب سرور که بتوانید کدهای php را روی آن اجرا کنید.
قدم اول: ساخت فایل و نصب کتابخانه PHPMailer
به خط فرمان( Command Prompt ) بروید و با استفاده از دستور زیر، کتابخانهی PHPMailer را نصب کنید. پیش از اجرای این دستور لازم است تا Composer را نصب کرده باشید و پیکربندی آن را به درستی انجام دهید:
1 |
composer require phpmailer/phpmailer |
قدم دوم: ساخت فایل php برای ارسال ایمیل
یک فایل php ایجاد کنید و مرحله به مرحله کدهای زیر را درون آن اضافه کنید:
1 2 3 4 5 6 7 |
require 'vendor/autoload.php'; $mail = new PHPMailer\PHPMailer\PHPMailer(); $mail->isSMTP(); $mail->SMTPSecure = 'tls'; $mail->CharSet = "UTF-8"; $mail->SMTPAuth = true; |
قطعه کدهای بالا کتابخانهی PHPMailer را فراخوانی میکند و یک نمونه شیء برای ارسال ایمیل میسازد. همچنین تنظیمات مربوط به ارسال ایمیل یونیکد( فارسی ) را انجام میدهد و نوع اتصال را هم از نوع SMTP تعیین میکند تا در ادامه بتوانیم ایمیل را از این طریق ارسال کنیم.
1 2 3 4 |
$mail->Host = 'smtp.yourdomain.com'; $mail->Username = 'your_username'; $mail->Password = 'your_password'; $mail->Port = 587; |
در ادامه با استفاده از کدهای بالا، آدرس هاست ایمیل و نام کاربری و شماره پورت اتصال به سرور SMTP را وارد میکنیم. این اطلاعات را هنگام ساخت ایمیل جدید در پنل هاست میتوانید پیدا کنید.
1 2 |
$mail->setFrom('your_email@yourdomain.com', 'Your Name'); $mail->addAddress('receiver_email@example.com'); |
در دو خط بالا، آدرس فرستنده و گیرنده را مشخص میکنیم.
1 2 3 4 5 6 7 |
$mail->isHTML(true); $mail->Subject = 'موضوع ایمیل جدید'; $mailBody = '<h2>ایمیل جدید از سایت</h2>'; $mailBody .= 'یک پیام جدید در سایت دریافت شده است'; $mail->Body = $mailBody; |
در ادامه ابتدا تعیین میکنیم که ایمیل از نوع HTML باشد، سپس موضوع ایمیل و متن ایمیل را تنظیم میکنیم.
قدم سوم: ارسال ایمیل و بررسی عدم وجود خطا
اگر اطلاعات بالا را به درستی وارد کرده باشید، با کمک قطعه کد زیر در انتهای فایل، میتوانید ایمیل خود را به مقصد برسانید:
1 2 3 4 5 |
if ( ! $mail->send() ) { echo 'error'; } else { echo 'ok'; } |
نکات جانبی در ارسال ایمیل
- اگر ایمیل بر اساس اطلاعاتی که کاربر در سایت پر میکند، ارسال میشود، بهتر است پیش از ساخت متن ایمیل، اطلاعات دریافت شده را با تابع htmlspecialchars پاکسازی کنید تا مشکلی در زمان ارسال و دریافت رخ ندهد.
- در ارسال ایمیل دقت کنید که معمولا محدودیتهایی در ارسال و دریافت ایمیل وجود دارد. تلاش کنید تا با فیلتر کردن درخواستهای زیاد و محتواهای غیرمجاز، از اسپم شدن ایمیلها پیشگیری کنید.
- ارسال ایمیل برای کسانی که مایل نیستند از شما ایمیلی دریافت کنند، میتواند به شناسایی هاست شما به عنوان یک هاست مخرب منجر شود و ایمیلهای بعدی را هم حتی اگر مفید باشد به اسپم هدایت کند.