ارسال ایمیل از طریق برنامه های سمت سرور و از جمله
php، یکی از رایج ترین مباحث کاربردی در نوع خود است که دیر یا زود برنامه نویس زبان php یا لااقل علاقمند استفاده از آن را درگیر خود می کند، اگرچه php به طور پیش فرض توابعی برای ارسال ایمیل در مفسر خود گنجانده است، اما گستره استفاده از این امکان و نیازهای کاربران به حدی است که نمی توان تنها بر آن متکی بود، از طرفی بحث ارسال ایمیل با توجه به محدودیت ها و قابلیت های سرورهای مختلف، گاهی پتانسیل تبدیل شدن به یک مشکل به ظاهر پیچیده را دارد و این چیزی است که بعضا فکر و ذهن برخی از کاربران را مشغول خود می کند، به همین خاطر در این آموزش قصد داریم در حد امکان بپردازیم به نحوه ارسال ایمیل با php و کلاس phpmailer، با این امید که مفید واقع شود.آموزش phpآموزش php asp.net asp.net



ارسال ایمیل در php با تابع mail

آموزش phpآموزش asp.net


برای ارسال ایمیل در
php روش های مختلفی وجود دارد، ساده ترین راه، ارسال ایمیل با استفاده از تابع درونی و از پیش تعریف شده ()mail و SMTP بدون بررسی نام کاربری و رمز عبور (authentication) است، معمولا، کافی است این تابع را با چند آرگومان فراخوانی کنید تا ایمیل شما ارسال شود، به طور مثال:php asp.net


کد PHP:

<?php
//دریافت کننده ایمیل
$to "username@example.com";
//موضوع ایمیل
$subject "ایمیل ساده";
//متن پیام
$body "سلام، \n\n این ایمیل جهت تست ارسال شده است!";
//سربرگ های اضافه
$headers "From: yourname@example.com";
//فراخوانی تابع و ارسال ایمیل
if (mail($to$subject$body$headers)) {
    echo(
"<p>ایمیل شما با موفقیت ارسال شد</p>");
    } 
else {
    echo(
"<p>خطا در ارسال ایمیل! تنظیمات سرور شما از این امکان پشتیبانی نمی کند</p>");
    }
?>
آموزش phpآموزش asp.net
php asp.net

توضیح:آموزش phpآموزش asp.net

- تابع mail به صورت از پیش تعریف شده در
php وجود دارد و تنها کافی است آن را با تکمیل پارامترها، فراخوانی کنیم.
- کارکرد صحیح این تابع، تا حدود زیادی بستگی به تنظیم درست موارد مورد نیاز آن در فایل php.ini دارد (از جمله smtp_port ،SMTP ،sendmail_from در سرورهای ویندوز و sendmail_path در سرورهای لینوکس)، در سرورهای اشتراکی، معمولا دسترسی به فایل اصلی
php.ini امکان پذیر نیست، بنابراین اگر نتوانید با تابع mail ایمیل ارسال کنید، به احتمال زیاد تنظیمات این فایل به درستی انجام نشده است یا سرور هاست شما، قابلیت ارسال ایمیل را محدود کرده است که باید با پشتیبانی خود در این مورد تماس بگیرید.آموزش phpآموزش asp.net
php asp.net
- همانطور که ملاحظه می کنید، این تابع سه پارامتر اصلی و چند پارامتر فرعی را می تواند در هنگام ارسال ایمیل پوشش دهد، پارامترهای اصلی آدرس ایمیل دریافت کننده، موضوع و متن پیام است، پارامترهای اضافی به صورت سربرگ ها قابل استفاده هستند که به طور مثال می توانند به صورت زیر باشند:آموزش phpآموزش asp.net
php asp.net

آموزش phpآموزش asp.net

کد PHP:

<?php
$headers  
'MIME-Version: 1.0' "\r\n";
$headers .= 'X-Mailer: php' "\r\n";
$headers .= 'Reply-To: username@example.com' "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' "\r\n";
$headers .= 'Cc: Admin@example.com' "\r\n";
$headers .= 'Bcc: Other@example.com' "\r\n";
?>



آموزش phpآموزش asp.net

- علامت r\n\ در کدهای بالا برای ایجاد یک خط جدید استفاده می شوند.
- MIME یک استاندارد اینترنتی برای ارسال و دریافت ایمیل است (Multipurpose Internet Mail Extensions)، همچنین است SMTP که مخفف (Simple Mail Transfer Protocol) است.

آموزش phpآموزش asp.net


ارسال ایمیل با استفاده از کلاس phpmailer
php asp.net
آموزش phpآموزش asp.net


اگرچه کاربرد تابع mail در php بسیار آسان و ساده است، اما این تابع تنها موارد اولیه را پوشش می دهد، به فرض امکان استفاده از SMTP به صورت authentication یا بررسی نام کاربری و کلمه عبور وجود ندارد، یا نمی توان سرور ارسال ایمیل را تغییر داد و محدودیت های دیگری از این دست، لذا برنامه نویسان php بسته ها و کلاس های دیگری بدین منظور نوشته اند که یکی از معروف ترین آنها کلاس phpmailer است، علاوه بر کلاس phpmailer بسته ایمیل PEAR نیز برای php وجود دارد که البته به دلیل قدرت و انعطاف پذیری کلاس phpmailer کم تر مورد استفاده قرار می گیرد.
برای شروع آموزش این قسمت ابتدا کلاس مذکور را از لینک زیر دریافت کنید:


http://code.google.com/a/apache-extras.org/p/phpmailerآموزش phpآموزش asp.net php asp.net


استفاده از کلاس بالا بسیار ساده و آسان است، کافی است مطابق الگوی زیر
موارد مورد نظر را با توجه به سرور خود تنظیم کرده و فایل را اجرا نمائید.

کد PHP:


<?php
require_once('class.phpmailer.php');
$mail = new PHPMailer(true);
$mail->IsSMTP();
try {    
  
$mail->Host       "mail.example.com"// آدرس SMTP سرور شما
  
$mail->SMTPAuth   true;                  // استفاده از SMTP authentication
  
$mail->Username   "yourname@example.com"// نام کاربری SMTP
  
$mail->Password   "************";        // کلمه عبور SMTP
  
$mail->AddReplyTo('yourname@example.com''Your Name'); // افزودن پاسخ به ارسال کننده
  
$mail->AddAddress('username@example.com''User Name'); // تنظیم آدرس گیرنده ایمیل
  
$mail->SetFrom('yourname@example.com''Your Name'); // تنظیم قسمت ارسال کننده ایمیل
  
$mail->Subject 'PHPMailer تست'// موضوع ایمیل
  
$mail->AltBody 'برنامه شما از این ایمیل پشتیبانی نمی کند، برای  دیدن آن، لطفا از برنامه دیگری استفاده نمائید'// متنی برای کاربرانی که  نمی توانند ایمیل را به درستی مشاهده کنند
  
$mail->CharSet 'UTF-8'// یونیکد برای زبان فارسی
  
$mail->ContentType 'text/html'// استفاده از html  
  
$mail->MsgHTML('<html>
<body>
این یک <font color="#CC0000">تست</font> است!
</body>
</html>'
); // متن پیام به صورت html
  //$mail->AddAttachment('images/phpmailer.gif'); // ضمیمه کردن فایل
  
$mail->Send(); // ارسال
  
echo "پیام با موفقیت ارسال شد\n";

catch (
phpmailerException $e) {
    echo 
$e->errorMessage(); // پیام خطا از phpmailer

catch (
Exception $e) {
    echo 
$e->getMessage(); // سایر خطاها
}
?>
آموزش phpآموزش asp.net php asp.net






منبع