عدم ارسال ایمیل با phpmailer

شاید برای شما هم پیش اومده باشه که شرکت محترم ارائه دهنده سرویس هاست و دامین در سرور اشتراکی، تابع mail پی.اچ.پی رو مسدود کرده باشه و ارسال ایمیل رو منوط به استفاده از احراز هویت کرده باشه؛

خب تو اینجور وقت ها استفاده از یک پلاگین ارسال ایمیل آماده، بهترین کاری هست که میشه انجام داد و چه پلاگینی از phpmailer بهتر!

خب من مشکلی داشتم که هم باعث بروز مشکل در ارسال ایمیل های ثبت نام یک انجمن که با mybb طراحی کرده بودیم، شده بود و هم ایمیل های بخش تماس با ما در چند سایت رو که خودم برنامه نویسی اونها را به عهده داشتم، با مشکل مواجه کرده بود.

خیلی هم درگیر بودم که چرا آقای phpmailer وقتی ایمیلی به یک دامین خارجی ارسال میشد، خطا می داد و ایمیل رو ارسال نمی کرد، مثلاً وقتی به hamid@grandsite.ir از داخل سرور همین بلاگ ایمیل ارسال میشد، فرآیند بدون خطا انجام میشد، اما وقتی به somename@yahoo.com ارسال میکردیم با پیغام خطای زیر مواجه می شدیم:

RCPT not accepted from server

در نهایت متوجه شدم تمام سایت هایی که مشکل فوق روی آنها مشاهده میشه، سرور لینوکسی دارند و در سرور لینوکسی باید از ip سرور ایمیل بجای دامین اون استفاده کرد، یعنی مثلاً در تنظیمات phpmailer بجای:

$mail->Host  = “mail.grandsite.ir”;

از

$mail->Host  = “174.142.213.185”;

استفاده کنیم.

بهمین راحتی مشکل حل شد.

فکر نمیکنم برای برنامه نویس ها لازم باشه توضیح بدم چه جوری دامین رو تبدیل به ip کنند، اما چون ممکنه این متن رو سایرین هم بخونن – مثلاً کسانی که در حال تنظیم افزونه WP-Mail-SMTP وردپرس هستند – بگم ه براحتی میتونید در محیط command prompt ویندوز عبارت:

ping mail.grandsite.ir 

رو وارد کنید، تا ip اون رو مشاهده نمایید، توجه کنید که بجای mail.grandsite.ir باید آدرس smtp server خودتون رو وارد کنید.

فقط نکته ای که باقی می مونه، این هست که در صورتی که شرکت ارائه دهنده هاست شما، ارسال ایمیل را محدود به authenticate با ایمیلی از دامین شما کرده باشد، با هیچ روشی مشکل حل نخواهد شد و در نهایت تمام کارها بی فایده خواهد بود. در این شرایط تنها راه این می باشد که ایمیل FROM را از دامین خود انتخاب کنید و فیلد Reply-To را برای با ایمیل متقاضی پر کنید.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *