در این مقاله ما خواهیم دید که چگونه زبان PHP را برای ارسال ایمیل تنظیم کنیم و همچنین نحوه فرستادن ایمیل های HTML و ایمیلهای همراه با فایل ضمیمه (Attachment) را بررسی کرد .
قبل از اینکه به کمک PHP بتوانیم ایمیل بفرستیم باید PHP را برای این کار تنظیم کنیم . دقیقا مانند اینکه بخواهیم برنامه ارسال و درایمیل ( مانند Outlook ) را تنظیم کنیم .
برای این کار هم باید سراغ فایل php.ini رفته و آن را با editor دلخواه خودتان باز کنید . اگر می خواهید کدهای خودتان را بر روی سروری غیر از سیستم خودتان اجرا گنید از این مزحله صرف نطر کنید و فرض را بر این بگزارید که سرور شما برای انجام این کار تنظیم شده است و در نتیجه به مرحله بعد بروید .
در فایل php.ini در قسمتی که با ( mail function ) عنوان گزاری شده است گزینه ای دارید به نام SMTP که باید مقدار آن را SMTP ایمیلتان بگذارید مثلا mail.softhome.net
البته در فایل php.ini تنظیمات برای سرورهای ویندوز و لینوکس را جدا در نظر گرفته و شما باید بر اساس سیستمی که استفاده میکنید چیزی شبیه زیر را داشته باشید :
برای سیستمهای ویندوز :
[mail function ]
Setup for windows system ;
SMTP = smtp.my.isp.net
Sendmail_from = [email protected]
و برای سیستمهای لینوکس :
[mail function ]
Setup for Linux system;
Sendmail_path = /usr/sbin/sendmail-t
Sendmail_from = [email protected]
وقتی تنظیمات را انجام دادید وب سرور خود را restart کنید و اکنون همه چیز برای ارسال ایمیل آماده است !
ارسال ایمیل ساده (Plain Email ) :
حقیقتا از روشی که PHP برای ازسال ایمیل در مظر گرفته ساده تر نمی توان تصور کرد !
در حقیقت شما می توانید ارسال ایمیل را با تنها نوشتن یک خط انجام دهید ! مانند زیر :
Mail('recipient @some.net','subject',Your message here.');
خط بالا یک ایمیل را به آدرس '[email protected]' با موضوع 'subject' و Your message here.' , به عنوان متن نامه ارسال می کند .
همانطور که مشاهده کردید PHP ارسال ایمیل را بسیار ساده کرده است . ولی چندین راه حل پیشرفته و جود دارد که به ما این امکان را می دهد که ایمیلهای HTML و ایمیلهای همراه با فایل ضمیمه بفرستیم .
قبل از هر چیز این نکته را متذکر شوم که اگر mail system ی که شما در php.ini تعریف کرده اید ایمیل ارسالی را برگشت (reject) دهد { برای مثال اگر در قسمت TO آدرس یک ایمیل درست را ننوشته باشیم } این تابع یک پبغام خطا در مرورگر کاربر نمایش خواهد داد ، دقیقا مانند اتفاقی که در مورد سایر تابعهای PHP می افتد .
اما هماتطور که می دانید ما می توانیم با نوشتن علامت @ قبل از تابع از نوشتن پیغام خطا در مرورگر کاربر جلوگیری کنیم .
اگر این نکته را با چیزی که تابع mail برمی گرداند ( true یا false بسته به اینکه ایمیل ارسال شده باشد یا خیر ) ترکیب کنیم کد زیر را خواهیم داشت :
If @mail($to,$subject, $message )) {
echo('
Mail sent successfully .
');
} else {
echo('
Mail sent successfully .
');
}
به یاد داشته باشید که ارسال ایمیل نمی تواند تضمینی بر دریافت آن در مقصد باشد.
برای مثال اگر یک ایمیل به آدرس [email protected] بفرستیم و فرض بر این باشد که این آدرس اصلا وجود ندارد ، این آدرس برای تابع mail قابل قبول است و true را برمی گرداند ولی مطمئنا این ایمیل از بین می رود چون کسی صاحب آن نیست ، پس در این مورد کاری از دست PHP بر نمی آید . وقتی که می خواهیم یک ایمیل را به چندین آدرس بفرستیم کافیست که در پارامتر اول تمام آدرس ها را پشت سر هم نوشته و آنها را با علامت کاما "،" از هم جدا کنیم . برای مثال :
mail('recipient 1 @some.net,[email protected]',
'An email to two people ' , 'message goes here , ' );