• 2 رای - 2.5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
رفتن به سر خط
#1
سلام.

یک مشکل داشتم که امیدوارم بتونم به درستی بیانش کنم. من یک کد PHP دارم برای فرم تماس با ما ( ارسال ایمیل ) تنها مشکلم اینه که وقتی ایمیل دریافت میشه، در ایمیل دریافتی در بخشی که طرف پیامش رو نوشته (آنچه که در textarea ) نوشته همه پشت سر هم می آد. به عنوان مثال من نامه رو با اوت لوک می گیرم. در اوتلوک یک اسکرول افقی می خوره که اگه متن طرف طولانی باشه این اسکرول افقی خیلی خواهد بود. ( البته اگه طرف اینتر زده باشه می ره ابتدای خط بعد )

در صورتی که در ایمیل های دیگر این مشکل نیست. حتی اگه طرف در متنش اینتر نزده باشه، در ایمیل دریافتی به اندازه صفحه (در اوتلوک یا مثلاجی میل) متن خواهد بود و بعد خودش می ره خط بعد. به عبارتی اسکرول عمودی می خوره نه افقی. خب حالا باید چه کرد؟

اینم کد:

کد پی‌اچ‌پی:
<?PHP
//Input Data

$Email_Addresse "test@test.com";
$Redirect_Page "thanks.html";
$Subject "Comments";
$From "Contact Form <contact@test.com>";

//Setting /Please don't change, if you don't know PHP & HTML 
$headers 'MIME-Version: 1.0' "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' "\r\n";
$headers .= "From: $From"\r\n";
$Body "<html><head><title>Html Mail</title></head><pre>";
//
if (count($_POST) > 0) { $pog $_POST$method "POST"; }
else if (
count($_GET) > 0) { $pog $_GET$method "GET"; }
else print 
"Error";
if (isset(
$pog))
{
    
reset($pog);
    foreach (
$pog as $name => $value)
    {
        
$Body .= "<font style='font:bold 12px tahoma,sans-serif' color='#000080'>$name:</font><font style='font:normal 12px tahoma,sans-serif' color='#000000'> $value</font>" "<br>";
    }
    
$Body .= "</pre></body></html>";
    if (
mail($Email_Addresse,$Subject,$Body,$headers) ) {
    
header("Location:$Redirect_Page");
    }
}
?>



عید هم پیشاپیش مبارکSmile
  پاسخ
تشکر شده توسط : Y.P.Y
#2
سلام
شما ایمیلتو با فرمت HTML میفرستی پس باید متنی که از Textarea میگیری قبل از ارسال به اچ تی ام ال تبدیل کنی یا در واقع کارکتر های نیو لاین را به فرمت قابل پردازش در HTML تبدیل کنی.
شما باید از تابع nl2br برای تبدیل نیو لاین ها استفاده کنی یا ایمیلتو با فرمت تکست بفرستی.
Two hands working can do more than a thousand clasped in prayer
  پاسخ
تشکر شده توسط : Y.P.Y Azemati
#3
(۱۳۸۷ اسفند ۳۰, ۰۲:۲۱ ب.ظ)میلاد نوشته: سلام
شما ایمیلتو با فرمت HTML میفرستی پس باید متنی که از Textarea میگیری قبل از ارسال به اچ تی ام ال تبدیل کنی یا در واقع کارکتر های نیو لاین را به فرمت قابل پردازش در HTML تبدیل کنی.
شما باید از تابع nl2br برای تبدیل نیو لاین ها استفاده کنی یا ایمیلتو با فرمت تکست بفرستی.
ممنونم. نه نمیخوام به صورت تکست بفرستم.

خب میشه بگی باید چه جوری از این تابع استفاده کنم؟ اگه وقتت رو زیاد نمی گیره ممنون میشم بنویسیش.
  پاسخ
تشکر شده توسط : Y.P.Y
#4
به عنووان مثال فرض میکنیم اسم textarea باشه body شما کد بالا را اینجوری بنویس:
کد پی‌اچ‌پی:
...
...
    foreach (
$pog as $name => $value)
    {
        if(
$name == 'body'$value nl2br($value);
        
$Body .= "<font style='font:bold 12px tahoma,sans-serif' color='#000080'>$name:</font><font style='font:normal 12px tahoma,sans-serif' color='#000000'> $value</font>" "<br>";
    }
...
... 
Two hands working can do more than a thousand clasped in prayer
  پاسخ
تشکر شده توسط : Y.P.Y Azemati
#5
یه راه خوشگل تر هم فکر کنم باشه
اینکه در textarea از TinyMCE استفاده کنی
هم فرم ارسال شیک تر و زیبا تر می شه هم این مشکل حل می شه !
[عکس: logo-small.jpg]
  پاسخ
تشکر شده توسط :
#6
(۱۳۸۷ اسفند ۳۰, ۰۳:۱۸ ب.ظ)میلاد نوشته: به عنووان مثال فرض میکنیم اسم textarea باشه body شما کد بالا را اینجوری بنویس:
کد پی‌اچ‌پی:
...
...
    foreach (
$pog as $name => $value)
    {
        if(
$name == 'body'$value nl2br($value);
        
$Body .= "<font style='font:bold 12px tahoma,sans-serif' color='#000080'>$name:</font><font style='font:normal 12px tahoma,sans-serif' color='#000000'> $value</font>" "<br>";
    }
...
... 
ممنونم از پاسخ.

انجام دادم ولی هیچ تغییری نکرد. در واقع فقط این خط کد رو اضافه کردم و اسم textarea رو به body تغییر دادم ولی اثر نکرد.

کد پی‌اچ‌پی:
if($name == 'body'$value nl2br($value); 

چرا؟
  پاسخ
تشکر شده توسط :
#7
ممنون میشم دوستان راهنمایی کنند.
  پاسخ
تشکر شده توسط :
#8
if رو بردار و فقط این رو اضافه کن
کد پی‌اچ‌پی:
$value nl2br($value); 
  پاسخ
تشکر شده توسط : Azemati
#9
به این صورت عمل کردم ولی فرقی نکرد و مشکل همچنان باقی است:

کد پی‌اچ‌پی:
    {
    
$value nl2br($value);
        
$Body .= "<font style='font:bold 12px tahoma,sans-serif' color='#004A00'>$name:</font><font style='font:normal 12px tahoma,sans-serif' color='#000000'> $value</font>" "<br>";
    } 
  پاسخ
تشکر شده توسط :
#10
شرمنده ... خبری نیست از جواب؟
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان