یکی از رایجترین مشکلات، این است که کاربر فرم تماس را پر میکند، پیام «ارسال شد» میبیند، اما شما هیچ ایمیلی دریافت نمیکنید. علت معمولاً روش ارسال نادرست است.
چرا تابع mail() جواب نمیدهد؟
وردپرس بهطور پیشفرض با تابع PHP mail ایمیل میفرستد. این روش بدون احراز هویت و بدون امضای SPF/DKIM کار میکند، به همین دلیل سرورهای مقصد (جیمیل و...) آن را بیاعتماد دانسته و در Spam میگذارند یا کلاً رد میکنند.
راهحل: ارسال از طریق SMTP
یک افزونهٔ SMTP مثل WP Mail SMTP نصب کنید و روی آن حساب یک ایمیل واقعی روی دامنهٔ خودتان را ست کنید تا ارسال با احراز هویت انجام شود:
- SMTP Host: mail.yourdomain.com
- Port: ۴۶۵ با SSL یا ۵۸۷ با TLS
- Username: آدرس کامل ایمیل فرستنده
- Password: رمز همان ایمیل
- مخاطب «از طرف» و «پاسخ به» را روی همان ایمیل بگذارید.
تست نهایی
با گزینهٔ Email Test افزونه یک ایمیل آزمایشی بفرستید و پوشهٔ Spam را هم چک کنید. اگر باز نرسید، مطمئن شوید SSL هاست فعال است و رکورد SPF شامل این سرور هست.
نکتهٔ دامنهٔ ir
روی برخی شبکهها پورت ۲۵ بسته است؛ همان پورتهای امن ۴۶۵/۵۸۷ را استفاده کنید. اگر مشکل ادامه داشت، از پشتیبانی پیبیهاست بخواهید وضعیت ارسال SMTP و لاگ mail را بررسی کنند.