PDA

View Full Version : سوال: مشکل کجاست ؟ send_form_email



djbagoor
یک شنبه 06 اردیبهشت 1394, 22:57 عصر
دوستان هر کاری می کنم نمی تونم ایمیل ارسال کنم :( مشکل کجاست؟؟


بخش مربوط از index.html :


<div class="col-lg-7 col-lg-offset-1">
<form role="form" method="post" action="/send_form_email.php" id="contactform">
<div class="form-group">
<div class="row">
<div class="col-lg-6">
<input type="text" class="form-control" id="name" name="name" placeholder="نام شما *"><br
class="gap-15" />
</div>
<div class="col-lg-6">
<input type="text" class="form-control" id="email" name="email" placeholder="ایمیل شما *"></div>
</div>
</div>
<div class="form-group">
<input type="text" class="form-control" id="subject" name="subject" placeholder="موضوع">
</div>
<div class="form-group">
<textarea class="form-control" id="message" name="message" rows="8"></textarea>
</div>
<button id="button-send" class="btn btn-block btn-success">
ارسال پیغام
</button>
<div id="success">
پیغام شما با موفقیت ارسال شد</div>
<div id="error">
قادر به ارسال پیام شما نیستیم، لطفا بعدا امتحان کنید.</div>
</form>
</div>


و فایل send_form_email.php هم :


<?php
// EDIT THE 2 LINES BELOW AS REQUIRED
$send_email_to = "shahab.alikhani@live.com";
$email_subject = "Your email subject line";
function send_email($name,$email,$email_message)
{
global $send_email_to;
global $email_subject;
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
$headers .= "From: ".$email. "\r\n";
$message = "<strong>Email = </strong>".$email."<br>";
$message .= "<strong>Name = </strong>".$name."<br>";
$message .= "<strong>Message = </strong>".$email_message."<br>";
@mail($send_email_to, $email_subject, $message,$headers);
return true;
}


function validate($name,$email,$message)
{
$return_array = array();
$return_array['success'] = '1';
$return_array['name_msg'] = '';
$return_array['email_msg'] = '';
$return_array['message_msg'] = '';
if($email == '')
{
$return_array['success'] = '0';
$return_array['email_msg'] = 'email is required';
}
else
{
$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
if(!preg_match($email_exp,$email)) {
$return_array['success'] = '0';
$return_array['email_msg'] = 'enter valid email.';
}
}
if($name == '')
{
$return_array['success'] = '0';
$return_array['name_msg'] = 'name is required';
}
else
{
$string_exp = "/^[A-Za-z .'-]+$/";
if (!preg_match($string_exp, $name)) {
$return_array['success'] = '0';
$return_array['name_msg'] = 'enter valid name.';
}
}

if($message == '')
{
$return_array['success'] = '0';
$return_array['message_msg'] = 'message is required';
}
else
{
if (strlen($message) < 2) {
$return_array['success'] = '0';
$return_array['message_msg'] = 'enter valid message.';
}
}
return $return_array;
}


$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];




$return_array = validate($name,$email,$message);


if($return_array['success'] == '1')
{
send_email($name,$email,$message);
}
header('Content-type: text/json');
echo json_encode($return_array);
die();
?>




هر باز فقط این پیغام نمایش داده می شه که :
قادر به ارسال پیام شما نیستیم، لطفا بعدا امتحان کنید.
و ایمیلی هم ارسال نمیشه :(

-سیّد-
دوشنبه 07 اردیبهشت 1394, 08:06 صبح
خوب اون طور که من فهمیدم، فرم شما با استفاده از AJAX فرستاده می‌شه، و خروجی که میاد بررسیش می‌کنه، اگه success اش برابر یک بود، پیغام «پیغام شما با موفقیت ارسال شد» رو نمایش می‌ده، و اگه success برابر صفر بود، پیغام «قادر به ارسال پیام شما نیستیم، لطفا بعدا امتحان کنید.» رو نمایش می‌ده.
پس با توجه به این که می‌گید پیغام دوم نمایش داده می‌شه، باید ببینید چرا success داره صفر می‌شه. یعنی تابع validate داره success رو صفر می‌ده، در نتیجه اصلاً وارد تابع send_email نمی‌شید.

لطفاً با استفاده از ابزاری مثل firebug ببینید چه پیغامی از سرور برای client میاد که باعث می‌شه این خطا رو نشون بده.