🔥 با کمک هوش مصنوعی در کمتر از 6 ماه فول‌استک شوید ...
۰ ثانیه
۰ دقیقه
۰ ساعت
۱۲ ebrahim zendehboodi
عدم ارسال ایمیل حتی با سرویس شکن
جامعه پی اچ پی ایجاد شده در ۲۴ مرداد ۱۴۰۲

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

از try catch استفاده کردم و این ارور را داد .

Mailer Error: Could not instantiate mail function.

سلام ابراهیم عزیز

اطلاعات رو درست زدید؟

سورس کد پروژه رو دانلود کنید و با کد خودتون مقایسه کنید ببینید مشکلتون حل میشه.

$mail->isSMTP();

کدبالا رو نوشتید؟

این خط رو هم برای دیباگ اضافه کنید:

$mail->SMTPDebug = PHPMailer\\PHPMailer\\SMTP::DEBUG_SERVER;

لینک عیب یابی و مربوط به خطای شما

احمدرضا فاطمی کیا ۲۴ مرداد ۱۴۰۲، ۱۸:۵۳


require 'D:\\xamp\\htdocs\\7auth3\\7auth\\vendor\\autoload.php';
$phpmailer = new PHPMailer\\PHPMailer\\PHPMailer();
$phpmailer->isSMTP();
$phpmailer->Host = 'smtp.mailtrap.io';
$phpmailer->SMTPAuth = true;
$phpmailer->Port = 2525;
$phpmailer->Username = '8bcc2ebcadba88';
$phpmailer->Password = '53213e55e5d3d5';
$phpmailer->setFrom('exaple@gmail.com', '7auth project');
$phpmailer->addAddress('recipient@example.com');
$phpmailer->Subject = 'Subject of Email';
$phpmailer->isHTML(true);
$body = '
This is the HTML message body
';$phpmailer->Body = $body;
$phpmailer->SMTPDebug = PHPMailer\\PHPMailer\\SMTP::DEBUG_SERVER;
if (!$phpmailer->send()) {
  echo 'Mailer Error: ' . $phpmailer->ErrorInfo;
} else {
  echo 'Message sent!';
}


ebrahim zendehboodi ۲۵ مرداد ۱۴۰۲، ۰۵:۲۷

سلام،

کدتون رو تست کردم، مشکلی نداره و یک مسیج هم ارسال کردم که میتونید در Inbox ببینیدش.

مشکل عدم اتصال به سرور‌های smtp است.

شکن ظاهراً پورت‌های ایمیل رو بسته چون به هیچ پورتی متصل نشد. پس بدون شکن تست کنید. (من بدون فیلتر شکن ارسال کردم)

برای اینکه اتصال رو چک کنید با دستور زیر پورت‌های 25, 2525, 465, 587 رو تست کنید:

telnet smtp.mailtrap.io 2525

باید پیام 220 برگرده مانند چنین چیزی:

220 smtp.mailtrap.io ESMTP ready


نکته: در مورد require که بصورت full path (absolute path) در ابتدای کد انجام دادید، اول اینکه میتونستید بصورت relative مقداردهی کنید و نسبت به فایل‌های کناری مسیردهی میکردید، اما اگر هم خواستید بصورت کامل مقداردهی کنید بهتر است نکته ی Portability یا قابل حمل بودن رو در نظر داشته باشید. این نوع آدرس دهی فقط مخصوص ویندوز بوده و همچنین اگر پروژه جابجا شود هم مسیرش بهم میخورد زیرا که بصورت مطلق حتی درایو و پوشه‌ها هم نمیتوانند تغییری داشته باشند، بنابراین این روش سلوشن بهتری خواهد بود:

require __DIR__ . '/vendor/autoload.php';
// or
require dirname(__FILE__) . '/vendor/autoload.php';
// dirname(__FILE__) == __DIR__
محسن موحد ۲۶ مرداد ۱۴۰۲، ۰۴:۱۸

درود . کد ارسالی را کدوم بخش قرار بدم؟


ebrahim zendehboodi ۲۶ مرداد ۱۴۰۲، ۰۵:۳۶

متوجه سؤالتون نشدم.

محسن موحد ۲۶ مرداد ۱۴۰۲، ۰۵:۵۵
telnet smtp.mailtrap.io 2525

این کد رو منظورم هست . کجا قرار بدم؟


ebrahim zendehboodi ۲۶ مرداد ۱۴۰۲، ۰۷:۰۵

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

صادق برزگر ۲۶ مرداد ۱۴۰۲، ۰۸:۱۷

telnet : The term 'telnet' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, 

or if a path was included, verify that the path is correct and try again.

At line:1 char:1

+ telnet smtp.mailtrap.io 2525

+ ~~~~~~

  + CategoryInfo     : ObjectNotFound: (telnet:String) [], CommandNotFoundException

  + FullyQualifiedErrorId : CommandNotFoundException

ebrahim zendehboodi ۲۸ مرداد ۱۴۰۲، ۰۹:۲۷

telent رو نصب ندارید.

windows features رو باز کنید و تیک telnet client رو فعال کنید.

محسن موحد ۲۸ مرداد ۱۴۰۲، ۱۶:۴۴

2023-08-20 05:43:48 SERVER -> CLIENT:

SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

Mailer Error: SMTP connect() الان این ارور رو برمیگردونه


ebrahim zendehboodi ۲۹ مرداد ۱۴۰۲، ۰۵:۴۴

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

من کد شمارو تست کردم و هیچ مشکلی نداشته.

بهترین پاسخ
محسن موحد ۲۹ مرداد ۱۴۰۲، ۱۰:۱۶

ایا با فیلتر شکن وارد شوم حل میشه؟


ebrahim zendehboodi ۲۹ مرداد ۱۴۰۲، ۱۰:۳۰

باید تست کنید.

بنده لوکیشن فیلتر شکنم را قبول نکرد و بدون فیلتر شکن و همچنین بدون شکن (نت بنده شکن را هم قبول نکرد) ایمیل را ارسال کردم.

محسن موحد ۲۹ مرداد ۱۴۰۲، ۱۱:۴۰