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

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

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

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

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

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

پیکربندی برای ویندوز باید مانند این باشد –

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

; For win32 only
sendmail_from = webmaster@tutorialspoint.com

 

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

پیکربندی برای Linux باید چیزی شبیه به این باشد –

[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

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

۳ message

ضروری. پیام ارسال شده را مشخص می کند. هر خط باید با LF جدا شود (\ n). خطوط نباید بیش از ۷۰ نویسه باشد

۴ headers

اختیاری. سرصفحه های اضافی مانند From ، Cc و Bcc را مشخص می کند. عناوین اضافی باید با CRLF جدا شوند (\ r \ n)

۵ parameters

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

 

 

به محض فراخوانی تابع ()PHP ،mail  سعی در ارسال ایمیل دارد ، در صورت موفقیت یا غلط بودن ، در صورت عدم موفقیت ، درست برمی گردد.

چندین گیرنده را می توان به عنوان اولین آرگومان تابع ()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 \r\n";
         $header .= "Cc:afgh@somedomain.com \r\n";
         $header .= "MIME-Version: 1.0\r\n";
         $header .= "Content-type: text/html\r\n";
         
         $retval = mail ($to,$subject,$message,$header);
         
         if( $retval == true ) {
            echo "Message sent successfully...";
         }else {
            echo "Message could not be sent...";
         }
      ?>
      
   </body>
</html>

 

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

برای ارسال ایمیل با محتوای مخلوط نیاز به تنظیم سرصفحه نوع محتوا در multipart / mixed است. سپس بخشهای متنی و پیوست را می توان در محدوده مشخص کرد.

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

<?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="\n\n 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.0\n" . "Content-Type: multipart/mixed;\n" . "
            boundary=\"{$mime_boundary}\"";
         
         $email_txt .= $msg_txt;
            
         $email_message .= "This is a multi-part message in MIME format.\n\n" . 
            "--{$mime_boundary}\n" . "Content-Type:text/html; 
            charset = \"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . 
            $email_txt . "\n\n";
                
         $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: 
            base64\n\n" . $data . "\n\n" . "--{$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>

 

منبع.

 

 

لیست جلسات قبل آموزش PHP

  1. آموزش PHP
  2. معرفی PHP
  3. آموزش تنظیمات محیط PHP
  4. آموزش نحو PHP
  5. آموزش انواع متغیر در PHP
  6. آموزش انواع ثابت ها در PHP
  7. آموزش انواع عملگرها در PHP
  8. آموزش تصمیم گیری در PHP
  9. آموزش انواع حلقه در PHP
  10. آموزش آرایه ها در PHP
  11. آموزش رشته ها در PHP
  12. آموزش مفاهیم وب در PHP
  13. آموزش روش های  GET & POST در PHP
  14. آموزش Inclusion فایل در PHP
  15. آموزش پرونده ها و I / O در PHP
  16. آموزش توابع در PHP
  17. آموزش کوکی ها در PHP
  18. آموزش جلسات در PHP
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه