آموزش رفع مشکل ارسال ایمیل در وردپرس

31

fix-wordpress-emails-not-sending-mandrill-gmail-smtp-mrcode.ir

تا حالا پیش آمده که وبسایت وردپرسی شما قادر به ارسال ایمیل نباشد و شما هم نتوانید راه حلی پیدا کنید؟ اگر این مشکل برایتان پیش آمده باید بدانید که شما تنها نیستید و این مشکلی است که افراد زیادی تا امروز با آن روبرو شده اند. ماجرا از این قرار است که مثلا کاربران در هنگام ثبت نام، یا مدیران در هنگام ثبت نظر جدید هیچ ایمیلی از سیستم دریافت نمیکنند و یا افزونه هایی که جهت ایجاد فرم های تماس در وردپرس نصب شده اند نمیتوانند به درستی عمل کرده و در مواقع لازم ایمیل ارسال کنند. امروز قرار است مسترکد دلیل این مسئله را برای شما شرح دهد و سپس دو راه حل بسیار مناسب برای رهایی از این مشکل به شما ارائه کند. بنابراین با آموزش امروز همراه باشید.

چه زمانی وردپرس نمیتواند ایمیل ارسال کند؟

وردپرس جهت ارسال ایمیل از تابع mail() زبان php استفاده میکند. ممکن است هاست شما اجازه استفاده از این تابع را نداده باشد. در این حالت بدیهی است که وردپرس نخواهد توانست ایمیلی ارسال کند.
حالت دیگری وجود دارد که در آن وردپرس ایمیل را با موفقیت ارسال میکند اما به علت حساس بودن سرویس های ایمیل در رابطه با اینکه منشا یک ایمیل با آنچه ادعا میکند تطابق نداشته باشد، یا روانه ی اسپم میشود و یا اینکه به طور کلی توسط سرویس دریافت کننده نادیده گرفته میشود.
در آموزش امروز تمرکز ما روی حالت اول خواهد بود.

البته لازم میبینم به یک نکته هم اشاره کنم. حتی اگر شما دچار چنین مشکلی هم نیستید، باز هم توصیه میکنم روش های فوق را مطالعه کنید چرا که ارسال ایمیل از روی هاست میزبانی شما اصلا روش منطقی و جالبی نیست. خصوصا اگر وبسایت پر بازدیدی داشته باشید که تعداد افراد زیادی در روز در آن عضو شوند یا نظرات متعددی دریافت کنید احتمالا با محدودیتهایی در زمینه ارسال نیز روبرو خواهید شد. بنابراین به روش های فوق به چشم روش های درمان نگاه نکنید. بلکه حتی اگر هیچ مشکلی هم ندارید، به چشم یک روش عالی جهت پیشگیری از هرگونه مشکل احتمالی، حتما آنها را در نظر داشته باشید.

ارسال ایمیل را به Mandrill بسپارید

با سرویس خبرنامه و ارسال ایمیل انبوه MailChimp که حتما آشنا هستید؟ Mandrill هم حاصل تلاش همان گروهی است که MailChimp را راه اندازی کرده اند. اندر احوالات MailChimp هم که حتما میدانید بیش از 1 میلیون کاربر دارد و در حدود 2 بیلیون (بله!) ایمیل موفق در ماه ارسال میکند! بنابراین شکی نیست که مندریل یک سرویس کاملا حرفه ای بوده و نیازهای شما را به خوبی براورده خواهد کرد. خبر خوب این است که اگر نیاز های عجیب و غریب نداشته باشید میتوانید به صورت کاملا رایگان از این سرویس استفاده کنید. در سرویس رایگان مندریل شما مجاز هستید ماهانه تا 12000 ایمیل ارسال کنید اصلا رقم کمی نیست و تقریبا برای 99 درصد وبسایتها بسیار بیشتر از مقدار مورد نیاز است.

خوشبختانه تنظیم وردپرس برای استفاده از مندریل بسیار آسان است. برای شروع لازم است که ابتدا افزونه wpMandrill را نصب و فعال نمایید. اگر نمیدانید که چگونه این کار را انجام دهید این آموزش را بخوانید.
پس از نصب افزونه جهت ثبت نام، به وبسایت Mandrill بروید. یک حساب کاربری برای خود ایجاد کنید و سپس برای دریافت کلید API به حساب کاربری خود وارد شوید. به بخش settings رفته و سپس بر روی دکمه +Add API Key کلیک کنید تا یک کلید API جدید برای شما ایجاد شود.
حالا در داشبورد مدیریت وردپرس از منوی تنظیمات به زیرمنوی Mandrill مراجعه کنید و کلید API خود را که تازه دریافت کرده بودید در ناحیه مربوط به API وارد کرده و تنظیمات را ذخیره کنید.
به همین سادگی وردپرس از این به بعد ایمیل هایش را توسط سرویس مندریل ارسال خواهد کرد و شما از این به بعد میتوانید مطمئن باشید که ایمیل های وبسایت شما به درستی به مقصد خواهند رسید.

توضیحات تکمیلی – فروردین 1395 : با توجه به اینکه Mandrill در حال حاضر دیگر بدون داشتن اشتراک فعال میل چیمپ و پرداخت هزینه، به کاربران سرویس دهی نمیکند، بنابراین به عنوان یک جایگزین بسیار مناسب میتوانید از آموزش اتصال وردپرس به تلگرام استفاده کرده و کلیه ی نوتیفیکیشن های وردپرس را از این پس از طریق تلگرام دریافت کنید.

ارسال ایمیل ها با استفاده از SparkPost

SparkPost جزو سرویس دهندگانی است که هرچند تقریبا میتوان گفت که به تازگی به میدان آمده ولی در مدتی کوتاه با استقبال بسیار زیاد کاربران مواجه شده و کاربران آن هر روز رو به افزایش هستند. با اسپارک پست میتوانید ماهانه تا 100 هزار ایمیل را به صورت رایگان به مقاصد مورد نظر ارسال کنید. 100 هزار ایمیل واقعا رقم قابل توجهی است. این مقدار ایمیل بدون شک چه برای سایت های کوچک و چه حتی برای سایت های رو به رشد و نسبتا بزرگ هم کاملا مناسب بوده و کفایت میکند.

خوشخبتانه SparkPost به فکر کاربران وردپرس هم بوده و یک افزونه مخصوص وردپرس ارائه کرده که در مخزن وردپرس در دسترس شماست. برای اینکه از این پس ارسال ایمیل های سایت وردپرسیتان را به این سرویس بسپارید، میبایست در مرحله اول افزونه SparkPost را بر روی سایت خود نصب و فعال کنید. (آموزش نصب افزونه در وردپرس)

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

تنظیمات sparkpost

برای تنظیم افزونه شما نیاز به کلید API خواهید داشت. بنابراین پیش از ادامه کار میبایست یک حساب کاربری در سایت اسپارک پست ایجاد کنید تا بتوانید کلید را دریافت کرده و در تنظیمات افزونه قرار دهید. در اینجا یک نکته حائز اهمیت است. عضویت در اسپارک پست با IP ایران امکان پذیر نخواهد بود. بنابراین در هنگام ثبت نام به این نکته توجه کنید.

پس از وارد کردن اطلاعات ثبت نامی، از شما درخواست میشود که دامنه ای که قصد ارسال ایمیل از آن را دارید ارائه کنید. در این حالت یک ایمیل تایید به یکی از آدرس های ایمیل abuse@domain.com یا postmaster@domain.com به دامنه انتخابی شما ارسال میشود تا با استفاده از ایمیل ارسال شده، دامنه تایید اعتبار شده و مشخص شود که این دامنه واقعا متعلق به شماست.

حالا به داشبوردتان در اسپارک پست مراجعه کرده و از منوی Account به زیرمنوی API Keys مراجعه کنید. در بخش API Keys روی دکمه NEW API KEY کلیک کنید. نامی برای API انتخاب کنید. همه ی Permission ها را برای API فعال کنید و سپس در صورت نیاز در بخش Allowed IPs، آدرس های IP که مایلید به API دسترسی داشته باشند را ارائه دهید. پر کردن این بخش الزامی نیست و در صورت پر نکردن آن، از هر آدرس IP در صورت داشتن کلید API معتبر میتوان از امکانات اسپارک پست استفاده کرد. در پایان روی Add API Key کلیک کنید تا کلید ساخته شده و به شما ارائه شود. حالا میتوانید این کلید را کپی کرده و در تنظیمات افزونه قرار دهید و تنظیمات را ذخیره کنید.

ساختن کلید api اسپارک پست

توجه داشته باشید که در تنظیمات افزونه در وردپرس میبایست حتما تنظیم Send email using SparkPost را فعال کنید تا افزونه شروع به کار کند و ایمیل ها از طریق اسپارک پست ارسال شوند.

در ادامه در بخش Overrides نام و ایمیل ارسال کننده را مشخص کنید. توجه داشته باشید که ایمیلی که در اینجا وارد میکنید میبایست حتما تحت نام دامنه ای باشد که پیش از این در اسپارک پست آن را وریفای کرده بودید.

حالا برای اینکه از صحت کارکرد افزونه اطمینان حاصل کنید میتوانید در صفحه تنظیمات افزونه در قسمت Test Email یک آدرس ایمیل وارد کرده و روی Send test email کلیک کنید تا یک ایمیل آزمایشی به آن ارسال شود. در اینجا اگر همه چیز به درستی تنظیم شده باشد، ایمیل آزمایشی شما به مقصد خواهد رسید. ولی اگر مشکلی در ارسال وجود داشته باشد میتوانید در بالای صفحه اطلاعات Debug افزونه را مشاهده کرده و ببینید که مشکل دقیقا از کجا سرچشمه میگیرد.

تست تنظیمات sparkpost

مثلا اگر هنوز دامنه ی خود را تایید نکرده باشید در بخش دیباگ در قسمت response body با پیام Invalid Domain مواجه خواهید شد. بنابراین در صورت وجود مشکل در این بخش، به سادگی و با بهره گیری از اطلاعات دیباگ میتوانید مشکل را پیدا کرده و برای رفع آن اقدام کنید.

استفاده از سرورهای SMTP جیمیل

علاوه بر روشی که قبلا از آن صحبت کردیم، شما این انتخاب را دارید که وردپرستان را به نحوی تنظیم کنید که ایمیلهایش را از طریق سرورهای SMTP سرویس محبوب Gmail ارسال کند. این کار با هر اکانت جیمیلی قابل انجام است اما استفاده از Google Apps برای این کار، نسبت به استفاده از اکانت عادی جیمیل برتری خواهد داشت. چرا که همانطور که قبلا هم به آن اشاره کردیم، سرویسهای ایمیل میتوانند به سادگی متوجه شوند که آیا یک ایمیل واقعا از همانجایی آمده که خودش ادعا میکند یا خیر. بدیهی است که در حالتی که از اکانت عادی جیمیل استفاده کنید، ایمیل شما دچار همین وضعیت خواهد شد. البته عموما در این زمینه مشکل خاصی وجود ندارد و مثلا سرویسی مانند جیمیل صرفا هشدار میدهد که این ایمیل ممکن است از جای دیگری (متفاوت از جایی که به نظر میرسد از آنجا آمده) به شما رسیده باشد ولی احتمال اسپم شدن ایمیل در این حالت خیلی بالا نیست.

برای استفاده از این روش پیش از هر چیز لازم است یک اکانت جیمیل داشته باشید. (که حتما دارید) قدم بعدی این است که افزونه WP Mail SMTP را روی سایت خود نصب و فعال نمایید. (آموزش نصب افزونه را اینجا بخوانید)
پس از نصب افزونه از منوی تنظیمات وردپرس به زیرمنوی Email مراجعه نموده و اطلاعات را به شرح زیر تکمیل کنید.

From Email : آدرس ایمیل که مایلید ایمیلها از طرف آن ارسال شوند را وارد کنید.
From Name : نامی که مایلید به عنوان نام فرستنده نمایش داده شود را وارد کنید.
SMTP Host : در اینجا عبارت smtp.gmail.com را وارد نمایید.
SMTP Port : در اینجا رقم 587 (یا در صورت بروز مشکل رقم465) را وارد کنید.
Encryption : این تنظیم را بر روی Use SSL Encryption قرار دهید.
Authentication : در اینجا گزینه Yes: Use SMTP Authentication را انتخاب نمایید.
Username : نام کاربری جیمیل خود را وارد کنید.
Password : رمز عبور جیمیل خود را وارد کنید.

در پایان هم تنظیم را ذخیره کنید. پس از ذخیره تغییرات این امکان را هم دارید که یک ایمیل آزمایشی ارسال کرده و از رسیدن ایمیل به مقصد اطمینان حاصل کنید.

حتما متوجه شده اید که افزونه WP Mail SMTP را میتوان برای استفاده از هر سرور SMTP مورد استفاده قرار داد و استفاده از آن تنها محدود به Gmail نیست.
راستی یک نکته ای هم برای مسترکد سوال شد که اگر شما این مورد را تست کردید بد نیست گذارش کارکردش را با ما قسمت کنید. سوال این است که اگر یک اکانت جیمیل از لاگین دو مرحله ای استفاده کند، آیا باز هم میشود این تنظیمات را بر روی آن اعمال کرد؟

در پایان امیدواریم که این آموزش راه حلی برای مشکل ارسال ایمیل در وبسایت وردپرسی شما بوده باشد.

دسترسی آسان به این مطلب لینک کوتاه :
شاید از اینها هم خوشتان بیاید!
31 دیدگاه
  1. لادن می گوید

    سلام
    من از افزونه newsletter برای ارسال خبرنامه در وردپرس استفاده میکنم
    اما 2 تا مشکل دارم
    1.بعد از ارسال خبرنامه عکس که داخلشه به شکل ضربدر ارسال میشه و از کاربر میخواد که دانلودش کنه.
    2.خبرنامه میره توی جانک یا اسپم

    میشه کمکم کنین و بگین چه کار کنم که عکس از همون اول باز بشه و توی inbox بره؟

    1. MrCode می گوید

      سلام
      1 – تقریبا تمام سرویس دهنده های ایمیل، عکس رو در ایمیل نشون نمیدن و از کاربر سوال میکنن که این ایمیل عکس داره، آیا مایلی بارگیری بشه یا نه و اگر کاربر بگه بله، تازه عکس بارگذاری میشه. یک سری سرویس دهنده ها هم اصلا نمیتونن ایمیل اچ تی ام ال رو درست نشون بدن و بجای نمایش عکس ها، اونها رو به صورت پیوست نشون میدن.

      2 – اگر سرویس دهنده ای، آدرس دامنه، نوع نوشتار، آی پی و … رو در ایمیل شما اسپم تشخیص بده، عملا کاری نمیتونید بکنید. مگر اینکه تعداد بی شماری از افراد، ایمیل شما رو به عنوان not spam مارک کنن تا به تدریج سرویس دهنده ها مجدد به ایمیل شما اعتماد کنن.

      1. لادن می گوید

        از کمکتون خیلی خیلی ممنونم

  2. افشین می گوید

    سلام.من با جیمیل خیلی مشکل داشتم.کلی آموزش تو سایتای مختلف دیدم که هیچکدوم نتونست مشکلمو حل کنه تا رسیدم به آموزش مفید شما.ارسال ایمیل را به Mandrill بسپارید.واقعا هم باید ارسال ایمیل رو به این سرویس سپرد.دوستان من توصیه میکنم اگه با جیمیل مشکل دارین حتما از Mandrill استفاده کنین.صد در صد جواب میده.شک نداشته باشین.ممنون و متشکر از زحمات مستر کد.

    1. MrCode می گوید

      سلام
      خوشحالم که این آموزش برای شما مفید بود و مشکلتون برطرف شد

    2. peyman می گوید

      من از مندریل هم جواب نگرفتم چه کنم؟؟؟؟
      بدجوری کارم گیره چکار کنم؟ به ایمیلم جواب بدید ممنون میشم

  3. سامان کیانی می گوید

    سلام
    دستتون درد نکنه
    فوق العاده بود این آموزشتون
    حقیقتش من قبلا با میلچیمپ کار میکردم و یکبار که خواستم یک ایمیل ارسال کنم سایت میل چیمپ نگذاشت که من ارسال کنم و گفت که محتوای ایمیلم اسپم هستش در صورتی که من به اعضای سایت خودم ارسال میکردم و اصلا ایمیل تبلیغاتی یا غیر مرتبطی هم ارسال نکردم و خلاصه دیگه الان بهم اجازه نمیده که ارسال کنم
    اکانتم فعال است و از طریق میلچیمپ میتونم ایمیل اعضا را جمع کنم ، فقط نمیتونم ارسال کنم
    آیا روشی هست که این مشکل را حل کنم؟

    اما mandrill
    این سرویس فوق العاده هستش ولی من یک مشکلی باهاش دارم
    من وقتی اطلاعات smtp این سایت رو در نرم افزار یا اسکریپت میزنم همه چیز مورد تائید است و وقتی شروع به ارسال ایمیل میکنم در نرم افزار ارسال ایمیل یا اسکریپتم میزنه که ارسال انجام شد. در صورتی که هیچ ایمیلی ارسال نمیشه و وقتی به پنل خودم در سایت mandrill مراجعه میکنم می بینم که قسمتی که نوشته Sends this hour و اینکه یعنی 250 عدد در ساعت اومده پائینش با رنگ نارنجی نوشته 17 in backlog
    در صورتی که من اصلا برای تست فقط یک لیست دو نفره ایجا کردم
    آیا میدانید مشکل از کجاست؟

    شرمنده که این همه متن نوشتم

  4. afshin می گوید

    سلام
    اگر Mandrill را فعال کردیم، برای ارسال ایمیل باید از خود سایت Mandrill.com ایمیل خبرنامه ارسال کنیم مانند mailchimp؟
    لطفا کمی توضیح بدهید.
    با تشکر

    1. MrCode می گوید

      سلام
      اگر آموزش رو مطالعه کنید به طور کامل توضیح داده شده که مندریل چطور کار میکنه. mandrill کارش ارائه API جهت ارسال ایمیل هست.

  5. محمدمهدی می گوید

    من این مشکل رو داشتم. روش دوم رو هم تست کرده بودم اما کار نکرد. اما روش mandril جواب داد
    خیلی خوب بود. ممنون از شما

  6. حسین می گوید

    استفادش تو فرم تماس چطوریه؟

  7. محمد می گوید

    آموزشتون عالی بود. خیلی وقت بود دنبال یه راه حل واسه این مشکل بودم. خیلی خوب بود ممنون

  8. شاهید می گوید

    سلام
    ضمن خسته نباشید
    در سایت بنده کابران بعداز ثبت نام ایمیلی حاوی نام کاربری دریافت می کنند
    اما کاربرانی که رمز عبور را فراموش کرده اند ، در بخش بازیابی رمزعبور ،با ثبت ایمیل و تایید ،هیچ ایمیلی دریافت نمی کنند .
    کدام قسمت را باید تنظیم نماییم
    من را راهنمایی بفرمایید سپاسگزارم
    یاحق

  9. سينا می گوید

    آقا دستتون درد نکنه من دقیقا مشکلم با نصب این پلاگین حل شد . وظیفه خودم دونستم تشکر کنم و خوشحالم سایت زیبای شما پشتیبان کارهای بنده است
    با تشکر و امید موفقیت روز افزون شما

    1. MrCode می گوید

      ممنون از لطف شما.
      خوشحالم که مشکلتون برطرف شده.

  10. طاهري فر می گوید

    در حال حاضر افزونه Mandrill در حالت رایگان اجازه ارسال بیشتر از دو هزار ایمیل رو نمیده

    1. MrCode می گوید

      بله الان به همین شکل شده. بعد از 2000 ایمیل میشه ماهانه 9.95 دلار

  11. beatbot می گوید

    سلام
    واقعا ممنون از مطلب خوبتون

    من یه مشکلی دارم
    از روش اول که اصن نتونستم استفاده کنم چون اصن پلاگینش اجرا نمیشه
    سعی کردم با افزونه دومی از طریق smtp با مندریل ارتباط برقرار کنم نشد
    با جیمیلم کانکت نمیشه هرکااااااااری میکنم

    امتحان کردم میل هم ارسال نمیشه
    من ک دیگه ارم دیوونه میشم که چرا میل ارسال نمیشه .
    همیشه وردپرس نصب میکردم هیچوقت این مشکلو نداشت ولی این دفعه خییییییلی رفته رو اعصابم

    ممنون میشم راهنماییم کنین
    در ضمن فونت سایتتون خیلی باحاله 🙂 ایول

  12. hossein می گوید

    با سلام من Mandrill رو نصب کردم ولی وقتی تو وردپرس فعالش می کنم این ارور میاد Warning: set_time_limit() has been disabled for security reasons in /home/u712276624/public_html/wp-content/plugins/wpmandrill/lib/mandrill.class.php on line 432
    اگه راهنمایی کنید ممنون میشم

    1. MrCode می گوید

      سلام
      پیام به این مفهوم هست که استفاده از تابع set_time_limit به دلایل امنیتی مجاز نیست.
      البته چون فقط هشدار هست فکر نمیکنم تداخلی در کارکرد افزونه ایجاد کنه. (مگر در موارد خاص ) کافیه فقط نمایش وارنینگ ها رو در سایتتون غیر فعال کنید که دیگه این پیام رو مشاهده نکنید.

  13. آموزش php می گوید

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

  14. aminalg می گوید

    سلام
    من هر چند وقت یه باد هاستم سوسپاند میشه علتشم ارسال ایمیل گروهی زیاده
    چطور میتونم جلوشو بگیررم؟

    1. MrCode می گوید

      از هاستتون ایمیل گروهی ارسال نکنید چون اصلا هاست میزبانی برای ارسال ایمیل گروهی نیست.

  15. mohamad می گوید

    سلام.من تنظیمات smtp را طبق آموزش های شما اتجام دادم ولی ایمیل تست رو نمیفرسته لطفا راهنماییم کنید چون با افزونه ی easy digital download کار میکنم و نیاز دارم که لینک دانلود برای کاربر ها ارسال بشه.

    1. MrCode می گوید

      اگر تنظیمات SMTP تون صحیح باشه مشکلی در ارسال نخواهید داشت.

  16. mohamad می گوید

    هنگام ارسال ایمیل تست با افزونه ی smtp و در حالت ssl برای من این پیغام میاد

    SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
    لطفا راهنماییم کنید.

    1. MrCode می گوید

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

  17. هادی می گوید

    درود

    اقا کارتون درسته
    دمتون گرم

    1. MrCode می گوید

      ممنون از لطف شما

  18. علیرضا می گوید

    سلام کسی پاسخ گو هست؟

  19. behzad می گوید

    سلام
    با توجه به اینکه mandril الان اکانتهای رایگان mailchimp رو ساپورت نمیکنه
    sparkpost هم آی پی ایرانی رو اجازه ارسال نمییده

    از چه سرویس و سایتی استفاد کنم که بتونم ایمیل هام رو از طریق mailchimp بدون فشار آوردن به سرور هاست خودم بفرستم

ارسال پاسخ

آدرس ایمیل شما منتشر نخواهد شد.