Php Mailer یک کتابخانه ی متن باز است که برای php ایجاد شده و به برنامه نویس این امکان را میدهد تا در پروژه خود امکان ارسال ایمیل را فراهم سازد.این کتابخانه ی متن باز قادر است تا محیطی تعاملی بین کاربر و مدیران سایت برای ارسال و دریافت ایمیل ایجاد نماید.این کتابخانه به قدری قدرتمند و دارای تعاملی سبک و راحت با دیتابیس است که cms هایی مانند وردپرس نیز از آن برای سیستم ارسال و دریافت ایمل در پروژه خود استفاده میکنند.
این کتابخانه در سال 2001 ایجاد و از آن به بعد با رشد سریع php و نیز محبوبیت بالای این کتابخانه در بسیاری از پروژه های php مورد استفاده قرار گرفت و نظر بسیاری از برنامه نویسان و توسعه دهندگان php را به خود جلب کرد.
البته کتابخانه هایی مانند Swiftmailer برای ارسال و دریافت ایمیل برای php وجود دارند که در مقالات بعدی به معرفی آنها خواهیم پرداخت.
حال به نحوه ی استفاده از این کتابخانه میپردازیم
استفاده از کتابخانه ی php Mailer در وب سرور محلی(لوکال):برای این که بتوان در وب سرور محلی عمل ارسال و دریافت ایمیل با استفاده از کتابخانه ی php Mailer فراهم شود باید باید میل سرور در آن نصب باشد.
به کد های زیر توجه کنید
require_once "vendor/autoload.php";
//PHPMailer Object
$mail = new PHPMailer;
//From email address and name
$mail->From = "from@yourdomain.com";
$mail->FromName = "Full Name";
//To address and name
$mail->addAddress("recepient1@example.com", "Recepient Name");
$mail->addAddress("recepient1@example.com"); //Recipient name is optional
//Address to which recipient will reply
$mail->addReplyTo("reply@yourdomain.com", "Reply");
//CC and BCC
$mail->addCC("cc@example.com");
$mail->addBCC("bcc@example.com");
//Send HTML or Plain Text email
$mail->isHTML(true);
$mail->Subject = "Subject Text";
$mail->Body = "<i>Mail body in HTML</i>";
$mail->AltBody = "This is the plain text version of the email content";
if(!$mail->send())
{
echo "Mailer Error: " . $mail->ErrorInfo;
}
else
{
echo "Message has been sent successfully";
}
در مثال بالا کتابخانه ی php Mailer به وسیله ی composer نصب گردیده به این صورت که autoload.php را از شاخه vendor ، فراخوانی شده است
دقت کنید که اگر فایل این کتابخانه را از منبع آن دریافت کردید فایل PHPMailerAutoload.php را فراخوانی نمایید.
توضیح کد ها: در مجموعه کد های بالا یک شی از کلاس phpmailer ساخته شده است،سپس آدرس فرستنده و اسم فرستنده را به شی ارسال کردیه است،در ادامه آدرس ها + نام گیرنده را به شی ارسال میکند. آدرسی که پاسخ ایمیل به اون ارسال میشود را ثبت میکند. ثبت ادرس های رونوشت ایمیل در شی ایجاد شده.سپس مشخص میکند که نوع محتوای ایمیل ارسالب از نوع HTML می باشد. مشخص کردن موضوع، متن اصلی پیام با فرمت html و بعدی هم به عنوان معرف که میتوانید نسخه ایمیل رو مشخص کنید. در ادامه میتوانید پیام را ارسال کنید و اگه پیام ارسال شد پیام ارسال شد و اگه نه بگو ارسال نشد را نمایش دهد.
حالا اگر شما فایلی را بخواهید به همراه ایمیل بفرستید و به اصطلاح آن فایل را به ایمل پیوست کنید می توانید از قطعه کد زیر استفاده کنید:
require_once "vendor/autoload.php";
$mail = new PHPMailer;
$mail->From = "from@yourdomain.com";
$mail->FromName = "Full Name";
$mail->addAddress("recipient1@example.com", "Recipient Name");
//Provide file path and name of the attachments
$mail->addAttachment("file.txt", "File.txt");
$mail->addAttachment("images/profile.png"); //Filename is optional
$mail->isHTML(true);
$mail->Subject = "Subject Text";
$mail->Body = "<i>Mail body in HTML</i>";
$mail->AltBody = "This is the plain text version of the email content";
if(!$mail->send())
}
echo "Mailer Error: " . $mail->ErrorInfo;
{
else
}
echo "Message has been sent successfully";
{
استفاده از smtp برای ارسال ایمیل
شما میتوانید از وب سرور خود در سرور دیگری مانند GMail استفاده کنید اما برای اینکار نیاز دارید که سرور هویت شما رو تایید کندیا اصلاحا احراز هویت بشوید مثلا برای استفاده از وب سرور GMai لازمه که یه حساب کاربری GMail داشته باشید.
SMTP یه پروتکل که کاربران میتوانند برای ارسال ایمیل از این طریق درخواست بدهند. و این پروتکل مشخص میکند که آیا پیام ارسالی شما به مقصد رسیده است یا خیر.
دلیل استفاده
برای سبک شدن سرور شما نیازی به نصب وب سرور مستقل ندارید برا همین میتوانید از این پروتکل و وب سرور دیگه استفاده کنید.
به کد های زیر توجه کنید:
require_once "vendor/autoload.php";
$mail = new PHPMailer;
//Enable SMTP debugging.
$mail->SMTPDebug = 3;
//Set PHPMailer to use SMTP.
$mail->isSMTP();
//Set SMTP host name
$mail->Host = "smtp.gmail.com";
//Set this to true if SMTP host requires authentication to send email
$mail->SMTPAuth = true;
//Provide username and password
$mail->Username = "name@gmail.com";
$mail->Password = "super_secret_password";
//If SMTP requires TLS encryption then set it
$mail->SMTPSecure = "tls";
//Set TCP port to connect to
$mail->Port = 587;
$mail->From = "name@gmail.com";
$mail->FromName = "Full Name";
$mail->addAddress("name@example.com", "Recepient Name");
$mail->isHTML(true);
$mail->Subject = "Subject Text";
$mail->Body = "<i>Mail body in HTML</i>";
$mail->AltBody = "This is the plain text version of the email content";
if(!$mail->send())
{
echo "Mailer Error: " . $mail->ErrorInfo;
}
else
{
echo "Message has been sent successfully";
}
علاوه بر مورد بالا یک فایده بزرگ استفاده از SMTP و استفاده از وب سرور دیگه مثل GMail این است که: فرض کنید هاست شما example.com هستو ایمیلی با آدرسname@gmail.com به مقصد toname@yahoo.com ارسال میکنید سرور یاهو آن ایمیل را جز اسپم قرار میدهد. چرا؟ چون پسوند gmail.com ولی از example.com ارسال شده است. ولی وقتی واقعا از سرور gmail ارسال بشود یاهو آنرا جزء اسپم قرار نمیدهد چون gmail برای یاهو معتبر است.
نمایش پیام های خطای محلی
$mail->ErrorInfo میتواند پیام خطای مربوط به ارسال ایمیل را در ۴۳ زبان مختلف نمایش بدهد. برای نمایش خطا در زبان های مختلف پوشه language را در پوشه پروژه تان کپی کنید.برای نمایش پیام خطا مثلا به زبان روسی زبان شی PHPMailer را با استفاده از متد زیر روی Russian تنظیم کنید:
$mail->setLanguage("ru");
همچنین میتوانید فایل زبان خودتان را در پوشه language قرار بدهید.
شما میتوانید فایل های کتابخانه ی PHPMailer را از لینک https://github.com/PHPMailer/PHPMailer دانلود نمایید.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید