تصحیح کد ارسال ایمیل

arman2000

New Member
سلام
من برای دریافت اطلاعات از طریق باکس در صفحه html، از کد PHP (کد تماس با ما: دو فایل با نام های email.php و mail.conf.php) استفاده کردم که بعد از کلیک دکمه ارسال (send)، به صفحه html دیگری که در اون نوشته شده "پیام با موفقیت ارسال شد" می رود. عیبی که داره با زدن دکمه Back صفحه، اطلاعاتی رو که داخل باکس تایپ شده بود دوباره دیده می شه

کد فرم
HTML:
<FORM onsubmit="return CheckForm(this);" action=email.php method=post>
<INPUT size=25 name=name style="font-family: Tahoma; valign: middle; font-size: 13px; color: #000080; text-align:center"></P>
<INPUT style="FONT-SIZE: 8pt; FONT-FAMILY: Tahoma; TEXT-ALIGN: center" type=submit value="  ارسال  "></p>
<SCRIPT language=JavaScript> 
<!-- 
function CheckForm(formID) { 
 if (formID.name.value == "") { alert("لطفا نام خود را وارد کنيد"); formID.name.focus(); return false; } 
 return true; 
} 
//
--> 
</SCRIPT>

1- می خواستم راهنمایی کنید تا بتونم کدها رو طوری تغییر بدم که در همون صفحه که باکس و دکمه ارسال هست بعد از کلیک دکمه send، اطلاعات فرستاده بشه و پنجره ای (Message) باز بشه با متن "پیام با موفقیت ارسال شد" که شامل دکمه OK باشه و بعد از کلیک اون (OK)، همون صفحه با باکس خالی دیده شه (نه به یک صفحه html دیگه که موفقیت در ارسال رو نمایش میده بره).

2- اگه بخوایم علاوه بر متن، Attach هم ارسال بشه، چه تغییری باید در کد فایل .php و فرم صفحه html داد؟

کد فایل email.php
PHP:
<?
############################
include 'mail.conf.php';
############################
$top='<html dir="rtl">
<head>
<meta http-equiv="Content-Language" content="fa">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<div align="center">
 <p style="margin-top: 0; margin-bottom: 0">
 <font face="Tahoma" size="1" color="#003366">به نام خدا</font></p>
 <p style="margin-top: 0; margin-bottom: 0"><b>
 <font face="Tahoma" size="1" color="#003366">محتویات فرم ارسال شده</font></b></p>
 <p style="margin-top: 0; margin-bottom: 0"><font face="Tahoma" size="1">&nbsp;</font></p>
 <table border="0" cellpadding="0" style="border-collapse: collapse" width="500" height="20" bordercolor="#000000" id="table1">
  <tr>
   <td width="161" height="24" style="border-style: solid; border-width: 1px" bgcolor="#F4F4F4" bordercolor="#333333">
   <p align="center" style="margin: 2px 5px"><b>
   <font face="Tahoma" style="font-size: 9pt">نام گزینه</font></b></td>
   <td height="24" style="border-style: solid; border-width: 1px" bgcolor="#F4F4F4" bordercolor="#333333">
   <p align="center" style="margin: 2px 5px"><b>
   <font face="Tahoma" style="font-size: 9pt">&nbsp;اطلاعات وارد شده توسط
   کاربر</font></b></td>
  </tr>';
##############################
$body='  <tr>
   <td width="161" style="border-style: solid; border-width: 1px" height="24" bordercolor="#333333">
   <p align="center" style="margin: 2px 5px"><span lang="en-us">
   <font face="Tahoma" style="font-size: 9pt">%field</font></span></td>
   <td style="border-style: solid; border-width: 1px" height="24" bordercolor="#333333">
   <p align="justify" style="margin: 2px 10px; "><span lang="en-us">
   <font face="Tahoma" style="font-size: 9pt">%info</font></span></td>
  </tr>';
##############################
$footer=' </table>
 <p style="margin-top: 0; margin-bottom: 0">&nbsp;</p>
 <p style="margin-top: 0; margin-bottom: 0"><b><font face="Tahoma" size="1">&nbsp;</font></b></div>
<div align="center">
 <table border="0" cellpadding="0" style="border-collapse: collapse" width="500" height="20" bordercolor="#000000" id="table2">
  <tr>
   <td height="25" style="border-style: solid; border-width: 1px" bgcolor="#F2CC84" colspan="2" bordercolor="#333333">
 <p style="margin-top: 0; margin-bottom: 0" align="center"><b>
 <font face="Tahoma" size="1" color="#800000">مشخصات کاربر</font></b></p>
   </td>
  </tr>
  <tr>
   <td width="161" height="25" style="border-style: solid; border-width: 1px" bordercolor="#333333">
   <p align="center" style="margin: 2px 5px">
   <font face="Tahoma" style="font-size: 9pt">آدرس آی پی</font></td>
   <td height="25" style="border-style: solid; border-width: 1px" bordercolor="#333333">
   <p align="center" style="margin: 2px 5px"><span lang="en-us">
   <font face="Tahoma" style="font-size: 9pt">%ip</font></span></td>
  </tr>
  <tr>
   <td width="161" style="border-style: solid; border-width: 1px" height="25" bordercolor="#333333">
   <p align="center" style="margin: 2px 5px">
   <font face="Tahoma" style="font-size: 9pt">لینک معرف</font></td>
   <td style="border-style: solid; border-width: 1px" height="25" bordercolor="#333333">
   <p align="center" style="margin: 2px 5px"><span lang="en-us">
   <font face="Tahoma" style="font-size: 9pt">%link</font></span></td>
  </tr>
  </table>
 <p align="center" style="margin: 2px 5px">&nbsp;<p align="center" style="margin: 2px 5px">&nbsp;</div>
<p align="center" dir="ltr" style="margin-top: 2px; margin-bottom: 2px">
<span lang="en-us"><font face="Verdana" size="1" color="#333333">if you can,t
Read this , change the encoding to UTF-8</font></span></p>
<p align="center" style="margin-top: 2px; margin-bottom: 2px">
<span lang="en-us"><font size="1" face="Verdana">
<a href="http://www.siqma.com"><font color="#800000">Powered By: www.siqma.com</font></a></font></span></p>
<p align="center">&nbsp;</p>
</body>
</html>';
##############################
if (isset($_POST['email']))
 $email=$_POST['email'];
else
 $email=$from;
if (isset($_POST['subject']))
 $subject=$_POST['subject'];
##############################
$header='From: "'.$email.'" <'.$email.">\r\n"
.'Reply-To: "'.$email.'" <'.$email.">\r\n"
.'To:<'.$to.">\r\n"
."Mime-Version: 1.0\r\n"
."Content-type: text/html; charset=utf-8\r\n"
."Content-Transfer-Encoding: 7bit\r\n";
##############################
$main='';
foreach($_POST as $k => $v)
 {
    $lists=$body;
 $lists=ereg_replace('%field',$k,$body);
    $lists=ereg_replace('%info',$v,$lists);
    $main .=$lists;
    }
#############################
$ip= $_SERVER['REMOTE_ADDR'];
$link=$_SERVER['HTTP_REFERER'];
$footer=ereg_replace('%ip',$ip,$footer);
$footer=ereg_replace('%link',$link,$footer);
$body=$top.$main.$footer;
mail($to,$subject,$body, $header);
header("location: $redirect")
?>

کد فایل mail.conf.php
PHP:
<?
#####################################################
$to='[email protected]';
$subject=Mail;
$redirect='http://page.htm';
$from='mail';
#####################################################
?>

ممنون می شم راهنمایی بفرمایید
 

Masoud1365

مدیر انجمن
اول که از کلاس phpmailer استفاده کن که فایل رو هم راحت ضمیمه کنی.
دوم که فرم کدنویسیتو اگر اینجوری که پائین نوشتم بکنب همون جا پیام رو به کاربر نوشون میده و نیازی هم به redirect نیست . اکشن فرم رو هم خالی بزار.
PHP:
if (email send){
    //echo 'Ersal shod';
}
else {
    //echo 'ersal nashod';
}
//show contact us form
 

arman2000

New Member
دوست عزیز، من از فرات پیج استفاده می کنم. این دو فایل PHP رو هم تغیییر دادم و استفاده می کنم. امکان داره تا تغییری توی همین دو فایل بدم تا درخواستم اجرا بشه؟ یا فقط باید از کلاس phpmailer استفاده کنم؟ اگر نه ممنون می شم نمونه ای از کلاس phpmailer بذارید.
 

Masoud1365

مدیر انجمن
برای این گفتم از کلاس phpmailer استفاده کنید که هم ایمیل هاتون به پوشه اسپم نره هم بتونید راحت فایل attach کنید و ...
با همین کد هم میشه ایمیل ارسال کرد یکمی باید تغیرش بدید و همه رو در قالب یک فایل php بزارید.
استفاده از کلاس phpmailer هم داخل همین انجمن هست یه سرچی بکنید.:wink:
موفق باشید
 

arman2000

New Member
دوست من چه تغييري بايد بدم؟
نمي تونم از قالب html براي فرمم استفاده كنم؟ (چون بقيه صفحاتم html هست)
 

Masoud1365

مدیر انجمن
مگه الان نمیفرسته ؟
درباره ارسال ایمیل یه سرچی بکنید کلا فرایند سختی نیست درساده ترین حالت با استفاده از تابع mail این کار انجام پذیر هست.
اینجا رو مطالعه بفرمائید.
 

arman2000

New Member
دوست من توی فایل email.php که کدشو بالا گذاشتم فرمت html براش در نظر گرفته شده. توی این لینکی که پیشنهاد دادید فرمت خروجی، php هست که من خیلی آشنا به اون نیستم.چطور می تونم اون رو مثل فایل email.php تغییر بدم؟
 

Masoud1365

مدیر انجمن
چون گفتی php بلد نیستی همه رو در قالب یه فایل درست کردم و از تابع و کلاس هم استفاده نکردم که راحت باشی. تنظیمات و همه چیز هم داخل همین قسمت هست چکش نکردم کدهای خودت هست فقط اووردم توی یک فایل . کدها رو که بخونی مشخص هست .
PHP:
<?php

/**
 * @author Masoud
 * @copyright 2010
 */

$to='[email protected]';
$subject=Mail;
$redirect='http://page.htm';
$from='mail';
$top='<html dir="rtl">
<head>
<meta http-equiv="Content-Language" content="fa">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<div align="center">
 <p style="margin-top: 0; margin-bottom: 0">
 <font face="Tahoma" size="1" color="#003366">به نام خدا</font></p>
 <p style="margin-top: 0; margin-bottom: 0"><b>
 <font face="Tahoma" size="1" color="#003366">محتویات فرم ارسال شده</font></b></p>
 <p style="margin-top: 0; margin-bottom: 0"><font face="Tahoma" size="1">&nbsp;</font></p>
 <table border="0" cellpadding="0" style="border-collapse: collapse" width="500" height="20" bordercolor="#000000" id="table1">
  <tr>
   <td width="161" height="24" style="border-style: solid; border-width: 1px" bgcolor="#F4F4F4" bordercolor="#333333">
   <p align="center" style="margin: 2px 5px"><b>
   <font face="Tahoma" style="font-size: 9pt">نام گزینه</font></b></td>
   <td height="24" style="border-style: solid; border-width: 1px" bgcolor="#F4F4F4" bordercolor="#333333">
   <p align="center" style="margin: 2px 5px"><b>
   <font face="Tahoma" style="font-size: 9pt">&nbsp;اطلاعات وارد شده توسط
   کاربر</font></b></td>
  </tr>';
##############################
$body='  <tr>
   <td width="161" style="border-style: solid; border-width: 1px" height="24" bordercolor="#333333">
   <p align="center" style="margin: 2px 5px"><span lang="en-us">
   <font face="Tahoma" style="font-size: 9pt">%field</font></span></td>
   <td style="border-style: solid; border-width: 1px" height="24" bordercolor="#333333">
   <p align="justify" style="margin: 2px 10px; "><span lang="en-us">
   <font face="Tahoma" style="font-size: 9pt">%info</font></span></td>
  </tr>';
##############################
$footer=' </table>
 <p style="margin-top: 0; margin-bottom: 0">&nbsp;</p>
 <p style="margin-top: 0; margin-bottom: 0"><b><font face="Tahoma" size="1">&nbsp;</font></b></div>
<div align="center">
 <table border="0" cellpadding="0" style="border-collapse: collapse" width="500" height="20" bordercolor="#000000" id="table2">
  <tr>
   <td height="25" style="border-style: solid; border-width: 1px" bgcolor="#F2CC84" colspan="2" bordercolor="#333333">
 <p style="margin-top: 0; margin-bottom: 0" align="center"><b>
 <font face="Tahoma" size="1" color="#800000">مشخصات کاربر</font></b></p>
   </td>
  </tr>
  <tr>
   <td width="161" height="25" style="border-style: solid; border-width: 1px" bordercolor="#333333">
   <p align="center" style="margin: 2px 5px">
   <font face="Tahoma" style="font-size: 9pt">آدرس آی پی</font></td>
   <td height="25" style="border-style: solid; border-width: 1px" bordercolor="#333333">
   <p align="center" style="margin: 2px 5px"><span lang="en-us">
   <font face="Tahoma" style="font-size: 9pt">%ip</font></span></td>
  </tr>
  <tr>
   <td width="161" style="border-style: solid; border-width: 1px" height="25" bordercolor="#333333">
   <p align="center" style="margin: 2px 5px">
   <font face="Tahoma" style="font-size: 9pt">لینک معرف</font></td>
   <td style="border-style: solid; border-width: 1px" height="25" bordercolor="#333333">
   <p align="center" style="margin: 2px 5px"><span lang="en-us">
   <font face="Tahoma" style="font-size: 9pt">%link</font></span></td>
  </tr>
  </table>
 <p align="center" style="margin: 2px 5px">&nbsp;<p align="center" style="margin: 2px 5px">&nbsp;</div>
<p align="center" dir="ltr" style="margin-top: 2px; margin-bottom: 2px">
<span lang="en-us"><font face="Verdana" size="1" color="#333333">if you can,t
Read this , change the encoding to UTF-8</font></span></p>
<p align="center" style="margin-top: 2px; margin-bottom: 2px">
<span lang="en-us"><font size="1" face="Verdana">
<a href="http://www.siqma.com"><font color="#800000">Powered By: www.siqma.com</font></a></font></span></p>
<p align="center">&nbsp;</p>
</body>
</html>';
##############################
if (isset($_POST['email']))
 $email=$_POST['email'];
else
 $email=$from;
if (isset($_POST['subject']))
 $subject=$_POST['subject'];
##############################
$header='From: "'.$email.'" <'.$email.">\r\n"
.'Reply-To: "'.$email.'" <'.$email.">\r\n"
.'To:<'.$to.">\r\n"
."Mime-Version: 1.0\r\n"
."Content-type: text/html; charset=utf-8\r\n"
."Content-Transfer-Encoding: 7bit\r\n";
##############################
$main='';
foreach($_POST as $k => $v)
 {
    $lists=$body;
 $lists=ereg_replace('%field',$k,$body);
    $lists=ereg_replace('%info',$v,$lists);
    $main .=$lists;
    }
#############################
$ip= $_SERVER['REMOTE_ADDR'];
$link=$_SERVER['HTTP_REFERER'];
$footer=ereg_replace('%ip',$ip,$footer);
$footer=ereg_replace('%link',$link,$footer);
$body=$top.$main.$footer;
if (mail($to,$subject,$body, $header)){
    echo 'Ersal shod !';
}
else {
    echo 'ersal nashod !';
}
?>
<FORM onsubmit="return CheckForm(this);" action="" method=POST>
<INPUT size=25 name=name style="font-family: Tahoma; valign: middle; font-size: 13px; color: #000080; text-align:center"></P>
<INPUT style="FONT-SIZE: 8pt; FONT-FAMILY: Tahoma; TEXT-ALIGN: center" type=submit value="  ارسال  "></p>
<SCRIPT language=JavaScript> 
<!-- 
function CheckForm(formID) { 
 if (formID.name.value == "") { alert("لطفا نام خود را وارد کنيد"); formID.name.focus(); return false; } 
 return true; 
} 
//
--> 
</SCRIPT>
 

arman2000

New Member
ممنونم
attach چی؟ با این کد امکانش هست یا باید دوباره تغییر کنه؟
بزرگوار پاک شدن نوشته های باکس هم بعد از ارسال برام مهمه.
 
آخرین ویرایش:

Masoud1365

مدیر انجمن
نوشته ها که بعد از ارسال پاک میشن ! ولی من خودم برای attach فایل از phpmailer استفاده کردم .
اینجوری بخوایی بفرستی یکمی سخته این مثال هست :
PHP:
<?php
$to      = $_POST['to']; 
$email   = $_POST['email']; 
$name    = $_POST['name'];
$subject = $_POST['subject']; 
$comment = $_POST['message'];

$To          = strip_tags($to);
$TextMessage =strip_tags(nl2br($comment),"<br>");
$HTMLMessage =nl2br($comment);
$FromName    =strip_tags($name);
$FromEmail   =strip_tags($email);
$Subject     =strip_tags($subject);

$boundary1   =rand(0,9)."-"
.rand(10000000000,9999999999)."-"
.rand(10000000000,9999999999)."=:"
.rand(10000,99999);
$boundary2   =rand(0,9)."-".rand(10000000000,9999999999)."-"
.rand(10000000000,9999999999)."=:"
.rand(10000,99999);

 
for($i=0; $i < count($_FILES['youfile']['name']); $i++){
if(is_uploaded_file($_FILES['fileatt']['tmp_name'][$i]) && 
   !empty($_FILES['fileatt']['size'][$i]) && 
   !empty($_FILES['fileatt']['name'][$i])){
     
$attach      ='yes';
$end         ='';

   $handle      =fopen($_FILES['fileatt']['tmp_name'][$i], 'rb'); 
   $f_contents  =fread($handle, $_FILES['fileatt']['size'][$i]); 
   $attachment[]=chunk_split(base64_encode($f_contents));
   fclose($handle); 

$ftype[]       =$_FILES['fileatt']['type'][$i];
$fname[]       =$_FILES['fileatt']['name'][$i];
}
}

/***************************************************************
 Creating Email: Headers, BODY
 1- HTML Email WIthout Attachment!! <<-------- H T M L ---------
 ***************************************************************/
#---->Headers Part
$Headers     =<<<AKAM
From: $FromName <$FromEmail>
Reply-To: $FromEmail
MIME-Version: 1.0
Content-Type: multipart/alternative;
    boundary="$boundary1"
AKAM;

#---->BODY Part
$Body        =<<<AKAM
MIME-Version: 1.0
Content-Type: multipart/alternative;
    boundary="$boundary1"

This is a multi-part message in MIME format.

--$boundary1
Content-Type: text/plain;
    charset="windows-1256"
Content-Transfer-Encoding: quoted-printable

$TextMessage
--$boundary1
Content-Type: text/html;
    charset="windows-1256"
Content-Transfer-Encoding: quoted-printable

$HTMLMessage

--$boundary1--
AKAM;

/***************************************************************
 2- HTML Email WIth Multiple Attachment <<----- Attachment ------
 ***************************************************************/
 
if($attach=='yes') {

$attachments='';
$Headers     =<<<AKAM
From: $FromName <$FromEmail>
Reply-To: $FromEmail
MIME-Version: 1.0
Content-Type: multipart/mixed;
    boundary="$boundary1"
AKAM;

for($j=0;$j<count($ftype); $j++){
$attachments.=<<<ATTA
--$boundary1
Content-Type: $ftype[$j];
    name="$fname[$i]"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
    filename="$fname[$j]"

$attachment[$j]

ATTA;
}

$Body        =<<<AKAM
This is a multi-part message in MIME format.

--$boundary1
Content-Type: multipart/alternative;
    boundary="$boundary2"

--$boundary2
Content-Type: text/plain;
    charset="windows-1256"
Content-Transfer-Encoding: quoted-printable

$TextMessage
--$boundary2
Content-Type: text/html;
    charset="windows-1256"
Content-Transfer-Encoding: quoted-printable

$HTMLMessage

--$boundary2--

$attachments
--$boundary1--
AKAM;
}

/***************************************************************
 Sending Email
 ***************************************************************/
$ok=mail($To, $Subject, $Body, $Headers);
echo $ok?"<h1> Mail Sent</h1>":"<h1> Mail not SEND</h1>";
?>
اگر که با phpmailer کار کنی راحت تری :wink:
 

arman2000

New Member
ممنونم دوست من
اين مثالي كه زديد كادر Browse داخل فرم html بايد قرار بدم يا توي فرم php هست؟
 

جدیدترین ارسال ها

بالا