آموزش PHP

آموزش PHP - ارسال ایمیل با استفاده از PHP

PHP  باید به طور صحیح در فایل php.ini با جزئیات نحوه ارسال ایمیل شما پیکربندی شود. فایل php.ini موجود در دایرکتوری /etc/ را پیدا کنید و بخش با نام [function mail] را پیدا کنید. 

کاربران ویندوز باید مطمئن شوند که دو دستورالعمل عرضه شده اند. اولین SMTP نامیده می شود که آدرس سرور ایمیل شما را مشخص می کند. دومین نام فرستنده است که آدرس ایمیل شما را مشخص می کند.

پیکربندی برای ویندوز باید چیزی شبیه به این باشد:

[mail function]
; For Win32 only.
SMTP = smtp.secureserver.net

; For win32 only
sendmail_from = webmaster@tutorialspoint.com

کاربران لینوکس به سادگی باید به PHP محل برنامه ارسال sendmail را نشان دهند. مسیر و هر سوئیچ دلخواه باید به دستور sendmail_path مشخص شود.

پیکربندی برای لینوکس باید چیزی شبیه به این باشد:

[mail function]
; For Win32 only.
SMTP = 

; For win32 only
sendmail_from = 

; For Unix only
sendmail_path = /usr/sbin/sendmail -t -i

حال آماده هستید... 

ارسال ایمیل متن ساده

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

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

هر پارامتر به شرح زیر است.

پارامتر

شرح

to

ضروری. گیرنده / گیرنده های ایمیل را مشخص می کند.

subject

ضروری. موضوع ایمیل را مشخص می کند. این پارامتر نمی تواند شامل هر کاراکترهای خط جدید (newline) باشد.

message

ضروری. پیام فرستاده شده را تعریف می کند. هر خط باید با یک LF (n) جدا شود. خطوط نباید بیش از 70 کاراکتر باشد.

headers

اختیاری. هدرهای اضافی مانند From، Cc و Bcc را مشخص می کند. هدرهای اضافی باید با یک CRLF (rn)جدا می کند.

parameters

اختیاری. یک پارامتر اضافی را برای برنامه ارسال ایمیل مشخص می کند.

 

به محض این که تابع mail (ایمیل) فراخوانی شود، PHP  تلاش می کند تا ایمیل را ارسال کند و در صورتی که موفقیت آمیز باشد، true  و اگر نا موفق باشد false  را بر می گرداند.

گیرندگان چندگانه را می توان به عنوان اولین آرگومان تابع ()mail در لیست جدا شده با کاما مشخص کرد.

ارسال ایمیل HTML

هنگامی که یک پیام متنی را با استفاده از PHP  ارسال می کنید، همه محتوا به عنوان متن ساده رفتار خواهد نمود. حتی اگر تگ های HTML را در یک پیام متنی وارد کنید، به عنوان متن ساده نمایش داده می شود و تگ های HTML براساس نحوۀ HTML فرمت نمی شوند. اما PHP گزینه ای برای ارسال یک پیام HTML به عنوان پیام HTML واقعی فراهم می کند.

هنگام ارسال یک پیام ایمیل می توانید یک نسخه MIME، نوع محتوا و کاراکتر را برای ارسال یک ایمیل HTML مشخص کنید.

مثال

مثال زیر یک پیام ایمیل HTML به xyz@somedomain.com ارسال می کند و آن را به afgh@somedomain.com کپی می نماید. می توانید این برنامه را به طوری که تمام مطالب را از کاربر دریافت کرده و سپس آن را باید یک ایمیل ارسال کنید تنظیم نمایید.

<html>
   
   <head>
      <title>Sending HTML email using PHP</title>
   </head>
   
   <body>
      
      <?php
         $to = "xyz@somedomain.com";
         $subject = "This is subject";
         
         $message = "<b>This is HTML message.</b>";
         $message .= "<h1>This is headline.</h1>";
         
         $header = "From:abc@somedomain.com rn";
         $header .= "Cc:afgh@somedomain.com rn";
         $header .= "MIME-Version: 1.0rn";
         $header .= "Content-type: text/htmlrn";
         
         $retval = mail ($to,$subject,$message,$header);
         
         if( $retval == true ) {
            echo "Message sent successfully...";
         }else {
            echo "Message could not be sent...";
         }
      ?>
      
   </body>
</html>

 

ارسال پیوست ها با ایمیل

برای ارسال ایمیل با محتوای ترکیبی نیاز به تنظیم Content-type سرصفحه به multipart (چند قطعه) / mixed (ترکیب) دارید. سپس بخش های متن و پیوست را می توان در محدوده مشخص کرد.

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

<?php
   // request variables // important
   $from = $_REQUEST["from"];
   $emaila = $_REQUEST["emaila"];
   $filea = $_REQUEST["filea"];
   
   if ($filea) {
      function mail_attachment ($from , $to, $subject, $message, $attachment){
         $fileatt = $attachment; // Path to the file
         $fileatt_type = "application/octet-stream"; // File Type 
         
         $start = strrpos($attachment, '/') == -1 ? 
            strrpos($attachment, '//') : strrpos($attachment, '/')+1;
				
         $fileatt_name = substr($attachment, $start, 
            strlen($attachment)); // Filename that will be used for the 
            file as the attachment 
         
         $email_from = $from; // Who the email is from
         $subject = "New Attachment Message";
         
         $email_subject =  $subject; // The Subject of the email 
         $email_txt = $message; // Message that the email has in it 
         $email_to = $to; // Who the email is to
         
         $headers = "From: ".$email_from;
         $file = fopen($fileatt,'rb'); 
         $data = fread($file,filesize($fileatt)); 
         fclose($file); 
         
         $msg_txt="nn You have recieved a new attachment message from $from";
         $semi_rand = md5(time()); 
         $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; 
         $headers .= "nMIME-Version: 1.0n" . "Content-Type: multipart/mixed;n" . "
            boundary="{$mime_boundary}"";
         
         $email_txt .= $msg_txt;
			
         $email_message .= "This is a multi-part message in MIME format.nn" . 
            "--{$mime_boundary}n" . "Content-Type:text/html; 
            charset = "iso-8859-1"n" . "Content-Transfer-Encoding: 7bitnn" . 
            $email_txt . "nn";
				
         $data = chunk_split(base64_encode($data));
         
         $email_message .= "--{$mime_boundary}n" . "Content-Type: {$fileatt_type};n" .
            " name = "{$fileatt_name}"n" . //"Content-Disposition: attachment;n" . 
            //" filename = "{$fileatt_name}"n" . "Content-Transfer-Encoding: 
            base64nn" . $data . "nn" . "--{$mime_boundary}--n";
				
         $ok = mail($email_to, $email_subject, $email_message, $headers);
         
         if($ok) {
            echo "File Sent Successfully.";
            unlink($attachment); // delete a file after attachment sent.
         }else {
            die("Sorry but the email could not be sent. Please go back and try again!");
         }
      }
      move_uploaded_file($_FILES["filea"]["tmp_name"],
         'temp/'.basename($_FILES['filea']['name']));
			
      mail_attachment("$from", "youremailaddress@gmail.com", 
         "subject", "message", ("temp/".$_FILES["filea"]["name"]));
   }
?>

<html>
   <head>
      
      <script language = "javascript" type = "text/javascript">
         function CheckData45() {
            with(document.filepost) {
               if(filea.value ! = "") {
                  document.getElementById('one').innerText = 
                     "Attaching File ... Please Wait";
               }
            }
         }
      </script>
      
   </head>
   <body>
      
      <table width = "100%" height = "100%" border = "0" 
         cellpadding = "0" cellspacing = "0">
         <tr>
            <td align = "center">
               <form name = "filepost" method = "post" 
                  action = "file.php" enctype = "multipart/form-data" id = "file">
                  
                  <table width = "300" border = "0" cellspacing = "0" 
                     cellpadding = "0">
							
                     <tr valign = "bottom">
                        <td height = "20">Your Name:</td>
                     </tr>
                     
                     <tr>
                        <td><input name = "from" type = "text" 
                           id = "from" size = "30"></td>
                     </tr>
                     
                     <tr valign = "bottom">
                        <td height = "20">Your Email Address:</td>
                     </tr>
                     
                     <tr>
                        <td class = "frmtxt2"><input name = "emaila"
                           type = "text" id = "emaila" size = "30"></td>
                     </tr>
                     
                     <tr>
                        <td height = "20" valign = "bottom">Attach File:</td>
                     </tr>
                     
                     <tr valign = "bottom">
                        <td valign = "bottom"><input name = "filea" 
                           type = "file" id = "filea" size = "16"></td>
                     </tr>
                     
                     <tr>
                        <td height = "40" valign = "middle"><input 
                           name = "Reset2" type = "reset" id = "Reset2" value = "Reset">
                        <input name = "Submit2" type = "submit" 
                           value = "Submit" onClick = "return CheckData45()"></td>
                     </tr>
                  </table>
                  
               </form>
               
               <center>
                  <table width = "400">
                     
                     <tr>
                        <td id = "one">
                        </td>
                     </tr>
                     
                  </table>
               </center>
               
            </td>
         </tr>
      </table>
      
   </body>
</html>
در صورتی که سوال و یا نظری دارید، از بخش نظرات با ما در میان بگذارید.

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

شما چه نظر و یا سوالی درباره این نوشته دارید؟

مبحث آموزشی

آموزش PHP

Learn PHP

سرفصل ها

پرســیدن سؤال جدید

سؤال های تخصصی خود را از ما بپرسید

دنبال کردن تلگرام کانال سافت اسکیل

https://telegram.me/softskill_ir

عملیات کاربران

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

کلیک کنید و سوالات خود را از ما بپرسید
لطفا فرم سوال را پر کنید

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

لطفا چند لحظه منتظر بمانید ...