PDA

View Full Version : ارسال ایمیل با phpmailer



parnian~parnian
چهارشنبه 27 اسفند 1393, 13:40 عصر
سلام دوستای عزیزم

من یه برنامه دارم می نویسم که روی هاست windows هستش و نیاز به ارسال ایمیل داره که همونطوری که خودتون میدونین باید از phpmailer استفاده کرد

من کل نت رو گشتم و کلی کد رو تست کردم ولی متافسفانه هیچ کدومشون درست نبوده کدی که الان استفاده می کنم اینه :

وقتی اجرا می کنیش فقط یه صفحه سفید باز میشه



$name=$first_name.' '.$last_name;$from=$email;
$subject=$topic;
//$message=$_POST['Message'];
//////////////////////////////////
$mail= new PHPMailer();$mail->IsSMTP();$mail->SMTPAuth=true;
// شروع قسمتی که باید ویرایش کنید$mail->Host = "mail.YOURDomain.com";$mail->Username= "YourMail@Domain.com";$mail->Password= "Your EMail Password";$mail->AddAddress('my mail', "name");
// پایان قسمتی که باید ویرایش کنید$mail->SetFrom($from, $name);$mail->AddReplyTo($from, $name);$mail->Subject = $subject;$mail->IsHTML(true);$body = '<html><body>';$body .= '<p style="direction:rtl;font-family:tahoma;">'.$message.'</p>';$body .= "</body></html>";$mail->MsgHTML($body);$mail->AltBody= $message;
if(!$mail->Send()) {echo "خطا:پیام شما ارسال نشد » " . $mail->ErrorInfo;} else {echo "پیام ارسال شد!";$_SESSION['msg']='<div class="alert alert-error"><a class="close" data-dismiss="alert">×</a>Message has been sent.</div>'; $security->Redirect('../Contactus','send=3030');}

Unique
چهارشنبه 27 اسفند 1393, 14:35 عصر
من توی وبلاگم یک پُست (http://www.geekfarsi.com/%D8%A7%D8%B1%D8%B3%D8%A7%D9%84-%D8%A7%DB%8C%D9%85%DB%8C%D9%84-%D8%A7%D8%B2-%D8%B7%D8%B1%DB%8C%D9%82-%D8%AD%D8%B3%D8%A7%D8%A8-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%DB%8C-gmail-%D8%A8%D8%A7-php-%D9%BE%DB%8C/263) در زمینه ارسال ایمیل با phpmailer از طریق gmail زدم که حالت ها و مشکلات مختلف را توضیح دادم. حداقلش از خود سورس کد میتونید استفاده کنید. اگه هم میخواین از همون gmail استفاده کنین که چه بهتر.

j_naroogha@yahoo.com
چهارشنبه 27 اسفند 1393, 15:03 عصر
<?php
require('lib/PhpMailer/class.phpmailer.php');
class Mailer
{
public function _sendmail()
{
$mail = new PHPMailer(); // defaults to using php "mail()"
$body ="
ba salam <br/>
mored jadidi dar Samaneh sherkat sabt shod lotfan baraye joziate sefaresh be panel karbari admin vared shavid<br/>
ba tashakor <br/>
Service online Topshargh <br/>
";
$mail->SetFrom('NoReply@Samaneh.com', ' Samaneh');
$address = "email1@gmail.com";
$mail->AddAddress($address, "");
$address = "j_naroogha@yahoo.com";
$mail->AddAddress($address, "");
$mail->Subject = "Samaneh Online ";
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!";
$mail->MsgHTML($body);
if(!$mail->Send())
{
//echo "Mailer Error: " . $mail->ErrorInfo;
}
else
{
//echo "Message sent!";
}
}
}
?>

من اینو استفاده میکنم . جوابم میده.

parnian~parnian
پنج شنبه 28 اسفند 1393, 21:35 عصر
خیلی ممنون دوستای عزیزم ولی وقتی استفاده میکنم ازکد دوست عزیزم
j_naroogha@yahoo.com (http://barnamenevis.org/member.php?122821-j_naroogha-yahoo-com)
ارسال موفقیت امیزه ولی به میلم فرستاده نمیشه
کد دوست عزیزم
Unique (http://barnamenevis.org/member.php?11933-Unique) رو هم که استفاده میکنم اررور داره

Unique
پنج شنبه 28 اسفند 1393, 22:39 عصر
رو هم که استفاده میکنم اررور داره
چه خطایی ؟
میشه خروجی را بگذارین ؟

parnian~parnian
جمعه 29 اسفند 1393, 15:29 عصر
Mailer Error: Could not instantiate mail function.

این اررور و میده هر کاریم میکنم درست نمیشه

Unique
شنبه 01 فروردین 1394, 17:42 عصر
راستش این خطا چند تا مشکل میتونه باشه که اصلی ترینش نصب نبودن sendmail هست که کلا غیر منطقیه چون شما میخوان با smtp ارسال را انجام بدین.
لطفا کدیکه این خطا را میده را هم بگذارین

پ.ن : کد را درخواست کردم چون ممکنه بر اساس مطالب این پست و وبلاگ من کد را تغییر داده باشین.

parnian~parnian
یک شنبه 16 فروردین 1394, 23:18 عصر
من این کد رو نوشتم ولی متاسفانه الان این ارور رو میده :
Fatal error: Uncaught exception 'Exception' with message 'You must provide at least one recipient email address.' in C:\xampp\htdocs\melodyv8\en\action\send-contact.php:65 Stack trace: #0 {main} thrown inC:\xampp\htdocs\melodyv8\en\action\send-contact.php on line 65


<?phprequire_once"../jdf2.php" ;//require_once('class.phpmailer.php');//require 'PHPMailer/PHPMailerAutoload.php';//require("phpmailer/class.phpmailer.php");require 'PHPMailer3/class.phpmailer.php';include("phpmailer/class.smtp.php");
include '../../classes/main.php' ;$security = new security ;
if(isset($_POST['submit'])){
$date = jdate("Y-m-d",'','','','en');
$title= $_POST['title'];
$first_name= $_POST['first_name'];
$last_name= $_POST['last_name'];
$phone= $_POST['phone'];
$email= $_POST['email']; $retype_email= $_POST['retype_email']; $preferred_communication= $_POST['preferred_communication']; $topic= $_POST['topic']; $message= $_POST['message']; if(!preg_match("/[a-zA-Z0-9._-]+@[a-zA-Z0-9\.-]+\.[a-zA-Z\.]+/",$_POST['email']))//if2 { $_SESSION['msg']='<div class="alert alert-error"><a class="close" data-dismiss="alert">×</a>Please enter email correctly.</div>'; } else{ if($_POST['email']!=$_POST['retype_email']) //if3 { $_SESSION['msg']='<div class="alert alert-error"><a class="close" data-dismiss="alert">×</a>Not matche email and retype email.</div>'; } else{
//send mail-------------------------------------------------------------------------- //error_reporting(E_ALL);
//ini_set('display_errors','1');

//require("phpmailer.php");
$mailObj = new phpmailer();$mailObj->IsSmtp();$mailObj->SMTPSecure = "tls";$mailObj->Host = "smtp.gmail.com";$mailObj->Port = "587";$mailObj->SMTPAuth = true;$mailObj->Username = "sample@gmail.com";$mailObj->Password = "password";$mailObj->SMTPDebug = true;$mailObj->CharSet = "utf-8";$mailObj->FromName = "test";$mailObj->From = $email;//$mailObj->AddAddress("recipient@domain.com","");$mailObj->Subject = "=?UTF-8?B?".base64_encode("عنوان فارسی نامه")."?=";$mailObj->Body = "متن نامه";$mailObj->Send();if ($mailObj->ErrorInfo != ""){throw new Exception($mailObj->ErrorInfo);}else{echo "Mail sent.";//$_SESSION['msg']='<div class="alert alert-error"><a class="close" data-dismiss="alert">×</a>Message has been sent.</div>';// $security->Redirect('../Contactus','send=3030');}unset($mailObj);

//--------------------------------------------------------------------------------- }//else if3 }//else if2
}else { $security->Redirect('../Contactus');}?>

j_naroogha@yahoo.com
دوشنبه 17 فروردین 1394, 10:00 صبح
خیلی ممنون دوستای عزیزم ولی وقتی استفاده میکنم ازکد دوست عزیزم
j_naroogha@yahoo.com (http://barnamenevis.org/member.php?122821-j_naroogha-yahoo-com)
ارسال موفقیت امیزه ولی به میلم فرستاده نمیشه
کد دوست عزیزم
Unique (http://barnamenevis.org/member.php?11933-Unique)
رو هم که استفاده میکنم اررور داره

خواهش میکنم.
کد درست جواب میده و احتمال زیاد مشکل از هاستتون هست.
من خودمم قبلا این کد رو روی یه هاست مجانی استفاده میکردم ارسال نمیکرد .... اما روی هاست اصلی به درستی جواب داد

j_naroogha@yahoo.com
دوشنبه 17 فروردین 1394, 10:11 صبح
راستی روی لوکال هم ج نمیده اگه داری لوکال تست میکنی

parnian~parnian
دوشنبه 17 فروردین 1394, 23:09 عصر
مرسی از جوابتون دوست عزیز ولی من روی سرور اصلی تست کردم که مجانی هم نیست فقط چون بدون هماهنگی تهیه شده سرورش ویندوزه لینوکس نیست و این مشکل رو داره متاسفانه :(

j_naroogha@yahoo.com
سه شنبه 18 فروردین 1394, 08:08 صبح
مگه میشه روی سرور ویندوز php رو استفاده کرد؟ چطوری؟

parnian~parnian
سه شنبه 18 فروردین 1394, 14:07 عصر
اره فرقی نداره ، اصلا phpmailer برای ارسال ایمیل توی سرور ویندوزه وگرنه که توی سرور لینوکس کد هاش خیلی ساده تره

Unique
سه شنبه 18 فروردین 1394, 17:38 عصر
مگه میشه روی سرور ویندوز php رو استفاده کرد؟ چطوری؟
بله IIS به راحتی میتونه PHP را میزبانی کنه.


اصلا phpmailer برای ارسال ایمیل توی سرور ویندوز
خیر phpmailer یک کلاس برای ارسال ایمیل هست و ربطی به ویندوز لینوکس نداره. با phpmailer به راحتی میشه با smtp ایمیل ارسال کرد از خود sendmai لینوکس هم میشه استفاده کرد.

شما توی کدتون AddAddress را comment کردین و برای همین خطا میده :

Fatal error: Uncaught exception 'Exception' with message 'You must provide at least one recipient email address.'

مگه هاست شما mail server نداره که smtp بده درگیر gmail نشین ؟
راستش gmail خیلی قِر و فِر داره اما من دقیقا توی پست وبلاگم گفتم باید چه کار هایی انجام بدین تا کار کنه. اما از سرور خودتون باید خیلی راحت تر انجام بشه. یه زنگ بزنین پشتیبانی و اطلاعات mail server و smtp و غیره را بگیرین و خیلی راحت ایمیل بفرستین.

پی نوشت :‌ parnian عزیز لطفا کدهات را تر و تمیز و خط به خط بنویس که بشه متوجه شد چی به چیه ! اینطوری :


$mailObj = new phpmailer();
$mailObj->IsSmtp();
$mailObj->SMTPSecure = "tls";
$mailObj->Host = "smtp.gmail.com";
$mailObj->Port = "587";
$mailObj->SMTPAuth = true;
$mailObj->Username = "sample@gmail.com";
$mailObj->Password = "password";
$mailObj->SMTPDebug = true;
$mailObj->CharSet = "utf-8";
$mailObj->FromName = "test";
$mailObj->From = $email;
//$mailObj->AddAddress("recipient@domain.com","");
$mailObj->Subject = "=?UTF-8?B?".base64_encode("عنوان فارسی نامه")."?=";
$mailObj->Body = "متن نامه";
$mailObj->Send();

parnian~parnian
سه شنبه 18 فروردین 1394, 21:04 عصر
خیلی ممنون ازتون دوست عزیز
منظور من این بود که توی سرور ویندوز استفاده میشه ولی بد عنوان کردم منظورمو عرض میخوام از همه دوستان
من کدام مرتبه بخدا خودش اینجا اینطوری میکنه وقتی کپی میکنم ولی بازم چشم حرف شما درسته
اصلا حتما باید یاهو باشه ولی چون شما گفتین gmail فکر کردم راحت تره :( خودمم گیج شدم واقعا نمیدونم باید چیکار کنم ؟؟؟؟!!! الان من باید چه کدی بنویسم ؟
همه مدلشو بخدا امتحان کردم ولی جواب نمیده

Unique
چهارشنبه 19 فروردین 1394, 15:58 عصر
این هاستی که شما ازش سرور گرفتین ایمیل نداره ؟ smtp نمیده ؟به نظرم بهترین کار اینه با ایمیل هاست خودتون ارسال کنین. با پشتیبانی تماس بگیر یا از تو کنترل پنل بررسی کنین.

parnian~parnian
پنج شنبه 20 فروردین 1394, 15:15 عصر
طبق گفته شما من با میل خودش تست کردم ....... ارور نداد اتفاقا پیغام mail send رو داد کد رو به صورت زیر تغییر دادم:

<?phprequire_once"../jdf2.php" ;
//require_once('class.phpmailer.php');
//require 'PHPMailer/PHPMailerAutoload.php';
//require("phpmailer/class.phpmailer.php");
require 'PHPMailer3/class.phpmailer.php';
include("phpmailer/class.smtp.php");


include '../../classes/main.php' ;
$security = new security ;


if(isset($_POST['submit'])){


$date = jdate("Y-m-d",'','','','en');

$title= $_POST['title'];
$first_name= $_POST['first_name'];
$last_name= $_POST['last_name'];
$phone= $_POST['phone'];
$email= $_POST['email'];
$retype_email= $_POST['retype_email'];
$preferred_communication= $_POST['preferred_communication'];
$topic= $_POST['topic'];
$message= $_POST['message'];

if(!preg_match("/[a-zA-Z0-9._-]+@[a-zA-Z0-9\.-]+\.[a-zA-Z\.]+/",$_POST['email']))//if2
{
$_SESSION['msg']='<div class="alert alert-error"><a class="close" data-dismiss="alert">×</a>Please enter email correctly.</div>';
}
else{

if($_POST['email']!=$_POST['retype_email']) //if3
{
$_SESSION['msg']='<div class="alert alert-error"><a class="close" data-dismiss="alert">×</a>Not matche email and retype email.</div>';
}
else{


//send mail--------------------------------------------------------------------------
//error_reporting(E_ALL);


//ini_set('display_errors','1');





//require("phpmailer.php");



$mailObj = new phpmailer();
//$mailObj->IsSmtp();
//$mailObj->SMTPSecure = "tls";
//$mailObj->Host = "smtp.gmail.com";
//$mailObj->Port = "587";
//$mailObj->SMTPAuth = true;
$mailObj->Username = " info@x.com";
$mailObj->Password = "password";
$mailObj->SMTPDebug = true;
$mailObj->CharSet = "utf-8";
$mailObj->FromName = "nedaaa";
$mailObj->From = $email;
$mailObj->AddAddress(" info@x.com","");
$mailObj->Subject = "=?UTF-8?B?".base64_encode("عنوان فارسی نامه")."?=";
$mailObj->Body = "متن نامه";
$mailObj->Send();
if ($mailObj->ErrorInfo != ""){
throw new Exception($mailObj->ErrorInfo);}
else{
echo "Mail sent.";
//$_SESSION['msg']='<div class="alert alert-error"><a class="close" data-dismiss="alert">×</a>Message has been sent.</div>';
// $security->Redirect('../Contactus','send=3030');
}
unset($mailObj);





//---------------------------------------------------------------------------------

}//else if3
}//else if2


}else {
$security->Redirect('../Contactus');
}
?>

ولی چیزی توی ایمیل نمیاد :(

Unique
پنج شنبه 20 فروردین 1394, 21:22 عصر
مقدار username و AddAddress چرا مقادیر html مثل تگ a توش داره ؟ چرا فقط اسم کامل دامنه را نمی نویسید ؟ مثلا info@domain.com ؟
from هم باید با مقدار username یکی باشه ، تقریبا همه Mail Server ها اجازه نمیدن شما با یک نام کاربری توی smtp لاگین کنید بعدش نامه را به نام یک کاربر دیگه بفرستین.

parnian~parnian
دوشنبه 24 فروردین 1394, 14:20 عصر
اون تگ a رو خودش گذاشته وقتی کپی کردم
تغییراتی که گفته بودین رو انجام دادم .............بازم تست کردم این اررور رو میده :
Could not instantiate mail function.

وای دیوونه شدم دیگهههههههههههههههههه تا الان نشده بود توی این همه پروژه ای که نوشتم این همه مدت مشکلم حل نشه :((

j_naroogha@yahoo.com
دوشنبه 24 فروردین 1394, 14:44 عصر
من بودم به طرف میگفتم هاست لینوکس بگیر....
کدی که بالا گذاشتم جواب میده و چند از پروژه هام دارن باهاش کار میکنن.

Unique
دوشنبه 24 فروردین 1394, 20:51 عصر
راستش باید خودم تست کنم. اگه صلاح میدونید اطلاعات پنل هاست را خصوصی بدین تا براتون بررسی کنم.

parnian~parnian
چهارشنبه 26 فروردین 1394, 13:18 عصر
خیلی تلاش کردم ولی هاستشو 2 ساله گرفتن :( قبول نمیکنن
مرسی بچه ها ازین که این قدر کمکم کردین ................................ اگه به جواب رسیدم و مشکل رو پیدا کردم اینجا میذارم تا شاید به دردتون بخوره