چگونه از طریق کلاس PHPMailer فرم تماس با ما ایجاد کنیم؟ (روش2)

برنامه نویسی و کدینگ > PHP

جهت ساخت یک فرم ارتباط با ما ساده به زبان PHP ،ابتدا مانند شکل زیر یک فرم ساده تماس با ما به زبان HTML که کد آن در زیر عکس آمده طراحی نمایید.

 

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>PHP Contact Form – Iranhost </title>
    <link rel="stylesheet" type="text/css" href="style.css" />
  </head>
  <body>
    <div id="contactForm">
    
      <h2>Contact me</h2>
    
      <form action="contact.php" method="post">
      
        <label>Name:</label>
        <input type="text" name="name" />
  
        <label>Email:</label>
        <input type="text" name="email" />
        
        <label>Message:</label><br />
        <textarea name="message" rows="20" cols="20"></textarea>
        
        <input type="submit" class="submit" name="submit" value="Send message" />
        
      </form>
    </div>
  </body>
</html>

سپس فرم ساخته شده را با پسوند php  ذخیره نمایید ( دقت نمایید که وقتی صفحه ارتباط با ما ، با این پسوند ذخیره میشود میتواند کد هایphp    را پردازش نماید)

در طراحی فرم ارتباط با ما مذکور ، از متد POST  کردن متغییر ها بین فرم HTML و زبان برنامه نویسی PHP استفاده شده است و بدین ترتیب میتوان مقدار فیلد ها را توسط $_POST['name_of_field'] که name_of_field در اینجا نام فیلد مذکور میباشد ، بدست آورد و از تابع empty در زبان php جهت خالی نبودن مقدار وارد شده در فیلد مورد نظر اطمینان حاصل نمود.

if (!empty($_POST['email'])) {
  $email = $_POST['email'];
  if (!preg_match("/^[_a-z0-9]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i", $email)){ 
  $error .= "The e-mail address you entered is not valid. <br/>";
  }
  } else {
  $error .= "You didn't type in an e-mail address. <br />";
}

 

حال پس از بررسی انجام شده با تابع empty ، میتوان مراحل ارسال توسط ایمیل را طی نمود . باید توجه داشت بر روی سرور های ویندوز ایران هاست باید از توابع و کلاس های php  که امکان تعریف پروتکل SMTP را دارا هستند بهره برد لذا تمیتوان از تابع mail() زبان PHP برای این منظور استفاده کرد .

میتوان جهت ارسال مقادیر فوق از کلاس phpMailer که یک کلاس کامل جهت ارسال ایمیل نوشته شده به زبان php است ، و امکان تعریف پروتکل ذکر شده را داراست استفاده نمود. برای این منظور ابتدا فایل های مربوط به کلاس ذکر شده به همراه تمامی فایل های پروژه را از  این لینک دریافت کرده و سپس در کنار فایل contact.php خود قرار دهید سپس جهت استفاده از توابع کلاس فوق در فایل contact.php به صورت زیر Scope مربوطه را تعریف می نماییم.

require_once('class.phpmailer.php');

سپس میتوانید از توابع  ()IsSMTP جهت استفاده از SMTP و تنظیمات مربوط به آن و از تابع send() جهت ارسال ایمیل مانند کد زیر استفاده نمایید.

$mail = new PHPMailer(true);

$mail->IsSMTP();

try {     

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

$mail->SMTPAuth   = true;                 

$mail->Username   = "your mail account";

$mail->Password   = "your mail account password";       

$mail->AddReplyTo('your mail', 'Your Name');

$mail->AddAddress('your mail', 'User Name');

$mail->SetFrom($email, $Name); 

$mail->Subject = 'Contact US';

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

$mail->ContentType = 'text/html';

$mail->MsgHTML($message);

$mail->Send();

 

توجه داشته باشید در کد PHP فوق بایستی کدهای لازم را بدرستی جای گذاری کنید . بجای yourdomain.com نام دامنه خود را قرار دهید ، همچنین به جای yourmail@yourdomain.com نام ایمیلی که قرار است ایمیل ارتباط با ما برای آن ارسال شود را قرار دهید  و نیز لازم به ذکر است متغییر های  $email ,$Name,$message ، همان متغییر های تعریف شده برای فیلد های ما هستند که توسط متد توضیح داده شده در ابتدای این مقاله مقدار دهی شده اند و به عنوان ورودی توابع کلاس phpmailer  در کد بالا ارسال شده اند. 

با توجه به سیاست های اتخاذ شده در  میل سرورهای ایران هاست می بایست در قسمت SetFrom حتما اکانتی باشد که توسط آن Authenticate صورت گرفته است . 

 

جهت جلوگیری از دریافت ایمیل اسپم  توسط فرم ایجاد شده ، میتوانید از تکنولوژی کدهای امنیتی استفاده نمایید. برای این منظور میتوان از کد captcha موجود در فایلی به همین (captcha.php ) استفاده نمود و پس از تعریف  session مورد نظر در ابتدای کد ، آن را به فرم اضافه نمود.

<label><img src="captcha.php"></label>
<input type="text" name="code"> <br /> 

باید توجه داشت captcha.php به صورت یک منبع تصویر تعریف شده است.(در حقیقت captcha.php یک خروجی تصویر با پسوند png برای ما ایجاد خواهد کرد).

در آخر اگر مایل به اضافه کردن فیلد خاصی به فرم خود هستید میتوانید با اضافه نمودن یک متغییر ( ($VariableName همانند زیر و چک کردن فیلد مورد نظر توسط تابع empty اقدام به ارسال آن نمایید.

 

<input type="text" name="phone" value="<?php echo $_POST['phone']; ?>" />

 

 

 

 

*لازم به ذکر است  در استفاده از کلاس فوق از access control ها ی public و private استفاده شده است و به نوعی از قابلیت های PHP نسخه 5  به حساب می آید ، پس نسخه مربوط به php  سرویس میزبانی خود را باید حتما بر روی PHP 5 تنظیم نمایید در غیر اینصورت با پیام خطای زیر مواجه خواهید شد:
 

parse error syntax error unexpected t_string expecting t_old_function or t_function or t_var or

 

 

 

 

Add Feedback