authenticate کردن فایل php برای ارسال ایمیل

samangeraphic

Active Member
سلام
دوستان خواهشا این مشکل ما رو یکی حل کنه که بد توش موندم
من یه فرم ارسال ایمل با فلش ساختم که به واسطه یه فایل php اطلاعاتو به ایمل خاصی میفرسته
حالا مشکل تو این فایل php هست که رو بعضی هاست ها جواب میده و رو بعضی جواب نمیده
از مدیر هاست پرسیدم گفت باید فایل php تون authenticate بشه
یه نمونه php واسه ایمیل زدن داد و گفت باید فایلتون بر این اساس باشه
حالا میخوام یکی بیاد این فایل خودمو بدون اینکه اطلاعات اصلی توش تغییر کنه با اون فایل دوم که مدیر هاست داده هماهنگ کنه
حالا نمیدونم چی باید کم و زیاد بشه
دیگه اونو شما استادید

فایل اولی خودم :

PHP:
<?php
Error_Reporting(E_ALL & ~E_NOTICE);
 while ($request = current($_REQUEST)) {
  if (key($_REQUEST)!='recipient') {
  $pre_array=split ("&777&",  $request);
 
  $post_vars[key($_REQUEST)][0]=preg_replace ("/<[^>]*>/", "", $pre_array[0]);
  $post_vars[key($_REQUEST)][1]=preg_replace ("/<[^>]*>/", "", $pre_array[1]);
 }
 next($_REQUEST);
}
 
reset($post_vars);
 
$subject=$post_vars['subject'][0] ;
$headers= "From: ".$post_vars['your_email'][0] ."\n";
 $headers.='Content-type: text/html; charset=iso-8859-1';
 $message='';
  while ($mess = current($post_vars)) {
   if ((key($post_vars)!="i") && (key($post_vars)!="your_email") && (key($post_vars)!="your_name")) {
   $message.="<strong>".$mess[1]."</strong>&nbsp;&nbsp;&nbsp;".$mess[0]."<br>";
 }
 next($post_vars);
 }
mail($_REQUEST['recipient'], $subject,  "
<html>
<head>
 <title>Contact letter</title>
</head>
<body>
<br>
  ".$message."
</body>
</html>" , $headers);
echo ("Your message was successfully sent!");
?>
<script>
 resizeTo(300, 300);
</script>





فایلی که مدیر هاست به عنوان نمونه داده :

PHP:
<?require("class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsSMTP(); // send via SMTP
$mail->Host = "mail.yourdomain.com"; // SMTP server
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Username = "[email protected]"; // SMTP username
$mail->Password = "youremailpassword"; // SMTP password
$mail->From = "[email protected]";
$mail->FromName = "Your Name";
$mail->AddAddress("[email protected]","Somebody name");
$mail->AddReplyTo("[email protected]","Your Name");
$mail->WordWrap = 50; // set word wrap
$mail->AddAttachment("Path to Attachment "); // attachment
$mail->IsHTML(true); // send as HTML
$mail->CharSet="utf-8"; 
$mail->Subject = "Here is the subject";
$mail->Body = "This is the <b>HTML body</b>";
$mail->AltBody = "This is the text-only body";
if(!$mail->Send())
{
echo "Message was not sent <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}
echo "Message has been sent";
?>



در واقع تغییرات لازم باید تو کد اولی صورت بگیره که مطابق باشه با کد دوم که مدیر هاست داده

ممنون


:rose::rose::rose:
 
آخرین ویرایش:

Domanjiri

Well-Known Member
سلام

شما از تابع میل خود PHP استفاده کردین و کد پایینی از کلاس PHPMailer که صد البته راه دوم بهتره.

این کلاس رو از اینجا دانلود کن و توی اسکریپت include ِش کن (همونطور که کد پایین اینکار رو کرده!) و بعد هم از کد استفاده کن.

دوست من، اگه به اسم instance ها دقت کنی، کارشون رو متوجه میشی. مثلنmail->Subject$ موضوع ایمیل هست و ...

موفق باشی
 

samangeraphic

Active Member
سلام

شما از تابع میل خود PHP استفاده کردین و کد پایینی از کلاس PHPMailer که صد البته راه دوم بهتره.

این کلاس رو از اینجا دانلود کن و توی اسکریپت include ِش کن (همونطور که کد پایین اینکار رو کرده!) و بعد هم از کد استفاده کن.

دوست من، اگه به اسم instance ها دقت کنی، کارشون رو متوجه میشی. مثلنmail->Subject$ موضوع ایمیل هست و ...

موفق باشی

دوست عزیز خیلی لطف کردی اما من از php سر در نمیارم که بخوام این کار هارو بکنم:cry:
میشه یه زحمتی بکشی اینو برام درست کنی :rose:
 

samangeraphic

Active Member
دوستان گلم کسی کار ما رو راه نمیندازه؟ :paint:
اگه میشه کد ویرایش شده رو برام بذارید چون من نمیتونم ویرایش کنم
مرسی
 

Domanjiri

Well-Known Member
جان؟ والا ما کار راه انداز نیستیم ولی خُب..:)green: می دونید کار راه انداز به کی میگن دیگه؟ )

کار سختی نیست، خودتون یه چند دقیقه به کد خیره بشین(!!) جدی میگم:wink:

به جای این قسمت:
PHP:
mail($_REQUEST['recipient'], $subject,  "
<html>
<head>
 <title>Contact letter</title>
</head>
<body>
<br>
  ".$message."
</body>
</html>" , $headers);
echo ("Your message was successfully sent!");
این کد رو قرار بدین:
PHP:
require("phpmailer/class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsSMTP(); 
/**  اسم میل سرور سایت ، معمولن اگه جای "یور دامین" اسم سایت حودتون رو بزارید حله **/
$mail->Host = "mail.yourdomain.com"; 
$mail->SMTPAuth = true; 
/**  این دوتا که معلومه دیگه **/
$mail->Username = "[email protected]"; // SMTP username
$mail->Password = "youremailpassword"; // SMTP password
$mail->From = $post_vars['your_email'][0];
/** اسم ارسال کننده **/
$mail->FromName = "Your Name";
$mail->AddAddress($_REQUEST['recipient']," ");
$mail->IsHTML(true); // send as HTML
$mail->CharSet="utf-8"; 
$mail->Subject = $subject;
$mail->Body = "
<html>
<head>
 <title>Contact letter</title>
</head>
<body>
<br>
  ".$message."
</body>
</html>";
$mail->AltBody =$message; 
if(!$mail->Send())
{
echo "Message was not sent <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}
echo "Message has been sent";
بعدش هم کلاس مذکور رو دانلود کنید و در پوشه ی phpmailer بریزید.

یه جاهایی از کد رو دیگه خودتون باید بنویسید، مثلن username و password که اتفاقن مشکل شما هم از همینجا بوده..

در ضمن من درست اجرا شدن کدتون رو تضمین نمی کنمااا !، من فقط یه جابجایی ساده انجام دادم (با چنتا کپی پیست!) که اگه دقت کنید، خودتون هم می تونستید انجامش بدین..

موفق باشین
 
آخرین ویرایش:

samangeraphic

Active Member
جان؟ والا ما کار راه انداز نیستیم ولی خُب..:)green: می دونید کار راه انداز به کی میگن دیگه؟ )

کار سختی نیست، خودتون یه چند دقیقه به کد خیره بشین(!!) جدی میگم:wink:

به جای این قسمت:
PHP:
mail($_REQUEST['recipient'], $subject,  "
<html>
<head>
 <title>Contact letter</title>
</head>
<body>
<br>
  ".$message."
</body>
</html>" , $headers);
echo ("Your message was successfully sent!");
این کد رو قرار بدین:
PHP:
require("phpmailer/class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsSMTP(); 
/**  اسم میل سرور سایت ، معمولن اگه جای "یور دامین" اسم سایت حودتون رو بزارید حله **/
$mail->Host = "mail.yourdomain.com"; 
$mail->SMTPAuth = true; 
/**  این دوتا که معلومه دیگه **/
$mail->Username = "[email protected]"; // SMTP username
$mail->Password = "youremailpassword"; // SMTP password
$mail->From = $post_vars['your_email'][0];
/** اسم ارسال کننده **/
$mail->FromName = "Your Name";
$mail->AddAddress($_REQUEST['recipient']," ");
$mail->IsHTML(true); // send as HTML
$mail->CharSet="utf-8"; 
$mail->Subject = $subject;
$mail->Body = "
<html>
<head>
 <title>Contact letter</title>
</head>
<body>
<br>
  ".$message."
</body>
</html>";
$mail->AltBody =$message; 
if(!$mail->Send())
{
echo "Message was not sent <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}
echo "Message has been sent";
بعدش هم کلاس مذکور رو دانلود کنید و در پوشه ی phpmailer بریزید.

یه جاهایی از کد رو دیگه خودتون باید بنویسید، مثلن username و password که اتفاقن مشکل شما هم از همینجا بوده..

در ضمن من درست اجرا شدن کدتون رو تضمین نمی کنمااا !، من فقط یه جابجایی ساده انجام دادم (با چنتا کپی پیست!) که اگه دقت کنید، خودتون هم می تونستید انجامش بدین..

موفق باشین


آقا ممنون
ولی اجرا که کردم این ارورو داد
Parse error: syntax error, unexpected
 

Domanjiri

Well-Known Member
خب من که گفتم همین جا کپی پیست کردم.. شاید نطقه ای ، کولنی چیزی جابجا باشه

حالا ارور رو کامل بخونید ببینید از کدوم خط هست و چی رو انتظار نداشته؟ (...... unexpected )

موفق باشین
 

samangeraphic

Active Member
کدی که در نهایت زدم اینه
PHP:
<?php
Error_Reporting(E_ALL & ~E_NOTICE);
 while ($request = current($_REQUEST)) {
  if (key($_REQUEST)!='recipient') {
  $pre_array=split ("&777&",  $request);
 
  $post_vars[key($_REQUEST)][0]=preg_replace ("/<[^>]*>/", "", $pre_array[0]);
  $post_vars[key($_REQUEST)][1]=preg_replace ("/<[^>]*>/", "", $pre_array[1]);
 }
 next($_REQUEST);
}
 
reset($post_vars);
 
$subject="From ".$post_vars['your_name'][0] ;
$headers= "From: ".$post_vars['your_email'][0] ."\n";
 $headers.='Content-type: text/html; charset=iso-8859-1';
 $message='';
  while ($mess = current($post_vars)) {
   if ((key($post_vars)!="i") && (key($post_vars)!="your_email") && (key($post_vars)!="your_name")) {
   $message.="<strong>".$mess[1]."</strong>&nbsp;&nbsp;&nbsp;".$mess[0]."<br>";
 }
 next($post_vars);
 }
require("phpmailer/class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsSMTP(); 
/**  ??? ??? ???? ???? ? ?????? ??? ??? "??? ?????" ??? ???? ?????? ?? ?????? ??? **/
$mail->Host = "mail.oooo.com"; 
$mail->SMTPAuth = true; 
/**  ??? ???? ?? ?????? ???? **/
$mail->Username = info@ooooooo; // SMTP username
$mail->Password = "oooooo"; // SMTP password
$mail->From = $post_vars['your_email'][0];
/** ??? ????? ????? **/
$mail->FromName = "your_name";
$mail->AddAddress($_REQUEST['recipient']," ");
$mail->IsHTML(true); // send as HTML
$mail->CharSet="utf-8"; 
$mail->Subject = $subject;
$mail->Body = "
<html>
<head>
 <title>Contact letter</title>
</head>
<body>
<br>
  ".$message."
</body>
</html>";
$mail->AltBody =$message; 
if(!$mail->Send())
{
echo "Message was not sent <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}
echo "Message has been sent";



از اینا ایراد گرفته :
Warning: reset() expects parameter 1 to be array, null given in

PHP:
reset($post_vars);



و این :

Warning: current() expects parameter 1 to be array, null given in

PHP:
 while ($mess = current($post_vars)) {




توی اون کلاس هم از این ایراد گرفته :

Fatal error: Cannot access empty property

PHP:
 $header[] = sprintf("Content-Transfer-Encoding: %s\n", $this->$Encoding);
 

Domanjiri

Well-Known Member
درود بر شما

همونطور که می بینید ارور ها میگن که post_vars$ خالی هست، این با کد ارسال ایمیل ارتباطی نداره (منظورم اون بخشی هست که تاپیک به خاطرش ایجاد شده) ، شما چک کن که فایل swf درخواست رو درست می فرسته یا نه؟ مثلن درخواست ها ی دریافتی رو بدون اینکه بخوای کاری روش انجام بدی، چاپ کن.

موفق باشی
 

samangeraphic

Active Member
به قبلی درست میفرستاد
من هم میخواستم کد جدید مطابق با قبلی باشه که مشکلی پیش نیاد
اینم کدی که تو فلشه :

PHP:
on (rollOver) {
 this.gotoAndPlay("s1");
}
on (releaseOutside, rollOut) {
 this.gotoAndPlay("s2");
}
on (release) {
 for (i=1; i<_parent.fields_descriptions.length; i++) {
  if (_parent[_parent.fields_descriptions[i][1]] != _parent.fields_descriptions[i][2]) {
   this[_parent.fields_descriptions[i][1]] = _parent[_parent.fields_descriptions[i][1]]+"&777&"+_parent.fields_descriptions[i][2];
  }
  _parent.reset_txt(_parent["t"+i], _parent.fields_descriptions[i][1], _parent.fields_descriptions[i][2]);
 }
 this.recipient = _parent.rec;
 i = undefined;
 getURL("contact." + _parent.serv, "_blank", "POST");
}
 

samangeraphic

Active Member
درود بر شما

همونطور که می بینید ارور ها میگن که post_vars$ خالی هست، این با کد ارسال ایمیل ارتباطی نداره (منظورم اون بخشی هست که تاپیک به خاطرش ایجاد شده) ، شما چک کن که فایل swf درخواست رو درست می فرسته یا نه؟ مثلن درخواست ها ی دریافتی رو بدون اینکه بخوای کاری روش انجام بدی، چاپ کن.

موفق باشی

آقا ما چه کنیم ؟
فکر میکنم یه ذره قاطی پاتی شد
من میگم یه بار دیگه اون دو تا کدی که اول گذاشتمو یه نگاه بندازیم
کد دوم ، autenticate شده با هاست میباشد اما اولی رو این هاست جواب نمیده
حالا چی باید به کد اول اضافه یا کم بشه که اون هم مثل کد دوم ، autenticate با هاست بشه ؟؟
عزیز جان توجه کن که یه سری چیزا تو کد اول که کد پایه ای ماست نباید تغییر کنه چون داره اونارو از فلش میخونه
مثل :
From
subject
و از این چیزا چون اینا تو فرم فلش وارد میشه و php اونارو میخونه و میفرسته به ایمل مورد نظر
پس نباید تغییر پیدا کنه
درسته؟
حالا منتظر شما هستیم ببینیم بالاخره این درست میشه یا نه
البته تا همین جا هم که باهام اومدی ممنونتم عزیز ولی اگه میتونی اینو ردیفش کن
بدجور گیر کردم :rose:
 

Domanjiri

Well-Known Member
عزیز من، یه کار رو که دوبار انجام نمیدن!

فایل پیوست رو دانلود و اجرا کنید:

1- داخل فایل mail.php خط هایی که جلوی اون ها ****** هست باید توسط شما اطلاعات ِش ویرایش بشه

2- دو فایل دیگه ی PHP مربوط به کلاس phpmailer هست ، دست بهشون نزنید

3 - valid بودن داده ها رو توی اکشن بررسی کنید، چون توی PHP اینکار رو نکردم

....

PHP زبان سختی نیست، شما اگه توی این مدتی که منتظر جواب بودی، فقط چند ساعت ِش رو صرف یادگیری مقدماتی PHP می کردی، زودتر از این ها به نتیجه می رسیدی

موفق باشی
 

پیوست ها

  • mail.zip
    38.4 کیلوبایت · بازدیدها: 24

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

بالا