PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : Php ارسال ایمیل



uody
25th March 2011, 09:47 AM
Php ارسال ایمیل

برای ارسال ایمیل در PHP از تابع پیش فرض این زبان mail استفاده میشود


mail(string $to, string $subject, string $message, ******91;string $additional_headers******93;, ******91;string $additional_parameters******93;);

این تابع 5 ورودی دریافت میکند که 3 ورودی اول اصلی هستند.

To
این ورودی آدرس دریافت کننده ها را میگیرد که میتوان به چند صورت وارد کرد


user@example.com
user@example.com, anotheruser@example.com
User <user@example.com>
User <user@example.com>, Another User <anotheruser@example.com>

Subject
عنوان پیام را مشخص میکند. دقت داشته باشید که سیستم های شناسایی اسپم عناوین رو هم بررسی میکنند.

Message
پیام ایمیل. که میتواند به صورت متن یا HTML باشد.

Additional_Headers
این قسمت سربرگ های اضافه رو به سرویس دهنده ایمیل دریافت کننده ارسال میکند. سربرگهایی مانند Encoding، From, Cc, Bcc و غیره
توی این قسمت ایمیل خودتان را میتوانید وارد کنید.

* در صورتی که ایمیل ارسال کننده را در این بخش وارد نکرده باشید و همچنین ایمیل ارسال کننده در فایل تنظیمات php.ini وارد نشده باشد این تابع خطای "Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing" را بر میگرداند!!

مثال:


$head = "From: myemail@example.com\n"

مثال ارسال ایمیل ساده:


<?php

$from = "MySelf@example.com";
$to = "myfriend@example.com";
$message = "Hi, This Is A Test Message";
$subject = "Test Message";
$head = "From: $from\r\nReply-to: $from";
return @mail($to,$subject,$message,$head);

?>

ارسال ایمیل با پیکربندی HTML


<?php

$from = "mySelf@example.com";
$to = "myFriend@example.com";
$subject = "My Website";
$message = "
<html>
<body>
<h3>My Message</h3>
<br />
<font color=\"blue\">Hi My Friend</font>
<br />
Click Here And Visit My Website
<br />
<a href=\"http://www.mywebsite.com/?ref=mail&amp;mid=598\">MyWebSite.com</a>
<br />
My Website Logo ==> :D :D
<br />
<img src=\"http://www.mywebsite.com/images/logo.jpg?type=thumb\" />
</body>
</html>";
$head = "From: $from\r\nReply-to: $from\r\nContent-type: text/html; charset=utf-8";


همانطور که میبینید به head این قسمت نیز اضافه شده است Content-type: text/html که مشخص میکند پیکره متن شما از نوع متن (Text) و ابرمتن (HTML) میباشد که حاوی تگهای HTML شمال تصویر و پیوند و رنگبندی میباشد.

uody
25th March 2011, 05:38 PM
ارسال ایمیل به همراه فایل


<?php
$email_from = "amid@yahoo.com";
$email_subject = "Test";
$email_message = "Hiiiii This Is My Message";

$email_to = "envoy_of_viper@yahoo.com";

$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";


$headers = "From: ".$email_from;
$headers .= "\nMIME-Version: 1.0\n" .
"Content-Type: multipart/mixed;\n" .
" boundary=\"{$mime_boundary}\"";

$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_message . "\n\n";



$fileatt = "doc.pdf";
$fileatt_type = "application/pdf";
$fileatt_name = "doc.pdf";

$file = fopen($fileatt,'rb');
$data = fread($file,filesize($fileatt));
fclose($file);


$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";
unset($data);
unset($file);
unset($fileatt);
unset($fileatt_type);
unset($fileatt_name);


$ok = @mail($email_to, $email_subject, $email_message, $headers);

if($ok) {
echo "OK";
} else {
die("Failed");
}
?>

توضیحات:


$email_from = "amid@yahoo.com";
$email_subject = "Test";
$email_message = "My Message";
$email_to = "envoy_of_viper@yahoo.com";

این قسمت مشخصات ارسال کننده و دریافت کننده و متن پیام و عنوان پیام مشخص میشوند!
به ترتیب:
ایمیل ارسال کننده
موضوع پیام
متن پیام (میتواند حاوی کدهای HTML هم باشد)
ایمیل دریافت کننده


$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

برای مشخص کردن بخشهای ایمیل (متن مرکب، متن خالی، توضیحات، فایلهای پیوست) از MIME_BOUNDARY استفاده میشود که با یک عبارت خاص این بخش ها از مجزا میشوند!


$headers = "From: ".$email_from;
$headers .= "\nMIME-Version: 1.0\n" .
"Content-Type: multipart/mixed;\n" .
" boundary=\"{$mime_boundary}\"";

این قسمت مشخص میکنیم که ایمیل ما از چه نوع میباشد! multipart/mixed یعنی ایمیل چند تیکه که شامل فایل هم میباشد! اگر ایمیل شما حاوی فایل هم نباشد با وجود این بخش علامت Attach در کنار ایمیل شما قرار میگیرد!


$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_message . "\n\n";

آغازگر متن و محتوای ایمیل! مشخص کننده نحوه تبدیل کاراکتر!


$fileatt = "doc.pdf";
$fileatt_type = "application/pdf";
$fileatt_name = "doc.pdf";

$file = fopen($fileatt,'rb');
$data = fread($file,filesize($fileatt));
fclose($file);

این قسمت آدرس فایل مورد نظر وارد میشود و محتوای فایل خوانده شده و در متغیر data قرار میگیرد!
نوع فایل حتما باید مشخص شود application/pdf برای فایلهای PDF میباشد!


$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";

قرار دادن فایل در متن پیام و جدا کردن آن توسط mime_boundary
نوع تبدیل داده به فیال هم از نوع base64 میباشد


unset($data);
unset($file);
unset($fileatt);
unset($fileatt_type);
unset($fileatt_name);

خالی کردن متغیرها و آزاد کردن حافظه

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


$ok = @mail($email_to, $email_subject, $email_message, $headers);

منبع:forum.vatandownload.com

استفاده از تمامی مطالب سایت تنها با ذکر منبع آن به نام سایت علمی نخبگان جوان و ذکر آدرس سایت مجاز است

استفاده از نام و برند نخبگان جوان به هر نحو توسط سایر سایت ها ممنوع بوده و پیگرد قانونی دارد