السلام عليكم :
درست التابع mail في php و قمت ببناء نموذج ارسال ايميل بسيط و رفعته على استضافة مجانية
و لكن أقوم بالإرسال و لا تصل أي رسال إلى العناوين التي أرسلها اليها
الكود وضعته بأول تعليق من أجل التنسيق
if (isset($_POST['sub'])) {
$to=$_POST['to'];
$subject=$_POST['subject'];
$body=$_POST['body'];
mail($to, $subject, $body);
}
لا أخي فأنا أراقب مجلد السبام و لا يوجد شيء
منذ قليل اشتغل معي الكود و استطعت الإرسال و لكن لا يتم الإرسال إلا إلى عنوان على الhotmail أما على الgmail فلا يتم استقبال أي رسالة و جربت الأمر مع عنوانين عليه
و هناك مشكلة فعنوان الرسالة و محتوياها عندما يكونان باللغة العربية يظهران بالشكل £Ù‡Ù„ا Ùˆ سهلا بك ÙÙŠ موقعنا
علما أن ترميز الصفحة هو utf_f و لا مشكلة مع اللغة العربية فيها
فما هو الحل ؟
كما قال لك الاخ الكريم " محمد طه "
او يمكنك تعديل الكود كما يلي :
$to=$_POST['to'];
$subject=$_POST['subject'];
$body=$_POST['body'];
if($_POST){
mail($to,$subject,$body);}
السلام عليكم.
أولا تأكد أن الدالة متوفرة في الاستضافة لديك.
بخصوص اللغة العربية فيجب عليك تحديد الترميز UTF أثناء الإرسال عند طلب الدالة mail كما في المثال التالي وهو لسكربت نموذج اتصال أستخدمه على أحد المواقع لدي
<?php
$EmailFrom = "sender@exemple.com";
$EmailTo = "receiver@exemple.com";
$Subject = "Subject";
$Name = Trim(stripslashes(htmlspecialchars($_POST['Name'])));
$City = Trim(stripslashes(htmlspecialchars($_POST['City'])));
$Email = Trim(stripslashes(htmlspecialchars($_POST['Email'])));
$Message = Trim(stripslashes(htmlspecialchars($_POST['Message'])));
// validation
$validationOK=true;
if (!$validationOK) {
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
exit;
}
// prepare email body text
$Body = "";
$Body .= "Name: ";
$Body .= $Name;
$Body .= "\n";
$Body .= "City: ";
$Body .= $City;
$Body .= "\n";
$Body .= "Email: ";
$Body .= $Email;
$Body .= "\n";
$Body .= "Message: ";
$Body .= $Message;
$Body .= "\n";
// send email
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>\r\nContent-Type: text/plain; charset=UTF-8\r\nContent-Transfer-Encoding: 8bit");
// redirect to success page
if ($success){
print "<meta http-equiv=\"refresh\" content=\"0;URL=thanks.php\">";
}
else{
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
}
?>
لن تصدقوا ماذا اكتشفت حتى أنني أشك بوجود جني في الإستضافة ^_^
الرسالة تصل إلى بريد الهوتميل بشرط واحد أن يكون بجسم الرسالة كلمة activate أي في البارمتر message
مثلا هذه الرسالة تصل و تعمل بشكل طبيعي
<?php
$to='alialoshy1993@hotmail.com';
$subject="hhhh";
$body="activate";
mail($to, $subject, $body);
?>
أما هذه فلا تعمل لأن جسم الرسالة لا يحوي الكلمة activate بشكل صحيح فقد حذفت منها أول حرف
<?php
$to='alialoshy1993@hotmail.com';
$subject="hhhh";
$body="ctivate";
mail($to, $subject, $body);
?>
و قد جربتها على استضافتين هما eb2a.com و ga2h.com و أيضا نفس النتائج مع ملاحظة أن الرسالة لا تصل إلى بريد الجي ميل فقط تصل إلى الهوتمل و لو كانت تحوي على الكلمة activate جربوها أنتم أيضا
اذا هي المشكلة من الإستضافة أي لا ترسل الرسالة الا اذا كانت تحوي على activate أما أنها من الهوتمل و الجي ميل الذين لا يستقبلان الرسائل
قم بتجربة هذا :)
if (isset($_POST['sub'])) {
$to=$_POST['to'];
$subject=$_POST['subject'];
$body=$_POST['body'];
$header = "From: "mail@domain.com";
mail($to, $subject, $body,$header);
}
التعليقات