۱۲ ابراهیم زنده بودی
عدم ارسال ایمیل حتی با سرویس شکن
جامعه پی اچ پی ایجاد شده در ۲۴ مرداد ۱۴۰۲

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

از 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!';
}


ابراهیم زنده بودی ۲۵ مرداد ۱۴۰۲، ۰۵:۲۷

سلام،

کدتون رو تست کردم، مشکلی نداره و یک مسیج هم ارسال کردم که میتونید در 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__
محسن موحد ۲۶ مرداد ۱۴۰۲، ۰۴:۱۸

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


ابراهیم زنده بودی ۲۶ مرداد ۱۴۰۲، ۰۵:۳۶

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

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

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


ابراهیم زنده بودی ۲۶ مرداد ۱۴۰۲، ۰۷:۰۵

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

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

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

ابراهیم زنده بودی ۲۸ مرداد ۱۴۰۲، ۰۹:۲۷

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() الان این ارور رو برمیگردونه


ابراهیم زنده بودی ۲۹ مرداد ۱۴۰۲، ۰۵:۴۴

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

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

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

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


ابراهیم زنده بودی ۲۹ مرداد ۱۴۰۲، ۱۰:۳۰

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

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

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