وردپرس یک روش بومی برای ارسال ایمیلها دارد. این روش از تابع PHP mail برای ارسال انواع خبرنامه، بازنشانی رمز عبور یا هر ایمیلی که برای مخاطبانتان میفرستید، استفاده میکند. اگرچه از نظر تئوری این روش کافی بهنظر میرسد، اما اصلاً بینقص نیست.
در وردپرس، ارسال ایمیل با SMTP یک جایگزین بسیار بهتر است و راهاندازی آن هم خیلی سخت نیست. در این مقاله از سری مقالات آموزش وردپرس به شما نشان میدهیم چطور این کار را هم با افزونه و هم بدون افزونه انجام دهید.
راهنمای مطالعه:
SMTP چیست؟
SMTP یا پروتکل ساده انتقال ایمیل قوانینی برای ارسال ایمیل تعیین میکند. این پروتکل امکان تبادل ایمیل میان انواع مختلف کامپیوترها، سرورها و شبکهها را فراهم میآورد.
یک سرور SMTP یک برنامه است که بر اساس پروتکل SMTP عمل میکند و ایمیلها را از فرستنده به گیرنده ارسال میکند. برای سادهتر کردن این فرایند، سرور SMTP ایمیلها را از کلاینت ایمیل (Gmail، Yahoo!، Outlook و غیره) دریافت میکند و در صورت نیاز آنها را به سایر سرورهای SMTP منتقل میکند. سپس ایمیلها توسط سرور SMTP گیرنده دریافت شده و با استفاده از سرورهای دریافت ایمیل (POP3 یا IMAP) تحویل داده میشوند.
چرا استفاده از SMTP برای ارسال ایمیلها در وردپرس ایده خوبی است؟
همانطور که ابتدای کار گفتیم، وردپرس برای ارسال ایمیلها از تابع PHP mail() استفاده میکند. این روش به چند دلیل مشکلساز است:
- این روش بیشتر برای ایمیلهای ساده و متنی مناسب است. امکانات HTML بسیار محدود است و نمیتوانید پیوست اضافه کنید یا تصویر جاسازی کنید. در نهایت ایمیلهای یکنواخت و بدون المانهای طراحی خواهید داشت.
- مشکلات جدی در تحویل ایمیل دارد. تابع PHP mail() هدرهای ایمیل را بهدرستی ارسال نمیکند. در نتیجه ارائهدهندگان خدمات اینترنتی (ISP) ایمیلهای ارسالی از طریق این روش را بهعنوان اسپم علامت میزنند یا کاملاً رد میکنند. پس اگر مثلاً با استفاده از PHP mail() بهصورت خودکار مطالب جدید را برای مشترکینتان ایمیل کنید، احتمال زیادی وجود دارد که ایمیلهایتان به پوشه اسپم بروند.
- امکان ارسال ایمیل از طریق سرورهای خارجی را ندارد. حتی اگر تنظیمات SMTP را پیکربندی کنید، فقط روی localhost یا راهحلهای مشابه قابل استفاده خواهد بود. تابع PHP mail() از احراز هویت SMTP هم پشتیبانی نمیکند.
سادهترین راه حل، تنظیم وردپرس برای ارسال ایمیل با یک سرور SMTP است. این روش نیاز به احراز هویت هدر دارد و انتقال ایمن از طریق SSL و TLS را پشتیبانی میکند. این یعنی شانس کمتری برای برخورد با مشکلات تحویل ایمیل خواهید داشت، مخصوصاً اگر از یک سرویس SMTP قابلاعتماد استفاده کنید و همه چیز را درست پیکربندی کنید.
حالا بیایید ببینیم چطور میتوان در وردپرس با استفاده از سرور SMTP ایمیل ارسال کرد.
پیکربندی SMTP در وردپرس بدون افزونه
میتوانید با کمی کدنویسی و استفاده از PHPMailer، در وردپرس بدون افزونه SMTP را پیکربندی کنید. PHPMailer یک کتابخانهٔ PHP است که برای رفع محدودیتهای تابع mail() ساخته شده است. این کتابخانه از ایمیلهای پیچیده (شامل HTML و تصاویر درونخطی) و پیوستها پشتیبانی میکند و مهمتر از همه به شما اجازه میدهد با هر سرور SMTP ایمیل بفرستید.
برای کار کردن PHPMailer به یک سرور SMTP فعال نیاز داریم. در نمونهٔ کد زیر از SMTP جیمیل برای ارسال ایمیل در وردپرس استفاده خواهیم کرد. اما قبل از شروع، باید طبق این دستورالعمل یک رمز برنامه (app password) بسازید. در غیر این صورت احراز هویت موفقیتآمیز نخواهد بود.
حالا به شاخهٔ اصلی سایتتان بروید و فایل wp-config.php را پیدا کنید. از نمونهٔ کد زیر برای پیکربندی تنظیمات SMTP وردپرس با استفاده از اطلاعات جیمیل استفاده کنید.
define( 'SMTP_username', 'your-email@gmail.com' );
define( 'SMTP_password', 'your-gmail-app-password' );
define( 'SMTP_server', 'smtp.gmail.com' );
define( 'SMTP_FROM', 'your-sender-email@gmail.com' );
define( 'SMTP_NAME', 'Your Name' );
define( 'SMTP_PORT', '587' );
define( 'SMTP_SECURE', 'tls' );
define( 'SMTP_AUTH', true );
define( 'SMTP_DEBUG', 0 );
به ویرایشگر قالب بروید و فایل functions.php را برای ویرایشهای بعدی پیدا کنید. توجه داشته باشید که توصیه میشود تغییرات را در قالب فرزند اعمال کنید تا از بروز اشکالات در قالب اصلی جلوگیری شود. اسکریپت زیر را به فایل functions.php اضافه کنید.
function my_phpmailer_smtp( $phpmailer ) {
$phpmailer->isSMTP();
$phpmailer->Host = SMTP_server;
$phpmailer->SMTPAuth = SMTP_AUTH;
$phpmailer->Port = SMTP_PORT;
$phpmailer->Username = SMTP_username;
$phpmailer->Password = SMTP_password;
$phpmailer->SMTPSecure = SMTP_SECURE;
$phpmailer->From = SMTP_FROM;
$phpmailer->FromName = SMTP_NAME;
}
add_action( 'phpmailer_init', 'my_phpmailer_smtp' );
تنظیمات را ذخیره کنید و کار تمام است. حالا وردپرس شما از طریق سرور SMTP ایمیل ارسال میکند. برای جزئیات بیشتر، نحوه ارسال ایمیل در وردپرس با استفاده از تابع PHP را ببینید.
استفاده از پلاگینها برای تنظیم SMTP وردپرس
یک راه سادهتر برای پیکربندی وردپرس جهت ارسال ایمیلها از طریق SMTP، استفاده از پلاگینهای اختصاصی است. این پلاگینها نیاز به مهارت برنامهنویسی ندارند – حتی بدون کمک توسعهدهندهها هم میتوانید آنها را تنظیم کنید.
WP Mail SMTP

WP Mail SMTP محبوبترین افزونه برای راهاندازی SMTP است. این افزونه به PHP mail() دستور میدهد تا از یکی از میلرهای یکپارچه یا تنظیمات SMTP دلخواه استفاده کند. با این کار مشکلات تحویل ایمیل تابع بومی را حل میکند.
میتوانید بهراحتی WP Mail SMTP را با رفتن به تب â افزونهها â در داشبورد وبسایت وردپرس خود و کلیک روی â افزودنâ نصب کنید. عبارت âWP Mail SMTPâ را در کادر جستجو تایپ کنید، روی â هماکنون نصب کنâ کلیک کنید و سپس â فعالسازی â را بزنید.

پس از نصب افزونه، میتوانید سرویس ایمیل را از داشبورد یا با استفاده از جادوگر راهاندازی پیکربندی کنید. هر دو روش مفهوم یکسانی دارند و فقط طراحیشان متفاوت است. ما ترجیح میدهیم از داشبورد استفاده کنیم، پس در اینجا تنظیمات را از طریق داشبورد انجام میدهیم.
دو گزینه اصلی داریم:
- پیکربندی WP Mail SMTP با سرویسهای SMTP شخص ثالث
- استفاده از سرویسدهنده ایمیل داخلی
اولین مرحله برای هر دو گزینه یکسان است، پس بیایید همینجا آن را مرور کنیم. تنظیمات WP Mail SMTP را باز کنید و در تب «اتصال اصلی» به بخش From Email و From Name بروید.
در فیلد From Email، ایمیلی را وارد کنید که برای ارسال ایمیلها استفاده میشود. این میتواند یک حساب رایگان باشد، اما برای بهبود ارسال توصیه میکنیم از ایمیلی با دامنه اختصاصی استفاده کنید. برای اینکه مطمئن شوید این ایمیل در تمام پیامها اعمال شود، گزینه Force From Email را تیک بزنید.
در فیلد From Name، نامی را وارد کنید که در ایمیلهای ارسالی نمایش داده میشود. باز هم، برای جلوگیری از تغییر این تنظیم توسط افزونههای دیگر (مثلاً ووکامرس یا افزونه خبرنامه وردپرس)، گزینه Force From Name را فعال کنید.

بعد از اینکه این کار تموم شد، میتونیم بریم سراغ راهاندازی mailer تا وردپرس با استفاده از این افزونه ایمیلها رو ارسال کنه.
راهاندازی ایمیل WP با سرویسهای SMTP شخص ثالث
استفاده از یک سرویس SMTP شخص ثالث مطمئن برای اطمینان از رسیدن ایمیلهای وردپرس به صندوق ورودی گیرندگان ضروری است. با قابلیت Other SMTP در افزونه WP Mail SMTP میتوانید بهراحتی سرویسدهنده ایمیل مورد علاقهتان را متصل کنید. در آموزش امروز از سرویس SMTP مطمئن Mailtrap استفاده خواهیم کرد.
اما قبل از اینکه آن را با وبسایت وردپرسی خود یکپارچه کنید، ابتدا باید یک حساب کاربری بسازید و با راهنمای درونبرنامهای دامنهتان را تأیید کنید. برای این کار لازم است به رکوردهای DNS دامنهتان دسترسی داشته باشید. در آنها باید رکوردهای آماده SPF، DKIM و DMARC را اضافه کنید و سپس روی «تأیید دامنه» کلیک کنید.

وقتی حسابتان فعال و آماده شد، دوباره به «دامنههای ارسال» برگردید و روی دامنهٔ تأییدشده کلیک کنید. سپس روی «API و SMTP» کلیک کرده، گزینهٔ «SMTP» را انتخاب و اطلاعات ورود را کپی کنید.

به WP Mail SMTP برگردید و در تب Mailer گزینهٔ Other SMTP را انتخاب کنید.

یک سری فیلد خالی مشاهده خواهید کرد. لطفاً آنها را با مشخصات SMTP سرویس Mailtrap پر کنید:
- میزبان SMTP: live.smtp.mailtrap.io
- رمزنگاری: TLS (میتوانید SSL را هم انتخاب کنید، اما استفاده از TLS توصیه میشود)
- پورت SMTP: 587 (بهصورت خودکار پر خواهد شد)
- احراز هویت: روشن کنید
- نام کاربری SMTP: api
- رمز عبور SMTP: رمز عبور SMTP خود را وارد کنید

روی «ذخیره تنظیمات» کلیک کنید. یک پنجرهٔ تأیید خواهید دید. اگر همهچیز بهدرستی پیکربندی شده و وردپرس ایمیل SMTP را ارسال میکند، به حساب Mailtrap خود برگردید و روی «تأیید پیکربندی» کلیک کنید.

استفاده از Mailer داخلی
حالا بریم سراغ گزینهی دوم یکپارچهسازی – استفاده از Mailer داخلی تا مطمئن بشیم وردپرس ایمیلهاش رو از طریق SMTP ارسال میکنه. با این روش میتونید یکی از Mailerهای WP Mail SMTP از جمله SendLayer، SMTP.com، Sendinblue، Amazon SES و غیره رو انتخاب کنید. این روش همچنین برای راهاندازی SMTP جیمیل در وردپرس یا حتی Microsoft 365/Outlook هم کاربرد داره.
روند یکپارچهسازی برای بیشتر ESPها مشابهه. البته باید یک حساب کاربری فعال داشته باشید تا بتونید اون رو با WP Mail SMTP یکپارچه کنید. کافیه فقط Mailer مورد نظر رو انتخاب کرده و کلید API حسابتون رو وارد کنید. دستورالعملهای لازم در مستندات رسمی ESP در دسترس هستند.

با برخی از سرویسهای ایمیل ممکن است لازم باشد دامنهی ارسال، شناسهی جریان پیام یا منطقهی خود را وارد کنید. دستورالعملهای کامل برای هر سرویس ایمیل را میتوانید اینجا مشاهده کنید.
افزونه وردپرس هاباسپات

افزونه WP Mail SMTP عمدتاً برای پیکربندی وردپرس و ارسال ایمیلها با استفاده از SMTP کاربرد دارد. در مقابل، افزونه HubSpot WordPress Plugin یک افزونه کامل مدیریت ارتباط با مشتری (CRM) برای وبسایت وردپرس شماست. با کمک آن میتوانید از طریق فرمهای ثبتنام لیست ایمیل بسازید، با بازدیدکنندگان از طریق چت زنده گفتگو کنید و معیارهای مهم را تحلیل کنید.
مهمتر از همه، افزونه HubSpot WordPress Plugin این امکان را در اختیارتان قرار میدهد که ESP دلخواهتان را برای ارسال ایمیلهای بازاریابی (دستی یا خودکار) به مخاطبینتان یکپارچه کنید. همچنین این افزونه قالبهای داخلی و ویرایشگر کشیدن و رها کردن دارد. پس اگر به دنبال چیزی فراتر از پیکربندی SMTP هستید، HubSpot میتواند انتخاب خوبی برای شما باشد.
SMTP جیمیل

افزونه Gmail SMTP یکی دیگر از افزونههای وردپرس برای ارسال ایمیل از طریق SMTP است، اما بهصورت اختصاصی برای جیمیل طراحی شده. این افزونه مبتنی بر PHPMailer و تابع داخلی wp_mail است، یعنی شما میتوانید از همه قابلیتهای آنها بهره ببرید.
افزونه Gmail SMTP با استفاده از API و پروتکل OAuth 2.0 به جیمیل متصل میشود. به این ترتیب نیازی نیست نام کاربری یا رمز عبور وارد کنید. با این حال، باید یک اپلیکیشن در Google Developer Console بسازید و اطلاعات OAuth را تنظیم کنید. خوشبختانه، صفحهٔ رسمی افزونه دستورالعملهای لازم را فهرست کرده است.
پست اسامتیپی میلر

آخرین گزینهای که اینجا داریم، Post SMTP Mailer است. این افزونه کاربرپسند به شما امکان میدهد سرویس ESP خود را از طریق SMTP یا API یکپارچه کنید. نسخه رایگان از Mailgun، SendGrid، Mandrill (که حالا Mailchimp Transactional Email نام دارد)، SparkPost، Postmark، Sendinblue و APIهای Gmail پشتیبانی میکند. نسخه پرو هم دسترسی به Zoho Mail، Amazon SES و Microsoft 365 را فراهم میکند.
علاوه بر این، Post SMTP Mailer لاگ ایمیلها را ذخیره میکند و اگر مشکلی پیش بیاید، از طریق Chrome برایتان اعلان ارسال میکند.
چطور ایمیلها را در وردپرس تست کنیم؟
برای اطمینان از اینکه تنظیماتتان بتواند ایمیلها را از وردپرس با موفقیت ارسال کند، باید ایمیلهایتان را تست کنید. بیشتر افزونهها بهصورت پیشفرض قابلیت تست برای بررسیهای اولیه را دارند.
با WP Mail SMTP، مثلاً میتوانید به تب «تست ایمیل» بروید، آدرس ایمیل خود را وارد کنید و روی «ارسال ایمیل» کلیک کنید. اگر تنظیمات درست باشد، باید یک ایمیل تستی در صندوق ورودی خود ببینید. در غیر این صورت، WP Mail SMTP یک گزارش خطا نمایش میدهد.

با این حال، تست عملکرد ارسال ایمیل همیشه کافی نیست. ضروری است که HTML را آزمایش کنید، هدرها را اعتبارسنجی کرده و امتیاز اسپم خود را قبل از ارسال ایمیلها به مخاطبانتان بررسی کنید. اینجاست که راهحل دیگر Mailtrap، تست ایمیل به کمک شما میآید. این سرویس ایمیلهای وردپرس شما را در یک صندوق پست مجازی ثبت میکند و مطمئن میشود هیچکدام از آنها به صندوق ورودی گیرندگان نرسند.
مشابه ارسال ایمیل، تست ایمیل را نیز میتوانید با استفاده از اطلاعات کاربری SMTP در افزونههای وردپرس ادغام کنید. این اطلاعات را در حساب کاربریتان با باز کردن «صندوق ورودی من» و کلیک روی «نمایش اطلاعات ورود» خواهید یافت. در اینجا نمونهای از تنظیمات SMTP را میبینید:
- میزبان SMTP: sandbox.smtp.mailtrap.io
- رمزنگاری: TLS یا SSL
- پورت SMTP: 465 یا 587
- احراز هویت: فعال
- نام کاربری SMTP: <نام کاربری SMTP شما>
- رمز عبور SMTP: <رمز عبور SMTP شما>
در عرض چند ثانیه، اگر پیکربندی درست باشد، ایمیل آزمایشی شما در صندوق پست مجازی ظاهر میشود.

همانطور که دیدیم، برای پیکربندی وردپرس جهت ارسال ایمیل با SMTP، دو گزینه اصلی دارید: کدنویسی با PHPMailer یا استفاده از افزونهها. گزینه اول برای توسعهدهندگان مناسبتر است و گزینه دوم برای بازاریابها عالیست. هر روشی را که انتخاب کنید، نکته اصلی این است که راهی برای رفع محدودیتهای PHP بیابید.
جمع بندی
تمام افزونههایی که بالاتر معرفی کردیم به شما این امکان را میدهند که از SMTP جیمیل استفاده کنید. هرچند برای ارسال ایمیلهای گاهبهگاه کافیست، اما بهتر است برای ارسال حجم بالای ایمیل از یک سرویس ایمیل معتبر (ESP) استفاده کنید. در غیر این صورت احتمال اینکه ایمیلهای شما بهعنوان اسپم علامتگذاری شوند، زیاد است.
دیدگاه و پرسش