یکی از قابلیت ها و امکانات زبان برنامه نویسی PHP، امکان ارسال رایانامه به راحتی با آن است. در PHP تابعی برای این کار وجود دارد با چند پارامتر که این کار را می کند.

mail(to,subject,message,headers,parameters)

در این تابع پارامترهایی وجود دارند که وظیف هر کدام به اسن ترتیب می باشد:

  • to: گیرنده رایانامه را مشخص می کند. ضروری است.
    • subject: موضوع رایانامه را تعیین می کند. قابل شاره است که در این پارامتر نمی توان از کراکتر خط جدید استفاده کرد. ضروری است.
    • message: متن پیام ارسالی برای رایانامه را مشخص می کند. در این پارامتر هر خط جدید باید با کراکتر (\n) مشخص شود. همچنین خطوط نباید از ۷۰ حرف تجاوز کند. ضروری است.
    • headers: هدرهای اضافه از جمله From, Cc و Bcc را برای رایانامه مشخص می کند. هر هدر اضافه باید با حروف CRLF (\r\n) از هم جدا شوند. استفاده از این پارامتر انتخابی است.
    • parameters:‌ تنظیمات اضافی برای ارسال رایانامه را تعیین می کند.استفاده از این پارامتر انتخابی است.

یک مثال ساده برای انجام این کار، در مسیر webRoot سیستم یک فایل با نام mailform.php ساخته و کد زیر را داخل آن قرار داده و ذخیره کنید:

<html>
<body>

 <?php
  if (isset($_REQUEST['email']))
//if "email" is filled out, send email
  {
  //send email
  $email = $_REQUEST['email'] ;
  $subject = $_REQUEST['subject'] ;
  $message = $_REQUEST['message'] ;
  mail("someone@example.com", $subject,
  $message, "From:" . $email);
  echo "Thank you for using our mail form";
  }
else
//if "email" is not filled out, display the form
  {
  echo "<form method='post' action='mailform.php'>
  Email: <input name='email' type='text'><br>
  Subject: <input name='subject' type='text'><br>
  Message:<br>
  <textarea name='message' rows='15' cols='40'>
  </textarea><br>
  <input type='submit'>
  </form>";
  }
?>

</body>
</html>
  • در این کد ابتدا بررسی می شود که بخش مربوط به ارسال رایانامه پر شده است.
  • اگر این بخش پر نشده باشد، فرم مربوطه HTML را برای ارسال رایانامه نمایش می دهد.
  • اگر هم که آن بخش تکمیل شده باشد اطلاعات مربوط به رایانامه ارسال می شوند.

نکته: نباید فراموش شود که این فقط یک مثال ساده برای آموزش است و از نظر امنیتی و فنی دارای اشکالاتی می باشد که باید با دقت نظر بیشتر بر طرف شوند. در این زمینه باید در زمینه validation ها و secure mail جستجو شود.

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

چند مثال کوچک برای آشنایی بیشتر با این تابع:

ارسال رایانامه همراه با هدر اضافه

<?php
$to      = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com' . "\r\n" .
    'Reply-To: webmaster@example.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);
?>

ارسال رایانامه با قالب HTML

<?php
// multiple recipients
$to  = 'aidan@example.com' . ', '; // note the comma
$to .= 'wez@example.com';

// subject
$subject = 'Birthday Reminders for August';

// message
$message = '
<html>
<head>
  <title>Birthday Reminders for August</title>
</head>
<body>
  <p>Here are the birthdays upcoming in August!</p>
  <table>
    <tr>
      <th>Person</th><th>Day</th><th>Month</th><th>Year</th>
    </tr>
    <tr>
      <td>Joe</td><td>3rd</td><td>August</td><td>1970</td>
    </tr>
    <tr>
      <td>Sally</td><td>17th</td><td>August</td><td>1973</td>
    </tr>
  </table>
</body>
</html>
';

// To send HTML mail, the Content-type header must be set
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Additional headers
$headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n";
$headers .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n";
$headers .= 'Cc: birthdayarchive@example.com' . "\r\n";
$headers .= 'Bcc: birthdaycheck@example.com' . "\r\n";

// Mail it
mail($to, $subject, $message, $headers);
?>
برچسب ها: php email
من در stackexchange.com