رفتن به نوشته‌ها

ارسال ایمیل از طریق لوکال هاست (Localhost) در PHP

در این جلسه قصد دارم قبل از اینکه به ادامه آموزش بپردازم. ابتدا ذهن شما را برای درک مفهوم ایمیل و چگونگی ارسال ایمیل از لوکال هاست (توسط wamp) آماده خواهم کرد. در ادامه با من همراه باشید.

Mail Server چیست؟

Mail Server به عنوان یک نرم افزار شناخته می شود که این امکان را برای یک وب سایت فراهم می کند تا بتواند ایمیل هایی را از طریق سرور به سایر اشخاص یا سایت ها ارسال کند.

SMTP چیست؟

SMTP مخفف عبارت Simple Mail Transfer Protocol بوده و به عنوان یکی از پروتکل های TCP/IP جهت ارسال یا انتقال ساده ایمیل، معرفی می شود. در واقع SMTP مانند یک دستیار عمل کرده و ایمیل را از فرستنده دریافت و به گیرنده ارسال می کند.

این پروتکل به دلیل محدودیت هایی که در نگهداری نامه ها دارد، معمولا همراه با پروتکل های POP3 (که مخفف عبارت Post Office Protocol 3 است) یا IMAP (مخفف عبارت Internet Message Access Protocol) استفاده می شود تا امکان ذخیره کردن نامه ها را به کاربران داده و شرایط دانلود این اطلاعات را برای آنها فراهم کند.

توجه: به صورت خلاصه می توان گفت که SMTP برای ارسال و POP3 و IMAP برای دریافت نامه ها استفاده می شود.

SMTP فقط به نام کاربری و دامنه احتیاج دارد تا مستقیما پیام ها را سمت گیرنده مسیریابی کند و به صورت پیشفرض روی پورت ۲۵ هر سروری فعال است. البته مدیران سرور می توانند با درنظر گرفتن مباحث امنیتی پورت آن را تغییر دهند.

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

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

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

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

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

نکته: از طریق نرم افزار WampServer امکان ارسال ایمیل وجود ندارد و باید تغییراتی در این نرم افزار انجام دهیم و ضمنا از یک فایل جانبی به نام SendMail نیز باید بهره بگیریم.

ارسال ایمیل از طریق نرم افزار WampServer

همانطور که در بالا به آن اشاره کردم، ایمیل از طریق یک سرور SMTP ارسال می شود. دو سرور معروف Google و Yahoo می باشند. برای ارسال ایمیل ابتدا فایل زیر را دانلود کنید.

دانلود sendmail

سپس آن را از حالت فشرده خارج و به آدرس C:\wamp منتقل نمایید. به تصویر زیر نگاه کنید.

انتقال فایل sendmail به آدرس wamp

حالا پوشه sendmail را باز کنید و فایل sendmail.ini که درون آن قرار گرفته را با استفاده از notepad باز و تمامی محتویات آن را پاک کنید و به جای آن کدهای زیر را قرار دهید.

[sendmail]

smtp_server=smtp.gmail.com
smtp_port=465
smtp_ssl=ssl
default_domain=localhost
error_logfile=error.log
debug_logfile=debug.log
auth_username= آدرس ایمیل خودتان را وارد نمایید
auth_password=رمز عبور ایمیل خودتان را وارد نمایید 
pop3_server=
pop3_username=
pop3_password=
force_sender=آدرس ایمیل خودتان را وارد نمایید
force_recipient=
hostname=localhost

دقت کنید که به جای “آدرس ایمیل خودتان را وارد نمایید” آدرس ایمیل معتبر خود را وارد کنید (ترجیحا این آدرس جی میل باشد). و به جای “رمز عبور ایمیل خودتان را وارد نمایید” رمز جی میل خودتان را جایگزین کنید.

بعد از انجام مرحله بالا، طبق نوشته ها و تصاویر زیر جلو بروید.

وارد فایل wamp می شویم.

پوشه Wamp را باز می کنیم

سپس وارد فولدر bin می شویم.

وارد فولدر bin می شویم.

وارد فولدر apache می شویم.

وارد فولدر apache می شویم

وارد فولدر apache2.4.9 می شویم. دقت کنید، ممکن است نام این فولدر برای شما با توجه به نسخه wamp نام دیگری باشد.

وارد فولدر apache2.4.9 می شویم ممکن است نام این فولدر برای شما چیز دیگری باشد

وارد فولدر bin موجود می شویم.

وارد فولدر bin موجود می شویم

فایل php.ini را با استفاده از notepade باز کنید.

فایل php.ini را با استفاده از notepade باز کنید.

بعد از اینکه php.ini را با استفاده از notepad باز کردیم. کلید های ctrl و f را با هم فشار دهید تا کادر find برای شما باز شود. در کادر باز شده عبارت mail function را بنویسید و سپس بر روی find next کلیک کنید و موارد مشخص شده در تصویر زیر را با مقادیری که در تصویر نشان داده شده است، مقدار دهی کنید.

باز کردن فایل php.ini با استفاده از notepade و جستجو برای یافتن mail function

بعد از انجام تنظیمات بالا ، تغییرات را save کنید و فایل php.ini را ببندید.

در ادامه طبق تصاویر و نوشته های زیر جلو بروید.

وارد فایل wamp می شویم.

وارد فایل wamp می شویم

وارد فولدر bin می شویم.

وارد فولدر bin می شویم.

فوادر php را انتخاب کنید.

فوادر php را انتخاب کنید.

فولدر php 5.5.12 را انتخاب کنید. ممکن است نام  فولدر با توجه به نسخه مورد استفاده شما، نام دیگر باشد؛ آن را انتخاب کنید.

فولدر php5.5.12 را انتخاب کنید.

فایل php.ini را با استفاده از notepad باز کنید.

فایل php.ini را با استفاده از notepad باز کنید.

بعد از اینکه php.ini را با استفاده از notepad باز کردیم. کلید های ctrl و f را با هم فشار دهید تا کادر find برای شما باز شود. در کادر باز شده عبارت mail function  را بنویسید و سپس بر روی find next کلیک کنید. و موارد مشخص شده در تصویر زیر را با مقادیری که در تصویر نشان داده شده است، مقدار دهی کنید.

باز-کردن-فایل-php.ini-با-استفاده-از-notepade-و-جستجو-برای-یافتن-mail-function

خب بعد از انجام تمامی اقدامات بالا، نوبت به آن رسیده است که یکبار wamp را restart کنیم برای انجام اینکار باید به آیکن wamp در گوشه پایین سمت چپ دسکتاپ بروید و مانند تصویر زیر بر روی  Restart All Services فشار دهید. دقت کنید که بعد از انجام این عمل باید رنگ آیکن  از قرمز به نارنجی و سپس سبز رنگ تغییر کند و رنگ نهایی آیکن wamp، باید سبز شود.

ریست کردن wamp

بعد از انجام عمل بالا تغییرات زیر را نیز اعمال نمایید. به تصویر زیر نگاه کنید.

ریست کردن ssl_moduls

من نام این عملیات را ریست کردن ssl_module گذاشته ام . دقت کنید که باید ssl_module حتما تیک دار شود. از طرفی وقتی تیک ssl_module را می زنید برنامه wamp ریست می شود و رنگ آیکن wamp ابتدا به نارنجی و بعد سبز رنگ می شود. (تا آن زمان که آیکن wamp سبز رنگ نشده، هیچ اقدامی انجام ندهید.) .

بعد از انجام موارد بالا، باید در ادامه طبق تصویر زیر جلو برویم.

ریست کردن php_openssl و php_sockets

نام این عملیات را ریست کردن php_openssl و php_sockets قرار داده ام. که در طی آن شما باید دو قسمت php_openssl و  php_sockets تیک دار نمایید (البته به نوبت). دقت کنید که وقتی تیک php_openssl و php_sockets را می زنید، برنامه wamp ریست می شود و رنگ آیکن wamp ابتدا به نارنجی و بعد سبز رنگ می شود. (تا آن زمان که آیکن wamp سبز رنگ نشده هیچ اقدامی انجام ندهید.)

تا اینجا تمام کارهایی که انجام دادیم مقدمات را برای ارسال ایمیل از طریق wamp را میسر می کند.

دقت کنید برای اینکه ارسال ایمیل میسر شود در آخرین اقدام شما باید به آدرس C:\wamp\sendmail بروید و بر روی sendmail.exe کلیک راست کنید و گزینه properties را انتخاب نمایید . سپس به سربرگ compatibility بروید و در قسمت compatibility mode ، تیک گزینه run this program in compatibility mode for را بزنید و از میان گزینه های موجود در لیست کشویی، گزینه Windows Xp Service Pack 3 را انتخاب نمایید. برای درک بهتر مفاهیم بالا به تصاویر زیر نگاه کنید.

انتخاب propertise

تیک دار کردن

بعد از انجام کار های بالا بر روی ok فشار دهید.

حالا تمام کارهای لازم برای فرستادن ایمیل از طریق لوکال هاست (wamp) به اتمام رسیده است. بنابراین برای تست ارسال ایمیل یک برنامه به زبان php با همدیگر می نویسیم و یک ایمیل از طریق لوکال هاست ارسال می کنیم.

برای انجام اینکار ابتدا باید در آدرس C:\wamp\www یک فایل با نام testmail.php بسازیم (یادتان باشد که بعد از اعمال تغییرات بالا حتما wamp را روشن کنید). به تصویر زیر نگاه کنید.

ایجاد یک برنامه ارسال ایمیل

بعد از انجام اینکار برنامه testmail.php را با استفاده از Notepad++ باز کنید و کدهای زیر را در آن قرار دهید.

<?php
$to       = 'jahangirpachkam@gmail.com';
$subject  = 'Testing sendmail.exe';
$message  = 'hi,jahangir pachkam ';
$headers  = 'From: jahangirpachkam@gmail.com' . "\r\n" .
            'MIME-Version: 1.0' . "\r\n" .
            'Content-type: text/html; charset=utf-8';
if(mail($to, $subject, $message, $headers))
    echo "Email sent";
else
    echo "Email sending failed";
?>

سپس آدرس http://localhost/testmail.php را در مرورگر خودتان وارد نمایید به محض زدن این آدرس تصویر زیر نمایان می شود که نشان دهنده ارسال ایمیل به مقصدی که تعیین کرده ام (jahangirpachkam@gmail.com) می باشد.

پیام emeil send

 

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

ایمیل ارسال شده از wamp به gmail من

خب دوستان عزیزم به پایان این قسمت از آموزش ساخت فروشگاه اینترنتی با php رسیدیم. دقت کنید که ما برای تایید ایمیل دو بخش را باید مد نظر قرار دهیم ؛ یک بخش ارسال ایمیل به مشتری می باشد (که ما آن را این قسمت با همدیگر یاد گرفتیم) و یک بخش مربوط به آن است که کاربر بتواند بر روی لینکی که ما برای او ارسال می کنیم، فشار دهد و بتواند به آدرس اینترنتی فروشگاه ما وارد شود.

این مبحث (قرار دادن لوکال هاست در فضایی اینترنت) بسیار مبحث شیرین و جالبی هست که در قسمت آینده به آن خواهیم پرداخت. سعی کنید تمامی نکاتی را که در این جلسه خدمت شما عرض کردم به خوبی یاد بگیرید و اگر مشکل و یا نقطه نظری داشتید در قسمت نظردهی عنوان نمایید.

منتشر شده در برنامه نویسیPHP (پی اچ پی)