فروش ویژه : ثبت دامنه آی آر IR فقط 99 هزار تومان سفارش آنلاین/ تحویل آنی
فروش ویژه : ثبت دامنه دات کام COM فقط 990 هزار تومان سفارش آنلاین/ تحویل آنی (بهترین پیشنهاد)
فروش ویژه : 1500 مگابایت هاست ابری به همراه SSL رایگان ماهیانه فقط 99 هزار تومان مشاهده مشخصات و پلن ها

تابع ارسال ایمیل PHPMailer

 یکی از ویژگی های زبان برنامه نویسی PHP قابلیت ارسال ایمیل از طریق تابع PHPMailer است. PHPMailer یک کلاس ساده در زبان PHP است که امکان ارسال ایمیل توسط بازدیدکنندگان سایت شما را از طریق فرم های تعبیه شده در وب سایت برایتان فراهم می کند. بر خلاف تابع پیشفرضِ ارسال ایمیل در PHP که همان تابع ()mail است، PHPMailer از سیستم ارسال ایمیل سرور خود شما (‌بجای استفاده از سرویس ارسال ایمیل در سرورهای اشتراکی) استفاده کرده و بنابراین به یک آدرس پست الکترونیک معتبر با رمز ورود آن نیازمند است. مزیت این کلاس، امنیت و امکانات بیشتر آن می باشد.

در این آموزش جهت درج توضیحات در خصوص کدهای php، هر کد در سطری جداگانه آورده شده است.

 

دانلود تابع PHPMailer

یکی از راههای مورد استفاده از PHPMailer دانلود فایل مربوطه (مورد استفاده در CMS ها نظیر وردپرس و جوملا) است. پس از دانلود، پوشه ای جدید با نام دلخواه (به عنوان مثال phpmailer) در پوشه public_html  ایجاد کرده و سپس فایل دانلود شده را از حالت فشرده خارج سازید و سپس تنظیمات لازم را روی آن اعمال نمایید.

نکته :  مسیری که فایل دانلود شده در آن آپلود می شود بسیار مهم است، چرا که برای ارسال شدن ایمیل ها باید مسیر ذکر شده در سیستم تعریف شود.

 

ایجاد فرم تماس

همانطور که پیشتر توضیح داده شد ارسال ایمیل های تحت وب از طریق فرم های تماس با ما و یا فرم های نظر سنجی انجام می گیرد. برای ایجاد فرم می توانید از کد HTML زیر استفاده نمایید :

<form method="Post" action="send.php">

<p>

نام و نام خانوادگی

<br />

<input type="text" name="Name" />

</p>

<p>

پست الکترونیک

<br />

<input type="text" name="E-Mail" />

</p>

<p>

موضوع

<br />

<input type="text" name="Subject" />

</p>

<p>

متن پیام

<br />

<textarea cols="35" rows="6" name="Message" ></textarea>

</p>

<input type="reset" value="شروع مجدد" /><input type="submit" value="ارسال" />

</form>

همانگونه که در کد بالا ملاحظه می کنید، اطلاعات توسط فرم به صفحه ای با نام send.php فرستاده شده و پس از پردازش ارسال می شوند.

 

صفحه send.php

پیش از ارسال اطلاعات ایمیل نیاز است تا اطلاعات را دریافت کرده و در متغیرهای php ذخیره نمایید. برای این منظور از متغیرهای زیر استفاده کنید:

$name=$_POST['Name'];

کد فوق به این معنا است که اطلاعات ارسال شده توسط فیلد نام و نام خانوادگی که در تگ html با مقدار Name مشخص کرده بودید، درون متغیری با نام name ذخیره شود.

 

سایر مقادیر ر ا نیز به همین روش درون متغیرهای php ذخیره نمایید.

$from=$_POST['E-Mail'];

$subject=$_POST['Subject'];
$message=$_POST['Message'];

 

در گام بعد کلاس phpmailer را که در ابتدا دانلود و نصب کرده بودید به صفحه send.php متصل نمایید. برای اینکار می باید از مسیر نصب استفاده شود.

require("phpmailer/class.phpmailer.php");
include("phpmailer/class.smtp.php");

توجه داشته باشید که مسیر فوق نسبی است.

 

حال میتوانید از توابع تعیین شده توسط phpmailer استفاده نمایید. متغیر پیشفرض را برابر mail قرار داده و  در خط بعد کد مربوط به استفاده از SMTP را درج نمایید:

$mail= new PHPMailer();
$mail->IsSMTP();

 

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

$mail->Host       = "mail.YOURDomain.com";

 

 

مقدار true در کد ذیل اعلام می کند برای ارسال ایمیل باید شناسایی و تایید SMTP صورت بگیرد.

$mail->SMTPAuth=true;

 

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

$mail->SetFrom($from, $name);
$mail->AddReplyTo($from, $name);

 

آدرس ایمیلی که در کد ذیل درج می نمایید، همان پست الکترونیکی است که اطلاعات فرم به آن ارسال خواهد شد.

$mail->AddAddress('YourMail@example.com', "Your Name");

 

عنوان ایمیلهای دریافتی از طریق کد ذیل تنظیم می شود. در این کد از متغیر subject استفاده شده که در ابتدای صفحه برای دریافت اطلاعات فیلد موضوع آن را ایجاد کرده بودیم. پس در واقع عنوان ایمیل های دریافتی همان متنی است که کاربر در فیلد موضوع وارد کرده است.

$mail->Subject    = $subject;

 

حال نحوه نمایش ایمیل را بر روی html تنظیم کنید. با اینکار میتوانید با استفاده از تگهای html چیدمان ایمیل دریافتی را تغییر دهید. البته الزامی در اینکار نیست و استفاده از html اختیاری است.

$mail->IsHTML(true);

$body = '<html><body>';
$body .= '<p style="direction:rtl;font-family:tahoma;">'.$message.'</p>';
$body .= "</body></html>";

 

در گام بعد می توانید تعیین کنید که در صورت پشتیبانی از html ایمیل ها به صورت تعریف شده با چیدمان html نمایش داده شوند (سطر نخست) و در غیر این صورت متن پیام به صورت ساده نمایش داده شود ( سطر دوم).

$mail->MsgHTML($body);
$mail->AltBody= $message;

 

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

if(!$mail->Send()) {
echo "خطا:پیام شما ارسال نشد » " . $mail->ErrorInfo;
} else {
echo "پیام ارسال شد!";
}

 

در کد ذیل عدد ۲ یا هر عدد دلخواه شما، نمایش دهنده زمان بر اساس ثانیه است و بدین معناست که کاربر بعد از ۲ ثانیه به آدرسی که تعیین می کنید هدایت می شود . این آدرس در کد ذیل با رنگ قرمز مشخص شده است که باید بر اساس نیاز خود آن را تغییر دهید .

 

* آدرس نخست برای حالتی است که کاربر با پیام خطا مواجه میشود و آدرس دوم برای مواردی است که ایمیل با موفقیت ارسال شده است.

if(!$mail->Send()) {
echo ("<meta http-equiv='refresh' content='۲; url=http://yourdomain.com'> ");}
else{
echo ("<meta http-equiv='refresh' content='۲; url=http://yourdomain.com'> ");}

 

 

نکتـــــه ها :

-          جهت جلوگیری از مشکل به هم ریختگی فارسی در عنوان و متن ایمیل ارسالی از کد زیر استفاده نمایید:

$mail->CharSet = 'UTF-8';

 

-          جهت ارسال همزمان یک ایمیل به چند مخاطب از کد زیر استفاده نمایید:

$mail->AddAddress(آدرس ایمیل مخاطب, ' نام مخاطب');

 

-          توسط متد AddAddress می‌توان به هر تعدادی که مایل باشید، گیرنده اضافه نمایید.

 

-          جهت ارسال همزمان یک ایمیل به چند مخاطب به صورتی  که گیرندگان از نام سایرین مطلع نشون (Bcc) از کد زیر استفاده نمایید:

$mail->AddABCC(آدرس ایمیل مخاطب, ' نام مخاطب');

 

-          جهت ارسال  ایمیل همراه با فایل پیوست از کد زیر استفاده نمایید:

$mail->AddAttachment('آدرس فایل')

 

-          جهت ارسال ایمیل از طریق smtp خاصی مثلا smtp جیمیل از کدهای زیر استفاده نمایید:

 

$mail->IsSMTP();

$mail->Host       = 'smtp.gmail.com';

 

$mail->SMTPSecure = 'tls';

$mail->Port       = 587;

$mail->SMTPDebug  = 1;

$mail->SMTPAuth   = true;

 

$mail->Username   = 'your gmail address';

$mail->Password   = 'your password';

 

 

 

 

توجه : در سرورهای شرکت تاژان جهت جلوگیری از ارسال ایمیل های انبوه تبلیغاتی که بعضا از آدرس های الکترونیک جعلی و غیرواقعی (اسپم) ارسال می شوند، تابع پیشفرض ارسال ایمیل ()phpmail مسدود می باشد و لذا با استفاده از آموزش فوق کاربران علی رغم تکمیل فرم، پیامی را در پست الکترونیک خود دریافت نخواهند کرد.

 

 

آیا این پاسخ مفید بود؟

خوانده شده

تابع ارسال ایمیل CDO

جهت ارسال ایمیل از طریق کدهای برنامه نویسی ASP.Net می توانید از تابع CDO به شرح زیر استفاده...

تابع ارسال ایمیل ASP.Net

ارسال ایمیل با ASP.Net بسیار ساده است. .NET framework شامل فضای نام (Namespace) امکان دسترسی به...