آموزش ارسال ایمیل با استفاده از PHP
آموزش ارسال ایمیل با استفاده از PHP
در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش ارسال ایمیل با استفاده از PHP خواهیم پرداخت.
PHP باید به درستی در پرونده php.ini با جزئیات نحوه ارسال ایمیل توسط سیستم شما پیکربندی شود. فایل php.ini موجود در دایرکتوری / etc / را باز کرده و بخشی با عنوان [تابع ایمیل] را پیدا کنید.
کاربران ویندوز باید از ارائه دو دستورالعمل اطمینان حاصل کنند. اولی SMTP نام دارد که آدرس سرور ایمیل شما را مشخص می کند. مورد دوم sendmail_from نام دارد که آدرس ایمیل شما را مشخص می کند.
پیکربندی برای ویندوز باید مانند این باشد –
1 2 3 4 5 6 |
[mail function] ; For Win32 only. SMTP = smtp.secureserver.net ; For win32 only sendmail_from = webmaster@tutorialspoint.com |
کاربران لینوکس به سادگی باید PHP را از محل برنامه ارسال نامه خود مطلع کنند. مسیر و هر سوئیچ دلخواه باید به دستورالعمل sendmail_path مشخص شود.
پیکربندی برای Linux باید چیزی شبیه به این باشد –
1 2 3 4 5 6 7 8 9 |
[mail function] ; For Win32 only. SMTP = ; For win32 only sendmail_from = ; For Unix only sendmail_path = /usr/sbin/sendmail -t -i |
ارسال ایمیل متنی ساده
PHP برای ارسال ایمیل از تابع ()mail استفاده می کند. این تابع به سه آرگومان اجباری نیاز دارد که آدرس ایمیل گیرنده ، موضوع پیام و پیام واقعی را مشخص می کند و علاوه بر این دو پارامتر اختیاری دیگر نیز وجود دارد.
1 |
mail( to, subject, message, headers, parameters ); |
در اینجا توضیحات مربوط به هر پارامتر ارائه شده است.
پارامتر و توضیحات | |
---|---|
1 | to
ضروری. گیرنده / گیرنده های ایمیل را مشخص می کند |
2 | subject
ضروری. موضوع ایمیل را مشخص می کند. این پارامتر نمی تواند حاوی نویسه های خط جدید باشد |
3 | message
ضروری. پیام ارسال شده را مشخص می کند. هر خط باید با LF جدا شود (\ n). خطوط نباید بیش از 70 نویسه باشد |
4 | headers
اختیاری. سرصفحه های اضافی مانند From ، Cc و Bcc را مشخص می کند. عناوین اضافی باید با CRLF جدا شوند (\ r \ n) |
5 | parameters
اختیاری. یک پارامتر اضافی را برای برنامه ارسال نامه مشخص می کند |
به محض فراخوانی تابع ()PHP ،mail سعی در ارسال ایمیل دارد ، در صورت موفقیت یا غلط بودن ، در صورت عدم موفقیت ، درست برمی گردد.
چندین گیرنده را می توان به عنوان اولین آرگومان تابع ()mail در یک لیست جدا شده با ویرگول تعیین کرد.
ارسال ایمیل HTML
هنگامی که شما با استفاده از PHP یک پیام متنی ارسال می کنید، تمام مطالب به عنوان یک متن ساده در نظر گرفته می شوند. حتی اگر تگ های HTML را در یک پیام متنی قرار دهید ، به صورت متن ساده نمایش داده می شود و تگ های HTML مطابق نحو HTML قالب بندی نمی شوند. اما PHP گزینه ارسال پیام HTML به عنوان پیام HTML واقعی را فراهم می کند.
هنگام ارسال پیام ایمیل می توانید نسخه Mime، نوع محتوا و مجموعه کاراکترها را برای ارسال ایمیل HTML مشخص کنید.
مثال
مثال زیر یک پیام ایمیل HTML به xyz@somedomain.com ارسال می کند و آن را در afgh@somedomain.com کپی می کند. می توانید این برنامه را به گونه ای کدگذاری کنید که تمام مطالب را از کاربر دریافت کند و سپس ایمیل ارسال کند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<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 برای ایجاد یک عدد هگزادسیمال 32 رقمی برای ایجاد عدد منحصر به فرد استفاده می شود. مرز نهایی که نشان دهنده قسمت نهایی ایمیل است نیز باید با دو خط خاتمه یابد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
<?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
- آموزش PHP
- معرفی PHP
- آموزش تنظیمات محیط PHP
- آموزش نحو PHP
- آموزش انواع متغیر در PHP
- آموزش انواع ثابت ها در PHP
- آموزش انواع عملگرها در PHP
- آموزش تصمیم گیری در PHP
- آموزش انواع حلقه در PHP
- آموزش آرایه ها در PHP
- آموزش رشته ها در PHP
- آموزش مفاهیم وب در PHP
- آموزش روش های GET & POST در PHP
- آموزش Inclusion فایل در PHP
- آموزش پرونده ها و I / O در PHP
- آموزش توابع در PHP
- آموزش کوکی ها در PHP
- آموزش جلسات در PHP
دیدگاه شما