رفتن به مطلب
amrdata

ارسال ایمیل به صورت قانونی توسط SMTP

پست های پیشنهاد شده

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

[align=LEFT]

[font=tahoma][b][color=#000000]<?php[/color][/b]
[url=http://www.php.net/mail][color=#000066]mail[/color][/url]  [color=#66cc66]([/color][color=#ff0000]"recipient@nabi.ir"[/color], [color=#ff0000]"subject"[/color], [color=#ff0000]"body"[/color], [color=#ff0000]"From:  sender@nabi.ir"[/color][color=#66cc66])[/color];
[b][color=#000000]?>[/color][/b][/font]

[/align]

همانطور که میدانید تابع ()mail در PHP از انعطاف پذیری زیادی برخوردار نمی باشد و ایمیلهایی که توسط این تابع ارسال می شوند، غالباً به صورت گمنام یا اصطلاحاً nobody ارسال خواهند شد. این مسئله برای یک مدیر سرور از اهمیت ویژه ای برخوردار است. چراکه احتمال اینکه آن ایمیل از سمت گیرنده، به صورت خودکار spam محسوب شود و به bulk انتقال یابد بسیار زیاد است. چـه بسـا ممکن اسـت IP سـرور مسدود (block) شود و مشکلات دیگری را ناشی شود.

راه حلی که وجود دارد استفاده از SMTP Server به صورت قانونی (Authentication) می باشد. خوشبختانه وجود بستۀ PEAR Mail برای PHP کار را آسان کرده است و توسط آن بسادگی میتوان ایمیل های مطمئن ارسال کرد. ایمیلهایی که بدین صورت ارسال خواهند شد غالباً در inbox دریافت کننده قرار خواهند گرفت.

mall">

mall">نکته مهم اینکه کدی که در این مقاله ارائه خواهد شد نیاز به بستۀ کلی PEAR و همچنین بسته های تکمیلی Net_Socket ، Net_SMTP، Mail دارد.

بسته PEAR معمولاً به طور پیشفرض بر روی سرور نصب است. اما در مورد بسته های تکمیلی ذکر شده همیشه اینگونه نیست.

در هر صورت شما هم به عنوان مدیر یک سرور و هم به عنوان کاربر مصرفی و برنامه نویس میتوانید براحتی اقدام به نصب آنها نمائید.

در مورد مدیران سرور کافیست از وجود بسته های ذکر شده در مسیر include_path که اغلب به صورت usr/lib/php:/usr/local/lib/php/:. و یا مشابه می باشد اطمینان حاصل کنند. مسیر دقیق بسته های الحاقی را میتوانند در فایل php.ini جستجو کنند. در صورت موجود نبودن هر یک از بسته ها، تنها کافیست آن بسته را از لینک مربوطه دون لود و در مسیر بسته های الحاقی قرار دهند.

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

فایلهای مورد نیاز همراه با لینک دون لود آنها به صورت زیر می باشند که می بایستی در مسیر های مشخصه قرار داشته باشند:

[align=LEFT]

[font=tahoma]PEAR.php  http://pear.php.net/package/PEAR/download
Mail.php  http://pear.php.net/package/Mail/download
Mail/mail.php  http://pear.php.net/package/Mail/download
Mail/null.php  http://pear.php.net/package/Mail/download
Mail/RFC822.php  http://pear.php.net/package/Mail/download
Mail/sendmail.php  http://pear.php.net/package/Mail/download
Mail/smtp.php  http://pear.php.net/package/Mail/download
Net/SMTP.php  http://pear.php.net/package/Net_SMTP/download
Net/Socket.php  http://pear.php.net/package/Net_Socket/download[/font]

[/align]

پس از حصول اطمینان از نصب بسته های الحاقی ، شما توسط کد PHP زیر میتوانید به SMTP Server وصل شده و ایمیل قانونی و مطمئن ارسال نمائید:

[align=LEFT]

[font=tahoma][color=#000000][b]<?php[/b][/color]
   [color=#b1b100]require_once[/color]	 [color=#ff0000]"Mail.php"[/color];

   [color=#0000ff]$from[/color] = [color=#ff0000]	 "Sandra Sender "[/color];	 [color=#808080][i]//نام و ایمیل ارسال کننده[/i][/color]
   [color=#0000ff]$to[/color] = [color=#ff0000]	 "Ramona Recipient "[/color];	 [color=#808080][i]//نام و ایمیل دریافت کننده[/i][/color]
   [color=#0000ff]$subject[/color] =	 [color=#ff0000]"Hi!"[/color];	 [color=#808080][i]//موضوع ایمیل[/i][/color]
   [color=#0000ff]$body[/color] = [color=#ff0000]	 "Hi,[color=#000099][b]\n\n[/b][/color]How are	  you?"[/color]; [color=#808080][i]//متن ایمیل	  ارسالی[/i][/color]

   [color=#0000ff]$host[/color] = [color=#ff0000]	 "mail.example.com"[/color]; [color=#808080][i]	 //آدرس میل سرور[/i][/color]
   [color=#0000ff]$username[/color] =	 [color=#ff0000]"smtp_username"[/color];	 [color=#808080][i]//نام کاربری میل سرور[/i][/color]
   [color=#0000ff]$password[/color] =	 [color=#ff0000]"smtp_password"[/color];	 [color=#808080][i]//کلمه عبور میل سرور[/i][/color]

   [color=#0000ff]$headers[/color] =	  [url=http://www.php.net/array][color=#000066]array[/color][/url]	 [color=#66cc66]([/color][color=#ff0000]'From'[/color]	  => [color=#0000ff]$from[/color],
	[color=#ff0000]'To'[/color] =>	 [color=#0000ff]$to[/color],
	[color=#ff0000]'Subject'[/color] =>	 [color=#0000ff]$subject[/color][color=#66cc66])[/color];
   [color=#0000ff]$smtp[/color] =	 [url=http://www.php.net/mail][color=#000066]Mail[/color][/url]::[color=#006600]factory[/color][color=#66cc66]([/color][color=#ff0000]'smtp'[/color],
	[url=http://www.php.net/array][color=#000066]array[/color][/url]	 [color=#66cc66]([/color][color=#ff0000]'host'[/color]	  => [color=#0000ff]$host[/color],
	  [color=#ff0000]'auth'[/color] =>	 [color=#000000][b]true[/b][/color],
	  [color=#ff0000]'username'[/color] =>	 [color=#0000ff]$username[/color],
	  [color=#ff0000]'password'[/color] =>	 [color=#0000ff]$password[/color][color=#66cc66]))[/color];

   [color=#0000ff]$mail[/color] = [color=#0000ff]	 $smtp[/color]->[color=#006600]send[/color][color=#66cc66]([/color][color=#0000ff]$to[/color],	 [color=#0000ff]$headers[/color], [color=#0000ff]	 $body[/color][color=#66cc66])[/color];

   [color=#b1b100]if[/color] [color=#66cc66]([/color]PEAR::[color=#006600]isError[/color][color=#66cc66]([/color][color=#0000ff]$mail[/color][color=#66cc66]))[/color]	 [color=#66cc66]{[/color]
	[url=http://www.php.net/echo][color=#000066]echo[/color][/url][color=#66cc66]([/color][color=#ff0000]"
"[/color]	  . [color=#0000ff]$mail[/color]->[color=#006600]getMessage[/color][color=#66cc66]()[/color]	  . [color=#ff0000]""[/color][color=#66cc66])[/color];	 [color=#808080][i]//پیغام خطای احتمالی[/i][/color]
    [color=#66cc66]}[/color] [color=#b1b100]else[/color]	 [color=#66cc66]{[/color]
	[url=http://www.php.net/echo][color=#000066]echo[/color][/url][color=#66cc66]([/color][color=#ff0000]"
Message	  successfully sent!"[/color][color=#66cc66])[/color];	 [color=#808080][i]//پیغام صحت ارسال ایمیل[/i][/color]
    [color=#66cc66]}[/color]
   [color=#000000][b]?>[/b][/color][/font]

[/align]کد بالا نیاز به توضیح ندارد و کاملاً واضح است. ضمن اینکه توضیحات برخی خطوط در جلوی آنها نوشته شده است.

یک نکته هم بد نیست متذکر بشوم و آن اینکه این روش جلوی ارسال اسپم را نمیگیرد، و شما از هر راه و روشی برای ارسال ایمیل استفاده کنید، نهایتاً کاربر با قرار دادن آن کدها در یک حلقه for میتواند ایمیلهای زیادی را در مدت کوتاهی ارسال کند و این یعنی اسپم! یا حتی در صورتی که متغییر ایمیل مربوط به شخص دریافت کننده را از طریق پارامتر های ورودی و از url بصورت get دریافت کند، آن وقت است که url حکم یک exploit را خواهد داشت و اشخاص دیگر با قرار دادن آن url در حلقه میتوانند از روی سرور های دیگر ولی توسط سرور شما به هر کجا اسپم ارسال کنند. پس این کد تنها کنترل مدیران بر روی ایمیل های ارسالی از طرف سرور را افزایش خواهد داد و احتمال دریافت در inbox را بسیار بالاتر خواهد برد. یکی از روشهای مقابله با مشکلات نامبرده استفاده از کد امنیتی می باشد.

امیدوارم مفید بوده باشد. در مقاله بعد، در مورد ارسال ایمیل های قانونی پیشرفته با امکان ارسال بصورت html ، پیوست فایل به ایمیل و تعیین دریافت رسید ایمیل و ... صحبت خواهیم کرد.

+ کد این مقاله اقتباسی بود از [ اینجا ] بعلاوه کاستی و افزودنی های مجاز اینجانب

[/align][align=RIGHT]

منبع

[/align][align=RIGHT]منبع

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

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

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


×
×
  • افزودن...