حل مشکل ارسال ایمیل در لوکال هاست XAMPP، WAMP و MAMP
- افزونه وردپرسمقالات آموزشی
- بروزرسانی شده در

اگه وردپرس رو روی XAMPP، WAMP یا MAMP نصب کرده باشید، احتمالاً فرم تماس، بازیابی رمز یا اعلانهای سایت هیچ ایمیلی نمیفرستن. دلیلش معمولاً خرابی وردپرس نیست. لوکال هاست روی کامپیوتر شما اجرا میشه و بهصورت پیشفرض سرویس آمادهای برای تحویل ایمیل به اینترنت نداره.
توی این راهنما اول دلیل مشکل رو خیلی ساده بررسی میکنیم. بعد با افزونه WP Mail SMTP و حساب جیمیل، ارسال واقعی ایمیل رو راه میاندازیم. روش امن OAuth رو بهعنوان انتخاب اصلی یاد میگیرید و روش Other SMTP با App Password رو هم بهعنوان راه جایگزین میبینید. در آخر هم ایمیل آزمایشی میفرستیم و خطاهای رایج رو برطرف میکنیم.
آنچه در این مقاله میخوانید
چرا وردپرس روی لوکال هاست ایمیل نمیفرسته؟
وردپرس برای ساختن ایمیل از قابلیتی به نام تابع ایمیل PHP استفاده میکنه. تابع یعنی بخشی از کد که یک کار مشخص رو انجام میده. این تابع میتونه پیام رو آماده کنه، ولی برای تحویل واقعی اون به یک سرویس ارسال ایمیل نیاز داره.
روی بیشتر هاستهای اینترنتی، شرکت میزبان بخشی از این تنظیمات رو آماده میکنه. ولی XAMPP، WAMP و MAMP محیط آزمایشی روی کامپیوتر خودتون هستن و معمولاً سرور ایمیل کامل ندارن. برای همین ممکنه وردپرس پیام رو بسازه، ولی چیزی به صندوق گیرنده نرسه.
راهحل اصلی توی هر سه محیط تقریباً یکسانه: ایمیلهای وردپرس رو از راه SMTP بفرستید. SMTP یک روش استاندارد برای تحویل ایمیله. افزونه WP Mail SMTP پیامهای وردپرس رو به یک سرویس واقعی مثل جیمیل تحویل میده تا اون سرویس ارسال رو انجام بده.
ارسال واقعی با ثبت ایمیل فرق داره. ابزار ثبت ایمیل فقط نشون میده وردپرس چه پیامی ساخته و برای چه کسی آماده کرده. ولی SMTP ایمیل رو واقعاً به آدرس گیرنده میفرسته. اگه میخواید رسیدن فرمها، بازیابی رمز یا اعلان فروشگاه رو بررسی کنید، ارسال واقعی انتخاب مناسبتریه.
اگه فقط میخواید کد PHP و تابع ایمیل رو بهتر بشناسید، راهنمای ارسال ایمیل با PHP و تابع mail() هم بهتون کمک میکنه.
قبل از شروع به چه چیزهایی نیاز دارید؟
- سایت وردپرسی شما باید روی لوکال هاست درست باز بشه و Apache و پایگاه داده فعال باشن.
- باید بتونید وارد پیشخوان وردپرس بشید و افزونه نصب کنید.
- برای این آموزش به یک حساب جیمیل و دسترسی به تنظیمات حساب Google نیاز دارید.
- کامپیوترتون باید هنگام اتصال حساب و فرستادن ایمیل به اینترنت وصل باشه.
- باید یکی از دو روش Google / Gmail یا Other SMTP رو انتخاب کنید.
اگه امنیت و نگهنداشتن رمز داخل وردپرس براتون مهمتره، روش Google / Gmail با OAuth رو انتخاب کنید. OAuth یعنی افزونه بهجای نگهداشتن پسورد اصلی، از اجازه دسترسی حساب Google استفاده میکنه. اگه نمیخواید مراحل Google Cloud رو انجام بدید، Other SMTP راه جایگزینه؛ ولی برای اون باید تأیید دومرحلهای رو فعال کنید و App Password یا رمز برنامه بسازید. توی هیچکدوم از این روشها پسورد اصلی حساب Google رو داخل افزونه وارد نکنید.
روش پیشنهادی: اتصال Gmail به WP Mail SMTP با OAuth
افزونه WP Mail SMTP رو نصب و فعال کنید
از پیشخوان وردپرس به «افزونهها ← افزودن افزونه تازه» برید. عبارت WP Mail SMTP رو جستوجو کنید، افزونه رو نصب کنید و بعد روی «فعالکردن» بزنید.

بعد از فعالسازی، از منوی پیشخوان وارد «WP Mail SMTP ← Settings» بشید و صفحه تنظیمات اتصال ایمیل رو باز کنید. ممکنه افزونه راهانداز مرحلهای خودش رو هم نشون بده. میتونید همون راهانداز رو ادامه بدید یا از صفحه کامل Settings تنظیمات رو انجام بدید. نام و جای بعضی گزینهها ممکنه بین نسخههای افزونه یا رابط فارسی و انگلیسی کمی فرق کنه.

تنظیمات فرستنده ایمیل رو کامل کنید
در صفحه تنظیمات اتصال، فیلد From Email یا «ایمیل فرستنده» رو پیدا کنید و آدرس جیمیلی رو بنویسید که قراره به سایت وصل بشه. بهتره ایمیل فرستنده با حساب متصلشده یکی باشه تا با خطای احراز هویت روبهرو نشید.

اگه فیلد From Name یا «نام فرستنده» توی نسخه افزونه شما دیده میشه، نامی مثل نام سایت آزمایشی یا «سایت تستی» بنویسید. این نام کنار آدرس فرستنده دیده میشه و کمک میکنه ایمیلهای تست رو سریعتر تشخیص بدید. اگه این فیلد رو نمیبینید، مطمئن بشید داخل صفحه Settings خود افزونه هستید، نه صفحه «تنظیمات ← عمومی» وردپرس. بعد راهانداز مرحلهای رو ببندید و صفحه کامل تنظیمات اتصال رو بررسی کنید. ممکنه محل این گزینه در نسخه فعلی افزونه تغییر کرده باشه.
اگه گزینههای Force From Email یا Force From Name در صفحه شما هستن، با فعالکردنشون افزونهها و قالبهای دیگه نمیتونن مقدار فرستنده رو عوض کنن. اگه فقط یک فرستنده دارید، فعالکردن این گزینهها معمولاً تنظیمات رو یکدستتر نگه میداره.
Google / Gmail رو بهعنوان Mailer انتخاب کنید
در بخش Mailer، گزینه Google / Gmail رو انتخاب کنید. Mailer یعنی سرویسی که ایمیل رو از وردپرس تحویل میگیره و میفرسته. برای راهاندازی دستی این روش به Client ID و Client Secret نیاز دارید. این دو مقدار برنامه شما رو برای Google شناسایی میکنن.

رابط افزونه ممکنه گزینه راهاندازی سریع هم داشته باشه. دسترسی به بعضی روشهای سادهتر میتونه به نسخه یا طرح افزونه بستگی داشته باشه. اگه راهاندازی سریع برای شما فعال نبود، از مراحل دستی زیر استفاده کنید.
اتصال امن حساب Google رو راهاندازی کنید
یک زبانه تازه باز کنید و وارد Google Cloud Console بشید. رابط Google Cloud گاهی تغییر میکنه، پس ممکنه نام یا جای بعضی منوها با توضیح زیر کمی فرق داشته باشه. مقدارهایی مثل Redirect URI رو همیشه از صفحه فعلی افزونه خودتون کپی کنید. بعد این مراحل رو بهترتیب انجام بدید:
- یک پروژه تازه بسازید یا یکی از پروژههای فعلی رو انتخاب کنید. نام پروژه فقط برای تشخیص خودتونه.
- بخش API Library رو باز کنید، Gmail API رو پیدا کنید و روی Enable بزنید. API راه ارتباط کنترلشده افزونه با جیمیل شماست.
- بخش تنظیمات رضایت OAuth رو باز کنید. نام این قسمت ممکنه در رابط فعلی Google تغییر کرده باشه. اطلاعاتی مثل نام برنامه، ایمیل پشتیبانی و مواردی رو که Google درخواست میکنه کامل کنید.
- اگه پروژه در حالت آزمایشی از شما Test user میخواد، حساب جیمیلی رو که قراره به وردپرس وصل کنید به فهرست کاربران آزمایشی اضافه کنید.
- وارد بخش Credentials بشید و یک OAuth Client ID از نوع Web application بسازید.
- به صفحه تنظیمات WP Mail SMTP برگردید و Redirect URI نمایشدادهشده رو دقیقاً کپی کنید. Redirect URI آدرسیه که Google بعد از تأیید دسترسی، شما رو به اون برمیگردونه.
- همون آدرس رو بدون تغییر در بخش Authorized redirect URIs مربوط به Client ID قرار بدید و تنظیمات Google رو ذخیره کنید.
- Client ID و Client Secret ساختهشده رو کپی کنید و در فیلدهای همنام داخل WP Mail SMTP بذارید.
نام بخشها و جای بعضی گزینهها ممکنه با تغییر رابط Google جابهجا بشه. راهنمای رسمی راهاندازی Gmail در WP Mail SMTP جزئیات رابط فعلی افزونه رو نشون میده.
حساب Gmail رو به وردپرس متصل کنید
بعد از واردکردن Client ID و Client Secret، تنظیمات افزونه رو ذخیره کنید. حالا روی دکمه اتصال یا اجازه ارسال ایمیل با حساب Google بزنید.
حساب درست رو انتخاب کنید و دسترسی لازم برای ارسال ایمیل رو تأیید کنید. اگه Google هشدار مربوط به برنامه آزمایشی نشون داد، بررسی کنید با همون حسابی وارد شدید که بهعنوان Test user اضافه کردید. اگه خطای redirect_uri_mismatch رو دیدید، Redirect URI داخل Google Cloud رو با آدرسی که افزونه نشون میده کاراکتربهکاراکتر مقایسه کنید. تفاوت در پروتکل، دامنه، مسیر یا حتی یک نویسه اضافه میتونه اتصال رو متوقف کنه.
تنظیمات افزونه رو ذخیره کنید
به صفحه تنظیمات افزونه برگردید و مطمئن بشید حساب Google بهعنوان اتصال فعال دیده میشه. بعد روی Save Settings بزنید. حالا وردپرس آمادهست تا ایمیلها رو از راه حساب متصلشده بفرسته.
روش جایگزین: تنظیم Gmail با Other SMTP
اگه نمیخواید پروژه Google Cloud بسازید، میتونید از Other SMTP استفاده کنید. این روش اطلاعات سرور SMTP جیمیل و یک App Password رو داخل افزونه نگه میداره. App Password یک رمز جدا برای برنامهست و جای پسورد اصلی حساب رو میگیره.
تأیید دومرحلهای حساب Google رو فعال کنید
وارد تنظیمات حساب Google بشید، بخش Security رو باز کنید و 2-Step Verification یا تأیید دومرحلهای رو فعال کنید. با این قابلیت، ورود به حساب فقط به دانستن پسورد وابسته نیست و یک مرحله تأیید دیگه هم داره.
برای وردپرس App Password بسازید
بعد از فعالشدن تأیید دومرحلهای، بخش App Passwords رو در حساب Google باز کنید. یک رمز تازه برای سایت آزمایشی بسازید و اون رو همون موقع در جای امنی کپی کنید. این رمز فقط برای اتصال افزونهست و نباید پسورد اصلی Gmail رو جای اون بنویسید.
اگه گزینه App Passwords رو نمیبینید، اول مطمئن بشید تأیید دومرحلهای کاملاً فعال شده و نوع حساب شما اجازه ساخت رمز برنامه رو میده. بعضی حسابهای کاری یا آموزشی با سیاست مدیر مجموعه محدود میشن.
مشخصات SMTP جیمیل رو وارد کنید
در صفحه تنظیمات WP Mail SMTP، گزینه Other SMTP رو بهعنوان Mailer انتخاب کنید. بعد مقدارها رو به این شکل وارد کنید:
- SMTP Host:
smtp.gmail.com - Encryption: TLS
- SMTP Port:
587 - Authentication: روشن
- SMTP Username: آدرس کامل Gmail، مثل
yourname@gmail.com - SMTP Password: رمز برنامهای که ساختید، نه پسورد اصلی حساب
در این تنظیم، اتصال روی پورت 587 شروع میشه و با STARTTLS رمزگذاری میشه؛ افزونه ممکنه این گزینه رو فقط با نام TLS نشون بده. بین حروف آدرس ایمیل یا App Password فاصله اضافه نذارید.
تنظیمات رو ذخیره کنید
روی Save Settings بزنید. بعد از ذخیره، وارد صفحه تست ایمیل بشید و ارسال رو بررسی کنید. برای جزئیات بیشتر هم میتونید راهنمای رسمی تنظیم Other SMTP در WP Mail SMTP رو ببینید.
چطور ارسال ایمیل وردپرس رو آزمایش کنید؟
- از پیشخوان وردپرس وارد «WP Mail SMTP ← Tools» بشید.
- زبانه Email Test رو باز کنید.
- یک آدرس ایمیل واقعی و در دسترس رو در بخش Send To وارد کنید.
- اگه گزینه HTML روشنه، برای تست عادی همون حالت رو نگه دارید.
- روی Send Email بزنید و چند لحظه صبر کنید.
- صندوق ورودی گیرنده و پوشه Spam یا Junk رو بررسی کنید.

نمایش پیام موفقیت یعنی سرویس ارسال، پیام آزمایشی افزونه رو پذیرفته. بااینحال، حتماً رسیدن واقعی پیام به صندوق گیرنده رو هم بررسی کنید. اگه افزونه خطا نشون داد، متن خطا رو کامل بخونید؛ معمولاً نام میزبان، پورت، مجوز Google یا مشکل اتصال رو مشخص میکنه.
یادتون نره Email Test فقط اتصال WP Mail SMTP رو بررسی میکنه. بعد از موفقشدن این تست، فرم تماس، ایمیل بازیابی رمز و اعلانهای فروشگاه رو هم جداگانه اجرا کنید. ممکنه خود فرم یا افزونهای که اعلان رو میسازه تنظیمات اشتباهی داشته باشه، حتی وقتی اتصال SMTP سالمه.
رفع خطاهای رایج ارسال ایمیل در لوکال هاست
ایمیل آزمایشی ارسال نمیشه
- مطمئن بشید Apache روشنه و سایت وردپرسی بدون خطا باز میشه.
- اتصال اینترنت رو بررسی کنید؛ لوکالبودن سایت به این معنی نیست که SMTP بدون اینترنت کار میکنه.
- فایروال، آنتیویروس یا شبکه شرکت ممکنه اتصال خروجی به پورت 587 رو ببنده.
- در روش Other SMTP، میزبان
smtp.gmail.com، گزینه TLS و پورت 587 رو دوباره بررسی کنید. - آدرس کامل Gmail رو بهعنوان نام کاربری وارد کنید و App Password رو بدون فاصله اضافه بذارید.
Google اجازه اتصال به حساب رو نمیده
اگه از Other SMTP استفاده میکنید، تأیید دومرحلهای باید فعال باشه و باید App Password رو بهجای پسورد اصلی Gmail وارد کنید. ورود با نام کاربری و پسورد معمولی برای این اتصال انتخاب درستی نیست.
در روش OAuth، حساب انتخابشده، Test user، Client ID و Redirect URI رو بررسی کنید. اگه خطای redirect_uri_mismatch میبینید، آدرس ثبتشده در Google Cloud باید دقیقاً با Redirect URI داخل افزونه یکسان باشه.
ایمیل ارسال میشه ولی به Inbox نمیرسه
- پوشه Spam، Junk و دستهبندیهای مختلف صندوق ورودی رو بررسی کنید.
- From Email رو با حساب جیمیلی که متصل کردید یکسان بذارید.
- پیام رو به یک آدرس دیگه بفرستید تا مشخص بشه مشکل فقط به یک گیرنده مربوطه یا نه.
- نام و متن ایمیل آزمایشی رو طبیعی نگه دارید و از لینکهای ناشناس یا متن تکراری زیاد استفاده نکنید.
اگه روی سایت اصلی هم ایمیلها به Spam میرن، راهنمای حل مشکل ارسال ایمیل در وردپرس و اسپمشدن ایمیلها نکتههای بیشتری برای بررسی تحویل ایمیل داره.
بعد از تغییر پسورد Google ارسال ایمیل قطع شده
Google بعد از تغییر پسورد حساب، App Passwordهای قبلی رو لغو میکنه. اگه از Other SMTP استفاده میکنید، یک App Password تازه بسازید، رمز قبلی رو در WP Mail SMTP عوض کنید و دوباره ایمیل آزمایشی بفرستید. اگه از OAuth استفاده میکنید، وضعیت اتصال حساب رو در تنظیمات افزونه بررسی کنید و فقط در صورت قطعشدن دسترسی، حساب رو دوباره متصل کنید.
تنظیمات درست هست ولی افزونه خطا نشون میده
جزئیات خطای صفحه Email Test رو باز کنید و ببینید اتصال در کدوم مرحله قطع شده. بعد افزونههای امنیتی یا ابزارهایی رو که ارتباط خروجی وردپرس رو محدود میکنن موقتاً بررسی کنید. محدودیت شبکه، VPN یا فایروال سیستم هم میتونه باعث خطا بشه.
اگه برای تست افزونهای رو موقتاً غیرفعال میکنید، بعد از آزمایش دوباره فعالش کنید. App Password و Client Secret رو هم داخل اسکرینشات، تیکت عمومی یا پیام گروهی منتشر نکنید.
آیا برای تست ایمیل در لوکال هاست حتماً به Gmail نیاز دارید؟
نه. انتخاب ابزار به چیزی بستگی داره که میخواید آزمایش کنید. اگه فقط میخواید مطمئن بشید وردپرس ایمیل درست رو با عنوان و متن مناسب میسازه، میتونید از ابزار ثبت ایمیل یا صندوق ایمیل محلی سازگار با محیط لوکال خودتون کمک بگیرید. این ابزارها پیام رو داخل کامپیوتر نگه میدارن و چیزی به صندوق واقعی نمیفرستن. روش نصب و اتصالشون بین XAMPP، WAMP و MAMP یکسان نیست، پس باید راهنمای همون ابزار و محیط لوکالتون رو دنبال کنید.
اگه میخواید رسیدن واقعی ایمیل، پوشه Spam یا عملکرد فرم برای یک گیرنده بیرونی رو ببینید، SMTP انتخاب بهتریه. جیمیل برای آزمایشهای محدود و شخصی کاربردیه، ولی بهتره از حساب اصلی و اطلاعات حساس توی محیط آزمایشی استفاده نکنید.
بعد از انتقال سایت به هاست اصلی چه کاری انجام بدید؟
تنظیمات افزونه همراه پایگاه داده سایت منتقل میشن، ولی اتصال لوکال لزوماً برای سایت واقعی بهترین انتخاب نیست. بعد از انتقال، From Email، نام فرستنده، فرم تماس، بازیابی رمز و اعلانهای فروشگاه رو دوباره آزمایش کنید.
برای سایت اصلی بهتره از یک سرویس ارسال ایمیل مناسب سایت استفاده کنید و آدرس فرستنده روی دامنه خودتون باشه. بعد رکوردهای احراز هویت دامنه رو طبق راهنمای همون سرویس تنظیم کنید. این رکوردها به سرویسهای گیرنده کمک میکنن فرستنده واقعی رو تشخیص بدن و احتمال رفتن پیام به Spam کمتر بشه.
رمزهای آزمایشی و اتصالهایی رو که دیگه لازم ندارید حذف کنید. اگه سایت رو برای شخص دیگهای آماده کردید، حساب جیمیل شخصی خودتون رو روی نسخه نهایی باقی نذارید.
سؤالهای رایج درباره ارسال ایمیل وردپرس در لوکال هاست
آیا این روش روی XAMPP و WAMP هر دو کار میکنه؟
بله. این روش به یک برنامه لوکال هاست خاص وابسته نیست. اگه وردپرس اجرا بشه، اینترنت در دسترس باشه و شبکه اتصال SMTP رو نبنده، میتونید از WP Mail SMTP روی XAMPP، WAMP و MAMP استفاده کنید.
چرا نباید پسورد اصلی Gmail رو در افزونه وارد کنید؟
پسورد اصلی به کل حساب Google شما دسترسی میده و برای اتصال SMTP مناسب نیست. در روش Google / Gmail از OAuth استفاده کنید. در روش Other SMTP هم App Password جدا بسازید تا پسورد اصلی داخل وردپرس ذخیره نشه.
OAuth بهتره یا Other SMTP؟
برای بیشتر کاربران، OAuth انتخاب پیشنهادیتریه چون پسورد Gmail رو داخل افزونه نگه نمیداره. Other SMTP هم کار میکنه، ولی به تأیید دومرحلهای و App Password نیاز داره.
پورت درست SMTP جیمیل چنده؟
برای اتصال Other SMTP، میزبان smtp.gmail.com، گزینه TLS و پورت 587 رو وارد کنید. افزونه با این تنظیم از STARTTLS برای رمزگذاری اتصال استفاده میکنه و Authentication هم باید روشن باشه.
چرا ایمیل آزمایشی به پوشه Spam میره؟
فیلتر گیرنده ممکنه پیام آزمایشی، نام فرستنده یا سابقه ارسال حساب رو مشکوک تشخیص بده. پوشه Spam رو بررسی کنید، From Email رو با حساب متصلشده یکسان بذارید و پیام رو به یک گیرنده دیگه هم بفرستید.
آیا تنظیم SMTP لوکال هاست بعد از انتقال سایت هم باقی میمونه؟
اگه پایگاه داده سایت رو کامل منتقل کنید، تنظیمات افزونه معمولاً همراه سایت میرن. بااینحال، بعد از انتقال باید اتصال، فرم تماس، بازیابی رمز و اعلانها رو دوباره آزمایش کنید و برای سایت اصلی از سرویس ارسال مناسب و ایمیل دامنه خودتون کمک بگیرید.
جمعبندی
برای حل مشکل ارسال ایمیل وردپرس در لوکال هاست، لازم نیست تنظیمات پیچیده XAMPP، WAMP یا MAMP رو دستکاری کنید. کافیه افزونه WP Mail SMTP رو نصب کنید و ایمیلهای سایت رو از راه یک سرویس واقعی بفرستید. اتصال Google / Gmail با OAuth روش پیشنهادی مقالهست؛ Other SMTP با App Password هم میتونه راه جایگزین مناسبی باشه.
بعد از ذخیره تنظیمات، یک ایمیل آزمایشی بفرستید و رسیدن اون به صندوق ورودی یا Spam رو بررسی کنید. بعد فرم تماس، بازیابی رمز و اعلانهای سایت رو هم جداگانه تست کنید. وقتی سایت رو به هاست اصلی منتقل کردید، این آزمایشها رو دوباره انجام بدید و اطلاعات اتصال آزمایشی یا حساب جیمیل شخصیتون رو روی سایت نهایی باقی نذارید.

عکس مقاله خراب شده
لینک
ارور
Forbidden
You don’t have permission to access /2017/01/send-email-from-localhost.png on this server.
Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.
سپاس از شما. حل شد
سلام.
من با استفاده از بسته نصبی آسان یه قالب رو روی لوکال هاست نصب کردم.در قسمت تنظیمات کاربران کاربر ادمینی که قبلا بود رو پاک کردم.در قسمت تنظیمات عمومی میخوام ایمیل ثبتی سازنده رو پاک کنم میگه یه ایمیل تاییدیه باید براتون بیاد که اون نمیاد.میشه راهنمایی ام کنید؟
سلام توی لوکال هاست معمولا ایمیل ارسال نمیشه. از دیتابیس باید تغییر بدید ایمیل رو یا صبر کنید وقتی منتقل شد روی هاست اصلی