PDA

View Full Version : سوال: حیاتی:خواهش برای اصلاح کد صفحه تماس با ما وب سایت من با استفاده از phpmailer



SONITAJ
یک شنبه 21 مهر 1392, 16:51 عصر
سلام
هاست من تابع mail() را پشتیبانی نمی کنه و من می خواهم کد صفحه ام را اصلاح کنم ولی نمی دانم چطور باید کد صفحه را اصلاح کنم.لطفا راهنمایی کنید.
این کد قبلی من:

<?php
$php_self = $_SERVER['PHP_SELF'];
//$error_name = " you don't enter name.please enter you name.";
// on submit
$mail_sent=0;
$error_name = $error_email = $error_subject=$error_body = $error_captcha = '';
if( isset($_POST['name']) && isset($_POST['email'])&&isset($_POST['subject']) && isset($_POST['body']) && isset($_POST['captcha']) ){
$name = $_POST['name'];
$email = $_POST['email'];
$subject = $_POST['subject'];
$body = $_POST['body'];
$captcha = $_POST['captcha'];

$error = 0;
// name
if( $name == "" ){ $error ++; $error_name = "class='error'"; }
// email
if( $email == "" ){ $error ++; $error_email = "class='error'"; }
// subject
if( $subject == "" ){ $error ++; $error_subject = "class='error'"; }
// body
if( $body == "" ){ $error ++; $error_body = "class='error'"; }
// captcha
if( $captcha == "" || $captcha != $_SESSION['captcha']){ $error ++; $error_captcha = "class='error'"; }

// no error, send email
if( $error == 0){

// your email address
$address = "info@keivanstone.ir";

// email subject
$subject = "New body";
// email content
$content = "$name,$email,$body";
// html email
$email_content = "<!doctype html><head><meta charset='utf-8'><title>".$subject."</title>";
$email_content .= "</head><body>";
$email_content .= $content;
$email_content .= "</body></html>";

// headers for html email
$headers = 'MIME-Version: 1.0' . "/r/n";
$headers .= 'Content-type: text/html; charset=utf-8' . "/r/n";
$headers .= "From: info@keivanstone.ir <>" . "/r/n";
// send email
mail($address, $subject, $email_content, $headers);

// reset variables
$name = ""; $email = ""; $body = "";
$mail_sent = 1;
}
}
else
{
$name = $email = $subject= $body = $captcha = '';

}
// captcha
$num = rand(1, 40);
$num2 = rand(5, 25);
$verif = $num . "+" . $num2;
$_SESSION['captcha'] = $num +$num2;

if( $mail_sent == 1 ){
echo "<h1>از تماس شما سپاسگزاریم.تا48 ساعت آینده پاسخ خود را دریافت خواهید کرد.<br/>گروه سنگ آنتیک کیوان</h1>";
} else {
echo "
<form action='".$php_self."' method='post'>
<p><label for='name'>نام:</label> <span class='required'>*</span></p>
<input type='text' ".$error_name." name='name' value='".$name."'>
<p><lable for='email'>پست الکترونیک:</label> <span class='required'>*</span></p>
<input type='text' ".$error_email." name='email' value='".$email."'>
<p><label for='subject'>موضوع:</label> <span class='required'>*</span></p>
<input type='text' ".$error_subject." name='subject' value='".$subject."'>
<p><label for='body'>پیام شما:</label> <span class='required'>*</span></p>
<textarea ".$error_body." id='body' name='body' style='width:460px;height:119px;'>".$body."</textarea>
<p><label>جمع دوعدد:".$verif."?</label> <span class='required'>*</span></p>
<input type='text' ".$error_captcha." id='captcha' name='captcha' value=''><br/>
<input type='submit' value='ارسال'/>
</form>";
}
?>
من می خواهم این کد با استفاده از کلاس phpmailer بنویسم تاحق دسترسی و یوزر و پسورد و اطلاعاتی که از هاست گرفتم توی آن قرار بدهم و اگر کاربر ایمیلی زد من ایمیل را دریافت کنم.
میدونم باید کلاس phpmailer را requireکنم و یک شی جدید ازش بسازم و کد را اصلاح کنم ولی هنوز نتونستم این کار را انجام دهم.
این را هم می دونم که باید این کد را توی صفحه ام داشته باشم و اضافه کنم

require('class.phpmailer.php');
$mail=new Emailer();
$mail->IsSMTP();
$mail->Host="";
$mail->From="";
$mail->AddAddress("");
$mail->Subject="";
$mail->Body="";
if(! $mail->send()){
echo'Message was not send.';
echo 'mailer error:'.$mail->ErrorInfo;
}
else{
echo 'message has been sent.';
}
اما نمی تونم اینها را همراه با captcha سرهم کنم و کدم را اصلاح کنم .
لطفا راهنمایی کنید.:گریه: دچار یک گیجی شدید شدم.:گیج::گیج::متفکر:

SONITAJ
یک شنبه 21 مهر 1392, 16:54 عصر
این هم بعضی از خطاهایی که روی سیستم من نشون میده:
Warning: Missing argument 1 for Emailer::__construct(), called in C:\wamp\www\tamrin.phpmailer\contact.php on line 127 and defined in C:\wamp\www\tamrin.phpmailer\class.phpmailer.php on line 16
Notice: Undefined variable: sender in C:\wamp\www\tamrin.phpmailer\class.phpmailer.php on line 17
Fatal error: Call to undefined method Emailer::IsSMTP() in C:\wamp\www\tamrin.phpmailer\contact.php on line 128

SONITAJ
یک شنبه 21 مهر 1392, 20:57 عصر
لطفا یکی کمک کنه تو رو خدا...وب من روی اینترنت هست و هنوز موفق نشدم درستش کنم و این مشکل را حل کنم و نمی تونم هم از روی هاست بیارمش پایین.
لطفا یکی کمک کنه:ناراحت::گریه:

MMSHFE
یک شنبه 21 مهر 1392, 21:44 عصر
این کد رو ببینید:


require_once 'phpmailer/class.phpmailer.php';
require_once 'phpmailer/class.smtp.php';
$message = <<<EOT
<!doctype html>
<html>
<head>
<title>Test Message</title>
<meta charset="utf-8" />
</head>
<body>
<p align="center">This is a test email.</p>
</body>
</html>

EOT;
$mail = new PHPMailer();
$mail->IsSMTP();
try {
$mail->AddAddress($email);
$mail->SetFrom('mmshfe@gmail.com', 'Mohammad Mostafa Shahreki');
$mail->Host = 'mail.google.com';
$mail->SMTPAuth = true;
$mail->Port = 25;
$mail->Username = 'mmshfe@gmail.com';
$mail->Password = '********';
$mail->Subject = 'Test Message';
$mail->CharSet = 'UTF-8';
$mail->ContentType = 'text/html';
$mail->MsgHTML($message);
$mail->Send();
return true;
}
catch(Exception $e) {
unset($e);
Message('Error sending email', 'There was an error while trying to send email.');
}

SONITAJ
دوشنبه 22 مهر 1392, 08:48 صبح
سلام
ببخشید آیا باید کلاس class.smtp.php را خودم تعریف کنم یا نه مثل کلاس phpmailer وجود داره و فقط باید بزارمش توی پوشه سایتم؟
لطفا می فرمایید این دو خط چی هست؟ و چه کاری انجام می دهند؟چرا این دو خط را نوشته اید؟ دلیل خاصی داره؟

$message = <<<EOT;

EOT;
ممنونم

MMSHFE
دوشنبه 22 مهر 1392, 10:05 صبح
هر دو کلاس توی پوشه خود PHPMailer هست.
این ساختار هم بهش میگن HereDoc که درموردش توضیح زیاده و این چندروزه توی چندتا تاپیک توضیح دادم درموردش. این تاپیک (http://barnamenevis.org/showthread.php?423242-%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%AE%D8%A7%D8%B5%DB%8C%D8%AA-alt-%D8%A8%D9%87-%D8%AA%D8%B5%D8%A7%D9%88%DB%8C%D8%B1-%D8%A7%D8%B6%D8%A7%D9%81%D9%87-%DA%A9%D9%86%DB%8C%D9%85%D8%9F-(%D8%AF%D8%A7%DB%8C%D9%86%D8%A7%D9%85%DB%8C%DA%A9)&p=1894571&viewfull=1#post1894571) رو ببینید و از پست 10 به بعدش رو بخونید.

SONITAJ
جمعه 26 مهر 1392, 14:27 عصر
سلام
من سعی کردم کلاس phpmailer دانلود کنم نشد.لطفا اگر امکانش هست لینک دانلودش را برام می ذارید.
کد را که توی صفحاتم می گذارم خطای نبودن کلاس smtp را میدهد.

SONITAJ
جمعه 26 مهر 1392, 14:32 عصر
ببخشید آقای شهرکی توی کد با لا که شما مثال زدید مگر نباید کدهای php را بین تگ های body نوشت؟ چرا شما این کدها را خارج از تگ body نوشته اید؟ دلیل خاصی داره یانه فرم نوشتنphpmailer اینجوری هست؟ من متوجه نمی شوم لطفا برام این کد را بطور کامل توضیح می دهید.؟توی درکش دچار مشکل شدم. و احتمالا چون نمی تونم درکش کنم هنوز موفق نشدم صفحه ام را اصلاح کنم.
ممنونم

sh.n.n786
جمعه 26 مهر 1392, 15:30 عصر
درود و ...
https://github.com/Synchro/PHPMailer
روی دکمه Download Zip سمت راست کلیک کنید

MMSHFE
جمعه 26 مهر 1392, 16:43 عصر
توی کدی که گذاشتم، اون متن HTML، کد HTML خود صفحه سایت نیست، بلکه متنی هست که قراره بعنوان ایمیل برای گیرنده ارسال بشه. بنابراین، طبیعیه که کدهای ارسال ایمیل داخلش نیست. اگه دقت کنید، متغیر message$ هست که قراره ارسال بشه.

SONITAJ
جمعه 03 آبان 1392, 14:35 عصر
سلام
من پوشه phpmailer را دانلود و توی ریشه وب سایتم گذاشتم و کد بالا(کدی که آقای شهرکی قرار داده اند) را هم توی صفحه contact.phpگذاشتم و اطلاعات مربوط به هاستم را داخل ان گذاشتم اما ارور تعریف نکردن متغیر $mail را می دهد با اینکه توی مثال بالا تعریف شده.
این خطا:
Notice: Undefined variable: email in /home/keyvans1/public_html/contact.php on line 84
این هم آدرس سایتم روی هاست تست :http://keyvansang.ir/contact.php
توی خط 84 این نوشته شده:
$mail->SetFrom('info@keyvansang.ir', 'keivan antique stone group');
چرا این خطا را می دهد؟لطفا راهنمایی می فرمایید؟

SONITAJ
یک شنبه 05 آبان 1392, 17:54 عصر
سلام کسی نیست راهنمایی کنه لطفا