ارسال ایمیل با کلاس not execute: /usr/sbin/sendmail phpmailer

moslem_f

تازه وارد
سلام عرض ادب و خسته نباشید در انجمن های مختلفی این مطلب رو سرچ کردم اما متاسفانه به نتیجه درستی نرسیدم در این انجمن هم یا به علت پیدا نکردن کیورد خاص یا نبودن مطلب به نتیجه نرسیدم پس بر این شدم تا دست به دامن بشم
109.gif
میرم سر اصل مطلب با تشکر ؛

من از کلاس phpmailer برای ارسال ایمیل استفاده کردم که این کلاس رو به پیوست تقدیم حضورتان میکنم تا بیشتر راهنمایی کنید ؛

با استفاده از این کلاس function درست کردم با نام sendEmail این فانکشن کارش ارسال ایمیل هست که در ادامه کامل function رو براتون میزارم که به شرح زیر هست ؛


کد:
 /// ارسال ایمیل



 function sendEmail($title,$useremail,$body)
 {
     require_once('class.phpmailer/class.phpmailer.php');

$mail             = new PHPMailer(); // defaults to using php "mail()"

$mail->IsSendmail(); // telling the class to use SendMail transport

//$body             = file_get_contents('contents.html');

$mail->SetFrom('info@p30pdf.ir', 'First Last');
$address = "info.p30pdf@yahoo.com";
$mail->AddAddress($useremail, "John Doe");
$mail->AddAddress($address, "John Doe");

$mail->Subject    = "$title";

$mail->AltBody    = "این ایمیل ممکن است حاوی تصاویر باشد لذا ایمیل  خود را به صورت اچ تی ام ال مشاهده نمایید"; // optional, comment out and  test

$mail->MsgHTML($body);

$mail->AddAttachment("images/phpmailer.gif");      // attachment
$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment

if(!$mail->Send()) {
    return false;

} else {
    return true;

}
 }
حالا این function رو include کردم به صفحه contactus.php خودم که همون فرم تماس با ما هست .

و حال کد پی اچ پی contactus.php به شرح زیر هست ؛


کد:
if (isset($_POST['submit']))
{
    if(isset($_POST['title']) AND !empty($_POST['title']) AND isset($_POST['body']) AND !empty($_POST['body']))
    {
        $title = $_POST['title'];
        $useremail = $_POST['email'];
        $body  = $_POST['body'];
        $result = sendEmail($title,$email,$body);
        if($result)
        {
            echo "پیام شما با موفقیت ارسال شد";
        }
        else
        {
            echo "خطایی  در ارسال ایمیل رخ داده است لطفا موارد را با دقت وارد کنید";
        }
    }
}
و کد HTML مربوط به فرمم هم به شرح زیر هست ؛


کد:
            <form method="post">
                عنوان : <input name="title" type="text"  /><br />
                ایمیل شما : <input name="email" type="text"  /><br />
                متن پیام شما : <textarea name="body" cols="40" rows="10"></textarea>
                <input name="submit" type="submit" value="ارسال"  />
            </form>
و حال این که هنگامی که از صفحه تماس با ما عنوان رو وارد می کنم ، ایمیلمو وارد می کنم و متن پیام رو وارد کرده و ارسال رو میزنم function من false میشه و پیغام خطایی در ارسال ایمیل رخ داده است لطفا موارد را با دقت وارد کنید echo میشه که در شروط صفحه contactus.php که در بالا کدشو نشونتون دادم می بینید و بعد از نمایش پیام ، پیامی مبنی بر Invalid address: Could not execute: /usr/sbin/sendmail میده و ایمیل ارسال نمیشه و همه تنظیمات در تابع sendEmail مربوط به کلاس phpmailer هم که قابل مشاهده شما هست که در اول متن گذاشتم در ضمن در صورت نیاز برای این که بدونید امکان ارسال ایمیل در هاست سایت من روی سرور وجود دارد یا نه اگر نیاز هست بگید تا phpinfo رو پیام خصوصی کنم یا این که اگر میدونید فانکشن خاصی باید باز باشه بگید تا من ببینم و به شما بگم . خواهش می کنم در صورت امکان اگر امکان کمک هست دریغ نکنید با تشکر.

ارادتمند : مسلم فلاح نیت

لینک دانلود فایل ضمیمه



 

moslem_f

تازه وارد
در ضمن روی لوکال نیست روی اینترنت هست یعنی روی سرور

 

Mohammad

مدیر انجمن
پرسنل مدیریت
عبارت


کد:
$mail->IsSendmail();
رو حذف کنید و مجدد تست کنید. نتیجه رو اعلام کنبد

 

moslem_f

تازه وارد
زمانی که حذف می کنم این مشکل حل میشه اما ! می خوام بدونم علت چیه واقعا برای چی باید حذف کنم فکر می کنم شما هم مثل من از سایت زیر به این نتیجه رسیدین !



کلاس رو عوض کردم و خیلی موارد دیگه ولی علتش چیه که بخوام اینو بردارم حذف کنم در سایت بالا هم به مواردی اشاره کرده که بر فرض یک نفر هر کاری کرده مشکلش حل نشده و اومده این خط رو کامنت کرده و مشکل حل شده !

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

 

Mohammad

مدیر انجمن
پرسنل مدیریت
شما در لوکال تست می کنید احتمالا! و در لوکال ما sendmail نداریم.

اگر وارد فایل class.phpmailer.php بشید و دنبال عبارت IsSendmail بگردید . میبینید مسیرش رو ذکر کرده. ولی وقتی نباشه خطایی که برای شما رخ داده به وجود میاد.

من با این کلاس کار نکردم و این اطلاعات رو الان با بررسی کد ها و جستجو به شما گفتم. احتمال اشتباه درش هست

 

moslem_f

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

 
بالا