سلام دوستان . توی پست های قبلی روش ها و برنامه های زیادی رو برای فرستادن ایمیل از طریق ترمینال گفتیم . اما شاید آسون ترین و کم دردسر ترین روش ، این روشی باشه که در ادامه می گیم . چرا که همون طور که از عنوان مشخص هست ، فقط از ابزار curl استفاده می کنیم !

مقدمه :

فرض کنید ما قصد نداریم برای فرستادن ایمیل ، یک سرور اجاره کنیم و کانفیگ های مربوط به mail server را پیاده سازی کنیم ، از طرفی دوست داریم ایمیلی که ارسال می کنیم ، روی دامنه ی خودمون باشه ( یعنی قصد استفاده از جیمیل یا یاهو و … را نداریم ) پس ساده ترین راه اینه که یک هاست ( با هر قیمتی ) تهیه کنیم .

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

حالا در سمت ترمینال لینوکس و دسکتاپ خودمون کافیه با curl به URL که در بالا گفته شد متصل بشیم . تمام !

 

اسکریپت سمت PHP :

جهت فرستادن ایمیل از تابع mail و از طریق URL در اسکریپت زیر استفاده می کنیم :

توضیح خط دوم :طبیعتا قسمت headers ثابت است و باید متناسب با دامنه و هاست خود آن را پر کنید .

توضیح خط سوم : همان طور که مشاهده می کنید از تابع mail استفاده کردیم و متغیر های to ، subject و msg را از طریق URL دریافت می کنیم .

نکته : برای امنیت بیش تر یک دایرکتوری در داخل هاست خود ایجاد کنید و این کد php را در داخل أن قرار دهید و در آخر بر روی دایرکتوری پسورد بگذارید .

در آخر ، آدرس URL کد php ما به همچین شکلی تبدیل می شود :

 

اسکریپت سمت کلاینت ( BASH ) :

همان طور که قبلا گفته شد ، حالا کافیست با استفاده از curl به URL خودمون متصل بشیم . برای این منظور از اسکریپت زیر استفاده می کنیم :

جهت استفاده از این اسکریپت کافیست با استفاده از sudo یا یوزر root به شکل زیر عمل کنیم :

۱. ابتدا یک فایل متنی در مسیر زیر ایجاد می کنیم :

۲. حالا پرمیشن اجرا برای این فایل در نظر می گیرم :

۳. حال این فایل را با ادیتور مثل nano باز می کنیم و کد گفته شده در بالا را در آن کپی می کنیم :

۴. در آخر برای استفاده از اسکریپت ، یک ترمینال باز کنید و برنامه را به شکل زیر اجرا کنید :

نکته : توجه داشته باشید که در خط آخر باید url مربوط به سایت و دامنه خودمون رو وارد کنید .

 

توضیحات اسکریپت :

خط ۸ : عنوان ایمیل را گرفته و در متغیری با نام subject ذخیره می کند .

خط ۹ : ایمیل مقصد را گرفته و در متغیری با نام to ذخیره می کند .

خط ۱۰ : سوالی از کاربر پرسیده و جواب آن را داخل متغیری با نام need ذخیره می کند .

خط ۱۲ : جواب کاربر مورد بررسی قرار می گیرد یا در واقع محتویات متغیر need مورد بررسی قرار می گیرد . اگر محتویات متغیر need برابر با عبارت t بود ، آن گاه خط ۱۳ و ۱۴ اجرا می شود و اگر محتویات متغیر need برابر با عبارت e بود ، آنگاه خط های ۱۶ ، ۱۷ و ۱۸ اجرا می شود و اگر محتویات متغیر need برابر با e یا t نبود ، آنگاه خط ۲۰ اجرا می شود .

خط ۱۳ : متن ایمیل از کاربر پرسیده می شود و در داخل متغیر msg ذخیره می شود .

خط ۱۴ : ممکن است در متن تایپ شده توسط کاربر ، فاصله وجود داشته باشد ، لذا باید این کارکتر تبدیل به %20 شود تا بتوان در داخل URL از آن استفاده کرد .

خط ۱۵ : متغییر need بررسی می شود . توضیحات بیش تر در خط ۱۲ گفته شده است .

خط ۱۶ : با استفاده از ویرایشگر nano یک فایل جهت تایپ کردن متن ایمیل باز می شود .

خط ۱۷ : محتویات تایپ شده به فرمی استاندارد تبدیل می شود در داخل متغیر msg ذخیره می شود .

خط ۱۸ : فایل ایجاد شده توسط nano از روی سیستم پاک می شود .

خط ۲۰ : در صورتی که محتویات متغیر need عبارات e یا t نبود ، پیغامی مبنی بر خطا چاپ شده و برنامه متوقف می شود .

خط ۲۳ : ممکن است در عنوان نیز فاصله وجود داشته باشد ، لذا باید به فرم استاندارد تبدیل شود .

خط ۲۴ : در نهایت ارتباط با کد php از طریق curl برقرار شده و ایمیل ما ارسال می شود .

 

ضعف ها :

طبیعتا این اسکریپت و در کل این روش دارای ضعف ها و باگ هایی است . به عنوان نمونه برای ایمیل کردن متن های زیاد و یا کارکتر های خاص نمی توان از این روش استفاده کرد چرا که ارتباط با کد php از طریق url است و همین باعث محدودیت هایی می شود .

 

نویسنده : ایمان همایونی
ایمیل نویسنده : info@OSLearn.ir
منبع : وب سایت او اس لرن – http://oslearn.ir
از مطالب وب سایت راضی هستید ؟ رضایت خودتون رو با دونیت به ما اعلام کنید. لطفا برای دونیت روی آیکون زیر کلیک کنید.
 حمایت مالی

درباره نویسنده :

ایمان همایونی هستم، از سال 2009 با گنو لینوکس فعالیت خودم رو در زمینه ی کامپیوتر و IT شروع کردم و تا الان موفق به گذروندن دوره هایLPIC 1 / LPIC 2 / VCP5-DCV / MCITP / CCNA / MTCNA شدم . مدتی در زمینه امنیت فعالیت هایی داشتم اما در حال حاضر تمرکز خودم رو بر روی مجازی سازی و لینوکس گذاشته ام .

تمام پست های من - وب سایت من