با سلام

ما به عنوان برنامه نویس زبان PHP گاهی لازم داریم تا از تابع mail زبان PHP برای ارسال ایمیل استفاده کنیم که متأسفانه به طور پیشفرض این تابع غیر فعاله و کار نمیکنه که مجبور میشیم تست های ارسال ایمیل رو روی سرور انجام بدیم که خب آپلود کد در هر لحظه از حوصله ما خارج میشه. ولی تو این آموزش میایم میگیم که چطور این مشکل رو برطرف کنیم و حتی در لوکال و از طریق سیستم خودمون با زبان PHP ایمیل ارسال کنیم. پس با ما همراه باشید…

برای ارسال ایمیل در Xampp دو راهکار اصلی وجود دارد:

و اما تفاوت راه استفاده از کلاس PHPMailer و فعال سازی تابع mail با استفاده از فایل sendmail.exe چیه؟

تفاوت اصلی رو میتونیم اینطور مطرح کنیم که اگه ما بخوایم از تابع mail در زبان PHP برای ارسال ایمیل استفاده کنیم دیگه نمیتونیم از کلاس PHPMailer بهره ببریم . باید با تنظیم و استفاده از فایل sendmail.exe تابع mail رو فعال کنیم که با این کار کلیه برنامه هایی که دارن از این تابع استفاده میکنن به راحتی ارسال ایمیل خودشون رو خواهند داشت. پس میری سراغ نحوه فعال سازی تابع mail با استفاده از sendmail.exe:

فعال سازی تابع mail با استفاده از sendmail.exe برای ارسال ایمیل

ابتدا فایل php.ini رو از مسیر C:\xampp\php\php.ini باز کنید:

از بخش [mail function] به دنبال sendmail_path بگردید. علامت ;  یا سمی کالن را از ابتدای آن بردارید چون این مسیر فایل اجرایی را که برای ارسال ایمیل از آن استفاده میکنیم معرفی می کند یعنی فایل sendmail.exe کد خط مربوطه پس از اصلاح می شود:

sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"

سپس ابتدای خطوط SMTP=localhost و smtp_port=25 علامت ; یا سمی کالن بذارید تا این خطوط غیر فعال یا کامنت بشن.

حالا بخش [mail function] باید کد زیر باشد:

[mail function]
; For Win32 only.
; http://php.net/smtp
;SMTP=localhost
; http://php.net/smtp-port
;smtp_port=25

; For Win32 only.
; http://php.net/sendmail-from
;sendmail_from = me@example.com

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
;sendmail_path =
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"

; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail().
;mail.force_extra_parameters =

; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
mail.add_x_header=On

; The path to a log file that will log all mail() calls. Log entries include
; the full path of the script, line number, To address and headers.
;mail.log =
; Log mail to syslog (Event Log on Windows).
;mail.log = syslog

اما این کار تنها کافی نیست و باید تنظیمات smtp ایمیل خودمون رو وارد کنیم بنا براین فایل تنظیمات sendmail رو از مسیر زیر باز میکنیم:

C:\xampp\sendmail\sendmail.ini

در این فایل باید این تنظیمات را انجام دهیم:

smtp_server=smtp.gmail.com

smtp_port=587

smtp_ssl=auto

error_logfile=error.log

auth_username=youremail@gmail.com

auth_password=yourpassword

به جای youremail@gmail.com ایمیل خود و به جای yourpassword نیز گذرواژه خود را وارد کنید.

حالا آپاچی رو  restart کنین یه فایل PHP ایجاد و کدهای زیر رو داخلش بذارین و فایل رو باز کنین تا نتیجه رو ببینین:

<?php
$to 		= 'recipients@email-address.com';
$subject 	= 'Hello from XAMPP!';
$message 	= 'This is a test';
$headers 	= "From: your@email-address.com\r\n";
if ( mail( $to, $subject, $message, $headers ) ) {
   echo "ایمیل با موفقیت ارسال شد.";
} else {
   echo "خطا در ارسال ایمیل لطفاٌ با میزبان تماس بگیرید.";
}

با این پیکر بندی در هیچ سیستم مدیریت محتوایی مثل وردپرس، جوملا و دروپال دیگه نگران ارسال ایمیل نباشید.