ارسال ایمیل در PHP

برای ارسال ایمیل در PHP از تابع ()mail استفاده می شود. دستور استفاده از این تابع به صورت زیر است :

mail(to,subject,message,headers,parameters)

 
در جدول زیر در مورد پارامترهای این تابع توضیح داده شده است :

پارامتر توضیح
to نوشتن این پارامتر اجباری است و ایمیل گیرنده و یا گیرندگان را مشخص می کند.
subject نوشتن این پارامتر اجباری است و از نوع متن بوده و تنها میتواند یک خط باشد. موضوع عنوان ایمیل را مشخص می کند.
message نوشتن این پارامتر اجباری است و از نوع متن بوده و نباید بیش از ۷۰ کاراکتر باشد. متن نوشته شده داخل ایمیل را مشخص میکند و هر خط باید با کاراکتر (n/) از خط قبل و بعد جدا شود.
header نوشتن این پارمتر اختیاری است.  Cc یا Bcc را مشخص میکند. برای جدا کردن هر خط از خط قبلی باید از کارکتر (\r\n) استفاده شود.
Parametrs نوشتن این بخش اختیاری است. برای اضافه کردن پارامتر ها به برنامه ارسال ایمیل استفاده می شود.

در حالت عادی و از طریق نرم افزار WAMPServer امکان ارسال ایمیل وجود ندارد و باید تغییراتی در فایل PHP.ini داده شود و همچنین از یک فایل جانبی نیز استفاده کنیم. همانطور که در درس قبل اشاره شد ایمیل از طریق یک سرور SMTP و یک پورت ارسال می شود. دو سرور SMTP معروف Google و Yahoo می باشند. برای ارسال ایمیل ابتدا فایل زیر را دانلود کنید :
دانلود فایل SendMail
 
سپس آن را در مسیر C:\wamp\www کپی کنید :
Send-email-php-01
 
بعد به داخل پوشه رفته و تغییرات زیر را در فایل sendmail.ini اعمال کنید :
Send-email-php-04
نکته ای که در شکل بالا وجود دارد این است که در قسمت auth_username و auth_password آدرس Email یا Gmail همراه با پسورد اصلی خودتان را بنویسید. چون این آدرس و پسورد توسط سرور SMTP اعتبارسنجی شده و به شما اجازه ارسال ایمیل را می دهد. فایل sendmail.ini دارای قسمت هایی است که در جدول زیر درباره کاربرد آنها توضیح داده شده است :

پارامتر توضیح
smtp_server آدرس سرور SMTP
smtp_port شماره پورت سرور. به صورت پیشفرض پورت 25 می باشد و برای سرورهایی که از پروتکل های امن مانند ssl استفاده می کنند مانند جی میل 465 می باشد و برای 587 می باشد
auth_username نام کاربری
auth_password رمز عبور
force_sender آدرس پست الکترونیک فرستنده
error_logfile ذخیره خطاها در یک فایل متنی
smtp_ssl نوع پروتکل ارسال اطلاعات که می تواند مقدارauto,none,ssl و tls داشته باشد برای سرورهایی که به صورت امن اطلاعات ارسال میکنند مانند GMail

 
حال نوبت به ویرایش فایل PHP.ini می رسد. به مسیر C:\wamp\bin\apache\apache2.4.4\bin رفته و این فایل را پبدا کنید و بعد از باز کردن آن با Notepad، مانند شکل زیر به قسمت [mail function] بروید :
Send-email-php-02
 
بعد از پیدا کردن قسمت [mail function] دو خط زیر را که همان مسیر فایلی است که دانلود کرده اید (SendMail) به آن اضافه کنید :

sendmail_path = "\"C:\wamp\www\sendmail\sendmail.exe\" -t"
sendmail_path =   "C:\wamp\www\sendmail\sendmail.exe -t"

Send-email-php-03
 
بعد از اعمال تغییرات فوق سرویس Apache را ریستارت کنید :
Send-email-php-07
 
سپس یک فایل با پسوند php با نام SendMail.php در پوشه www ایجاد کرده و کدهای زیر را به آن اضافه کنید :

<?php
    $to = "younes.ebrahimi.1391@gmail.com";
    $subject = "Test mail";
    $message = "Hello Younes Ebrahimi";
    $from = "younes_ebrahimi_1391@gmail.com";
    $headers = "From:" . $from;
    mail($to,$subject,$message,$headers);
    echo "Mail Sent.";
?>

بعد از اجرای کد بالا پیغامی مبنی بر ارسال ایمیل به شما نمایش داده می شود. در کدهای بالا من از آدرس Gmail خودم برای Gmail خودم پیامی ارسال کرده ام و شما می توانید آن را آدرس های خودتان تغییر دهید. حال اگر به قسمت inbox جیمیل مراجعه کنید مشاهده می کنید که پیام ارسال شده است :
Send-email-php-05
Send-email-php-06

لطفا اگر نظر، پیشنهاد و یا انتقادی در باره مطلب بالا دارید در قسمت زیر مطرح بفرمایید.

  1. bardiademon پاسخ دادن

    کار نمیکنه تمام مراحل رو انجام دادم اما همش این پیغام رو میده

    Warning: mail(): SMTP server response: 553 We do not relay non-local mail, sorry.

  2. bardiademon پاسخ دادن

    سلام مشکل رو حل کردم

    اما گوگل
    سلام Bardia‏،
    لحظاتی پیش فردی برای ورود به سیستم حساب Google شما bardiademon@gmail.com‏ از برنامه‌ای که فاقد استانداردهای امنیت مدرن است، استفاده کرده است.
    جزئیات:
    ه‍.ش. ۱۳۹۵ شهریور ۴, پنجشنبه ‏۱۷:۱۲‏ (وقت تابستانی ایران)
    فارس، ایران*
    قویاً توصیه می‌کنیم از یک برنامه امن مثل Gmail برای دسترسی به حسابتان استفاده کنید. همه برنامه‌های ساخته شده توسط Google منطبق بر این استانداردهای امنیتی هستند. از طرف دیگر، استفاده از یک برنامه با امنیت کمتر، می‌تواند حسابتان را آسیب‌پذیر کند. بیشتر بدانید.

    این پیغام رو فرستاد و ایمیل هم برام نیومد

    • یونس ابراهیمی پاسخ دادن

      سلام، من الان مسافرتم و از طریق گوشی دارم جوابتوتو میدم، رسیدم خونه حتما رسیدگی می کنم، ولی واسه بنده که همین مراحل بالا جواب داده، چون تست کردم

      • bardiademon پاسخ دادن

        مرسی از جوابتون

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

        سپاس