ایمیل وردپرس از دو جا میشکند: ارسال نمیشود، یا ارسال میشود و به اسپم میرود. علت مشترک هر دو یکی است: وردپرس بهطور پیشفرض از تابع میل سرور محلی استفاده میکند، نه از یک سرویس احراز هویتشده. با یک App Password و تنظیم SMTP گوگل، هر دو مشکل از بین میرود.
چرا ایمیلهای وردپرس به اسپم میرود یا اصلاً ارسال نمیشود
وقتی فرم تماس یا بازیابی رمز عبور ایمیلی میفرستد، وردپرس آن را به میل سرور محلی هاست میسپارد. آن سرور پیام را با آدرس فرستندهٔ پیشفرض و بدون امضای معتبر دامنه میفرستد. گیرنده، مثل جیمیل، سه چیز را با هم میسنجد: آیا فرستنده مالک دامنه است، آیا پیام امضای دیجیتال دارد، و اعتبار IP ارسالکننده چقدر است. رشدونمو یک هاست اشتراکی، روی هر سه میلنگد.
تفاوت تابع میل محلی با SMTP احراز هویتشده
در حالت پیشفرض، وردپرس پیام را به یک برنامهٔ محلی روی همان سرور تحویل میدهد و همان برنامه مسئول رساندن آن به دنیاست. در حالت SMTP، وردپرس خودش با یک سرویس بیرونی صحبت میکند، احراز هویت میشود و پیام را از دامنهای میفرستد که مالکیتش تأیید شده است. تفاوت در متن پیام نیست؛ در مسیر و هویت فرستنده است.
سه نشانهای که میگوید مشکل از تحویل است، نه از وردپرس
- وردپرس پیام «ایمیل با موفقیت ارسال شد» نشان میدهد، اما هیچ ایمیلی نمیرسد. یعنی تحویل به سرور محلی موفق بوده و مشکل بعد از آن شروع میشود.
- ایمیل بازیابی رمز عبور در پوشهٔ اسپم یا هرزنامه پیدا میشود، نه در صندوق ورودی.
- پیام به بعضی دامنهها میرسد و به بعضی نه. این الگو نشانهٔ اعتبار فرستنده است، نه خرابی کد.
اگر هیچکدام از این سه را نمیبینید و پیام اصلاً ساخته نمیشود، مشکل جای دیگری است؛ خطاهای پاسخ سرور در فهرست راهنماهای رفع خطای وردپرس دستهبندی شدهاند.
ساخت App Password در Gmail برای وردپرس
گوگل اجازه نمیدهد رمز اصلی حساب را در یک برنامهٔ بیرونی مثل وردپرس بگذارید. برای این کار رمز اختصاصی برنامه ساخته شده است: یک رشتهٔ ۱۶ کاراکتری که فقط برای همان برنامه معتبر است.
پیشنیاز: تأیید دو مرحلهای باید فعال باشد
بدون فعال بودن تأیید دو مرحلهای، گزینهٔ ساخت رمز برنامه در حساب گوگل ظاهر نمیشود. مسیرش این است: وارد حساب گوگل شوید، بخش امنیت، سپس تأیید دو مرحلهای را فعال کنید. بعد از آن، در همان صفحهٔ امنیت، گزینهٔ رمزهای برنامه قابل دسترسی میشود.
سه نکته که در عمل مهم میشوند:
- رمز برنامه را با فاصله کپی نکنید. فاصلهها برای خوانایی هستند و باید حذف شوند.
- رمز فقط یک بار نمایش داده میشود. اگر گم شد، همان را حذف و رمز تازه بسازید.
- اگر تأیید دو مرحلهای را خاموش کنید، همهٔ رمزهای برنامهٔ ساختهشده باطل میشوند و وردپرس از ارسال ایمیل بازمیماند.
تفاوت رمز برنامه با رمز اصلی حساب
| ویژگی | رمز اصلی | رمز برنامه |
|---|---|---|
| دامنهٔ دسترسی | کل حساب گوگل | فقط ارسال ایمیل |
| نیاز به تأیید دو مرحلهای | ندارد | اجباری |
| لغو مستقل | با تغییر رمز، همهچیز قطع میشود | هر رمز جدا قابل حذف است |
رمز اصلی را هرگز در وردپرس ذخیره نکنید. رمز برنامه در پایگاه داده ذخیره میشود، پس باید کماثرترین کلید ممکن باشد، نه کلید همهٔ حساب.
تنظیم SMTP با افزونه WP Mail SMTP قدم به قدم
افزونه را نصب و فعال کنید، سپس وارد Setup Wizard افزونه شوید. دو مسیر وجود دارد: اتصال مستقیم به حساب گوگل با احراز هویت OAuth، یا تعریف دستی SMTP. مسیر دستی شفافتر است و خطاهایش قابل خواندناند.
در Setup Wizard، گزینهٔ Other SMTP را انتخاب کنید و مقادیر زیر را وارد کنید:
| فیلد | مقدار |
|---|---|
| Mailer | Other SMTP |
| SMTP Host | smtp.gmail.com |
| Encryption | TLS |
| SMTP Port | 587 |
| Auto TLS | فعال |
| Authentication | فعال |
| SMTP Username | آدرس کامل جیمیل |
| SMTP Password | رمز برنامهٔ ۱۶ کاراکتری |
در بخش تنظیمات فرستنده، ایمیل فرستنده را با همان حساب گوگل یکسان کنید. اگر آدرس دیگری بگذارید، گوگل پیام را یا بازنویسی میکند یا رد. گزینهٔ «Force From Email» را فعال کنید تا افزونههای دیگر نتوانند این مقدار را عوض کنند.
اگر هاست شما اجازهٔ اتصال خروجی روی پورت ۵۸۷ را نداد، نسخهٔ دوم گوگل را امتحان کنید: پورت 465 با رمزنگاری SSL. هر دو مسیر به همان سرور میرسند.
تست ارسال ایمیل و خواندن خطای واقعی
افزونه یک برگهٔ تست دارد. آدرس خودتان را بدهید و نتیجه را ببینید. اگر failed شد، لاگ رویدادها پیام دقیق سرور را نشان میدهد.
برای اینکه بدانید سرور گوگل از یک برنامهٔ بیرونی چه میخواهد، در ۲۶ اکتبر ۲۰۲۶ یک اتصال بدون احراز هویت به سرور SMTP گوگل زدیم و پاسخها را ثبت کردیم. این عین پاسخ سرور است:
$ openssl s_client -connect smtp.gmail.com:587 -starttls smtp -brief
CONNECTION ESTABLISHED
Protocol version: TLSv1.3
# پاسخ سرور پس از EHLO روی پورت 587:
250-smtp.gmail.com at your service
250-SIZE 35882577
250-8BITMIME
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
# سازوکارهای احراز هویت فقط پس از TLS اعلام میشوند:
AUTH LOGIN PLAIN XOAUTH2 OAUTHBEARER XOAUTH
# تلاش برای ارسال بدون احراز هویت:
MAIL FROM:<[email protected]>
530 5.7.0 Authentication Required.سه چیز از این خروجی خوانده میشود. اول، گوگل تا زمانی که اتصال رمزنگاری نشده باشد، سازوکار احراز هویت را حتی اعلام نمیکند؛ پس هر تنظیمی که TLS را خاموش کند، از همان اول شکست میخورد. دوم، سقف اندازهٔ هر پیام ۳۵٬۸۸۲٬۵۷۷ بایت است؛ پیام بزرگتر از این، پیش از هر چیز رد میشود. سوم، کد ۵۳۰ یعنی «احراز هویت لازم است» و دقیقاً همان چیزی است که وقتی رمز برنامه اشتباه یا حذف شده باشد میبینید.
نکتهٔ دیگر: سازوکارهای اعلامشده شامل LOGIN و PLAIN هستند، یعنی همان چیزی که افزونه با نام کاربری و رمز برنامه استفاده میکند. اگر روزی گوگل این دو را بردارد، باید به OAuth مهاجرت کرد.
رفع خطای Could not connect to SMTP host
این خطا یعنی اتصال شبکه برقرار نشد؛ هیچ اعتبارنامهای رد نشد. پس دنبال رمز نگردید.
علتهای رایج اتصال ناموفق
- مسدود بودن پورت خروجی: بسیاری از هاستهای اشتراکی برای مقابله با ارسال انبوه، پورتهای ۵۸۷ و ۴۶۵ را به بیرون میبندند. تا این باز نشود، هیچ تنظیمی جواب نمیدهد.
- ناسازگاری پورت و رمزنگاری: پورت ۵۸۷ با TLS و پورت ۴۶۵ با SSL. جابهجا گذاشتنشان همان خطا را میدهد.
- مشکل حل نام یا IPv6: اگر سرور نام دامنه را درست تبدیل نکند، اتصال به آدرس اشتباه میرود.
- فایروال محلی یا افزونهٔ امنیتی هاست: بعضی فایروالها ترافیک خروجی برنامه را میبندند.
مسیر تشخیص گامبهگام
- از داخل سرور با دستور
openssl s_client -connect smtp.gmail.com:587 -starttls smtp -briefتست کنید. اگر اتصال برقرار شد، مشکل در تنظیمات وردپرس است، نه شبکه. - همان دستور را روی پورت ۴۶۵ بدون سوییچ starttls امتحان کنید تا بفهمید کدام پورت باز است.
- اگر هر دو بسته بودند، از پشتیبانی هاست بخواهید اتصال خروجی به سرور SMTP را باز کند.
- اگر اتصال برقرار شد ولی ارسال نشد، به خروجی برگردید: کد ۵۳۰ یعنی اعتبارنامه، کد ۵۵۰ یا ۵۵۳ یعنی سیاست سرویس.
مسیر جایگزین: اگر هاست اجازهٔ هیچ اتصال خروجی را نمیدهد، از یک سرویس ارسال تراکنشی استفاده کنید که اتصالش از طریق HTTPS انجام میشود، نه SMTP.
ارسال ایمیل ووکامرس با Gmail: نکات اختصاصی
فروشگاه با جیمیل راه میافتد، اما تا حدی. تفاوت ووکامرس با یک فرم تماس در حجم است: هر سفارش چند ایمیل میسازد (تأیید سفارش، تغییر وضعیت، یادآوری، فاکتور)، و در روزهای پرترافیک تعداد از چند ده رد میکند.
- سقف ارسال روزانه: جیمیل برای ارسال انبوه طراحی نشده و سقف روزانه دارد. این سقف بین حساب رایگان و حساب کاری تفاوت دارد و گوگل آن را در مستندات خودش منتشر میکند؛ عدد ثابتی برای همه وجود ندارد و به سابقهٔ حساب هم بستگی دارد. اگر روی سقف حساب کنید، در بدترین روز میشکنید.
- بازنویسی فرستنده: اگر ایمیل فرستنده با حساب گوگل یکی نباشد، پیام با آدرس دیگری میرود یا رد میشود. در ووکامرس این تنظیم در بخش ایمیلها جداگانه است.
- اعتبار مشترک: ارسال تراکنشی از دامنهٔ جیمیل، اعتبار همان دامنه را مصرف میکند. یک کمپین بد میتواند روی ایمیل سفارشها هم اثر بگذارد.
- کش و صف: اگر ایمیلها را در صف میگذارید، رفتار افزونهٔ کش میتواند زمان ارسال را جابهجا کند؛ تنظیمات کش وردپرس و اثر آن بر زمان پاسخ را جدا بررسی کنید.
جایگزین حرفهای برای فروشگاه، یک سرویس ارسال تراکنشی است: سرویسهایی مثل SendGrid، Mailgun، Brevo و Amazon SES با SMTP و API کار میکنند و دامنهٔ شما را با رکوردهای SPF و DKIM تأیید میکنند. تفاوت اصلیشان با جیمیل این است که اعتبار ارسال روی دامنهٔ خودتان ساخته میشود، نه روی دامنهٔ عمومی یک سرویس رایگان. اگر حساب کاری گوگل دارید، رلهٔ SMTP همان سرویس هم گزینهٔ میانی است.
پیش از مهاجرت، مسیر رفع خطاهای رایج ارسال را در راهنمای رفع مشکل ایمیل وردپرس مرور کنید تا بدانید مشکل از SMTP است یا از خود پیام.
سوالات متداول دربارهٔ ارسال ایمیل وردپرس با Gmail
آیا بدون تأیید دو مرحلهای میتوانم رمز برنامه بسازم؟
نه. گزینهٔ رمز برنامه در حساب گوگل تا زمانی که تأیید دو مرحلهای فعال نشده باشد نمایش داده نمیشود. اول تأیید دو مرحلهای را روشن کنید، بعد رمز بسازید.
میتوانم رمز اصلی حساب گوگل را در وردپرس بگذارم؟
نه. گوگل این کار را رد میکند و رمز اصلی کل حساب را در اختیار برنامه قرار میدهد. رمز برنامه فقط اجازهٔ ارسال ایمیل میدهد و جداگانه قابل لغو است.
تفاوت پورت ۵۸۷ و ۴۶۵ چیست؟
هر دو در تست ما به یک سرور رسیدند و TLSv1.3 برقرار شد. در ۵۸۷ اتصال بدون رمزنگاری باز میشود و بعد به TLS ارتقا مییابد؛ در ۴۶۵ از همان ابتدا رمزنگاریشده است. جابهجا گذاشتن پورت و رمزنگاری، خطای اتصال میدهد.
چرا با وجود تنظیم درست، ایمیلها به اسپم میروند؟
تحویل به سرور مقصد رسیده، اما اعتبار فرستنده کافی نبوده است. جیمیل ارسالکنندهٔ تراکنشی محسوب نمیشود و اعتبار آدرس فرستنده و محتوای پیام هم اثر دارد. برای حجم بالا از سرویس تراکنشی با دامنهٔ تأییدشده استفاده کنید.

