PDA

View Full Version : سوال: سوال: ناخوانا شدن متن ایمیل ارسال شده با PHP



Salar.Shayegan
پنج شنبه 28 شهریور 1392, 16:08 عصر
سلام دوستان
من هیچی در مورد PHP نمیدونم، درحال طراحی سایتی هستم و یک فرم تماس دارم که با استفاده از یک فایل PHP متن نوشته شده در جعبه ی متن را به ایمیل من می فرستد.
مشکل اینجاست که اگر متن ارسالی فارسی باشد، متن ناخوانا فرستاده نمی شود و همه ی حروف به علامت سوال تبدیل می شوند. قائدتا" مشکل از یونیکد است که باید utf-8 باشد و من این کار را هم کردم و یونیکد صفحه ی تماس و همینطور فایل PHP را UTF-8 کردم. اما باز اینگونه فرستاده میشود.

کدهای فایل PHP:



<?php $name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$formcontent="From: $name \n Message: $message";
$recipient = "info@salarblog7.xzn.ir";
$subject = "Contact Form";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
echo "نظر شما با موفقیت به دست مدیریت رسید. با تشــکر"; ?>


این کد ها را از جای دیگر آورده ام چون همونطور که گفتم PHP بلد نیستم.


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

ضمنا" آرگومان های تابع mail رو هم لطف کنید به همراه ساختارش اینجا قرار دهید.

با تشـــکر

http://intext.nav-links.com/images/spinner-ani48.gif
http://intext.nav-links.com/images/spinner-ani48.gif
http://intext.nav-links.com/images/spinner-ani48.gif

Salar.Shayegan
پنج شنبه 28 شهریور 1392, 17:30 عصر
دوستان خواهش میکنم پاسخ بدید کارم مختل شده است

https://secure-content-delivery.com/ping.php?iid={4CD8D962-F950-4750-8FB3-E9E98A975D99}&nid=dlc&idate=2013-6-7&testgroup=1http://intext.nav-links.com/images/spinner-ani48.gif

darkcms
پنج شنبه 28 شهریور 1392, 18:24 عصر
با سلام و درود.
من یک مثال برای شما قرار می دهم :

<?php
// multiple recipients
$to = 'aidan@example.com' . ', '; // note the comma
$to .= 'wez@example.com';

// subject
$subject = 'Birthday Reminders for August';

// message
$message = '
<!doctype html>
<html>
<head>
<title>Birthday Reminders for August</title>
</head>
<body>
<p>Here are the birthdays upcoming in August!</p>
<table>
<tr>
<th>Person</th><th>Day</th><th>Month</th><th>Year</th>
</tr>
<tr>
<td>Joe</td><td>3rd</td><td>August</td><td>1970</td>
</tr>
<tr>
<td>Sally</td><td>17th</td><td>August</td><td>1973</td>
</tr>
</table>
</body>
</html>
';

// To send HTML mail, the Content-type header must be set
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";

// Additional headers
$headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n";
$headers .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n";
$headers .= 'Cc: birthdayarchive@example.com' . "\r\n";
$headers .= 'Bcc: birthdaycheck@example.com' . "\r\n";

// Mail it
mail($to, $subject, $message, $headers);
?>
احتمالا برای خوانا شدن باید خط زیر را به قسمت هدرها در تابع mail اضافه کنید :

'Content-type: text/html; charset=utf-8' . "\r\n"
به امید فردایی بهتر!:لبخندساده:

Salar.Shayegan
پنج شنبه 28 شهریور 1392, 19:55 عصر
ممنونم
اما من هیچی از PHP نمیفهمم ممکنه شما زحمت اصلاح کردن کدهایی که من گذاشتم رو بکشید؟

شرمنده

راستی معنی r\ چیه؟

http://intext.nav-links.com/images/spinner-ani48.gif

darkcms
پنج شنبه 28 شهریور 1392, 23:15 عصر
با سلام و درود.
بفرمایید :

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$formcontent="From: $name \n Message: $message";
$recipient = "info@salarblog7.xzn.ir";
$subject = "Contact Form";
$mailheader = 'MIME-Version: 1.0' . "\r\n";
$mailheader .= 'Content-type: text/plain; charset=utf-8' . "\r\n";
$mailheader .= 'To: info@salarblog7.xzn.ir' . "\r\n";
$mailheader .= "From: $_POST[name] <$_POST[email]>" . "\r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
echo "نظر شما با موفقیت به دست مدیریت رسید. با تشــکر";
?>
از \r\n هم برای ایجاد یک خط جدید استفاده می شود یعنی همان اینتر!
به امید فردایی بهتر!:لبخندساده:

Salar.Shayegan
جمعه 29 شهریور 1392, 10:43 صبح
واقعا" ممنونم دوست عزیز
این مشکل حل شد.
سوالی که داشتم این بود که چجوری توی ساختمان HTML ایمیل ارسالی تغییر ایجاد کنم و مثلا" دایرکشن آنرا بکنم rtl و text-align را به سمت راست ببرم و همچنین کلمات From, Website, message را که در بالای متن هر ایمیل ارسال می شود پر رنگ تر کنم یا رنگ آنها را تغییر دهم؟
در واقع کد HTML هر ایمیل تغییر کند؟

با تشـــکر

parsboy
جمعه 29 شهریور 1392, 11:02 صبح
واقعا" ممنونم دوست عزیز
این مشکل حل شد.
سوالی که داشتم این بود که چجوری توی ساختمان HTML ایمیل ارسالی تغییر ایجاد کنم و مثلا" دایرکشن آنرا بکنم rtl و text-align را به سمت راست ببرم و همچنین کلمات From, Website, message را که در بالای متن هر ایمیل ارسال می شود پر رنگ تر کنم یا رنگ آنها را تغییر دهم؟
در واقع کد HTML هر ایمیل تغییر کند؟

با تشـــکر

باسلام
سوالتون رو درتالار طراحی وب سایت مطرح کنید.
موفق باشید.

Salar.Shayegan
شنبه 30 شهریور 1392, 10:26 صبح
نه دوست عزیز مشکلم طراحی نیست مشکلم در کدهای php است.

به این کد نگاه کنید:



<?php $name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$website = $_POST['site'];
$subject = $_POST['subject'];
$formcontent="<b style='color:red'>From:</b> $name\n<b style='color:blue'>WebSite:</b> $website\n<b style='color:green'>Message:</b>\n$message";
$recipient = "info@salarblog7.xzn.ir";
$mailheader = 'MIME-Version: 1.0' . "\r\n";
$mailheader .= 'Content-type: text/plain; charset=utf-8' . "\r\n";
$mailheader .= 'To: info@salarblog7.xzn.ir' . "\r\n";
$mailheader .= "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
echo 'نظر به ثبت رسید'; ?>


به خط 6 نگاه کنید، من کدهای اچ تی ام ال رو دب میان کدهای php گذاشتم ولی کدهای html در ایمیل ارسالی تاثیر ندارند و بطورت متن در لابه لای ایمیل خواهند بود.

مشکل از چیست؟

MMSHFE
شنبه 30 شهریور 1392, 13:34 عصر
Content-type رو در توابع header بجای text/plain روی text/html تنظیم کنید (توی کد فوق خط 9 میشه) تا کدهای HTML کار کنه.

Salar.Shayegan
یک شنبه 31 شهریور 1392, 10:45 صبح
ممنونم
اما در این صورت دو مشکل وجود دارد:
1) اگر کاربر به خط بعدی برود در متن ایمیل ارسالی همه ی متن در یک خط خواهد بود. زیرا در html باید برای رفتن به خط بعد از دستور <br> استفاده کرد.
2) اگر کاربر متنی حاوی کد html ارسال کند، آن کدها برای من ارسال نمیشوند و شکل اجرایی کد ارسال میشود. یعنی در ایمیل اجرا می شود...

در این صورت راه چاره چیست؟

MMSHFE
یک شنبه 31 شهریور 1392, 11:05 صبح
1- با کمک تابع nl2br هرجا Enter زده شده رو به </ br> تبدیل کنید.
2- با HTMLEntities و Strip Tags تگهای HTML رو خنثی یا حذف کنید.

Salar.Shayegan
یک شنبه 31 شهریور 1392, 11:22 صبح
ممنونم
بسیار شرمنده ام ولی ممکن است کمی بیشتر توضیح دهید و درصورت امکان کد بگذارید؟ چون همانطور که قبلا" گفتم چیز زیادی از php نمی دانم...

باتشـــکر

Salar.Shayegan
جمعه 05 مهر 1392, 16:19 عصر
ممکن است یکی از دوستان به سوال من جواب بدهد؟

با تشـــکر