برای ارسال ایمیل در php حتما باید فایل php.ini به درستی کانفیگ شده باشد . فایل php.ini را باز کنید و دنبال [mail function] بگردید.
کاربران ویندوزی باید مطمئن شود دو دستورالعمل به درستی وجود دارد. اولین نوع SMTP میباشد که ادرس ایمیل سرور را تعریف میکند و دومی sendmail_from نامیده میشود که ایمیل آدرس خودتان را تعریف میکند.
تنظیمات برای ویندوز باید به شکل زیر باشد :
[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 برای ارسال ایمیل استفاده میشود . این تابع سه آرگومان اجباری دارد که باید انها را تعریف کنیم :
ولی بغیر از سه آرگومان بالا دو آرگومان اختیاری هم وجود دارد . سینتکس ارسال ایمیل در php :
mail( to, subject, message, headers, parameters );
در زیر توضیحات تمام پارامترهای این تابع آورده شده است :
شماره | پارامتر و توضیحات آن |
1 | to اجباری است . ایمیل مقصد در این قسمت قرار میگیرد |
2 | subject اجباری است ، موضوع ایمیل را مشخص میکند و نمیتواند شامل هر گونه کاراکتر که باعث رفتن به خط جدید میشود ، باشد |
3 |
message |
4 | headers اختیاری است . هدرهای اضافی را شامل میشود مانند : From, Cc, و Bcc |
5 | parameters اختیاری است . پارامترهای اضافی را به برنامه های ارسال ایمیل میفرستد |
همانطور که در سینتکس بالا نحوه ی استفاده از تابع mail برای ارسال ایمیل گفته شد بعد ازارسال ایمیل اگر ارسال موفقیت آمیز باشد این تابع true برمیگرداند و اگر به هر دلیلی ایمیل ارسال نشود تابع بالا false برمیگرداند .
زمانی که شما یک متن ساده را بعنوان ایمیل ارسال میکنید زبان php آنرا بعنوان یک متن ساده بدون هیچ پردازشی در نظر میگیرد حتی شما وقتی تگ های html را درون این متن ساده قرار دهید کدهای html به همان صورت چاپ میشوند و رندر html روی تگ هایی که فرستادید انجام نمیگیرد . ولی php این امکان را به شما میدهد که تگ های html را همانطور ایمیل کنید که در مرورگر پردازش میشود و نتیجه نمایش داده میشود .
زمانی که شما یک ایمیل ارسال می کنید میتوانید Mime version, content type و character set سند 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>
برای ارسال ایمیل هایی که محتوای مختلفی مثل فایل دارند باید Content-type را multipart/mixed تعریف کنید .
سپس بخش متنی و بخش فایل ضمیمه ی ایمیل را میتوان در boundaries تعریف کرد .
یک boundary با دو هایفن یا خط تیره شروع میشود و سپس یک عدد منحصر به فرد دارد . از تابع md5 استفاده شده است تا یک عدد از نوع 32 digit hexadecimal تولید شود که یک عدد منحصر به فرد خواهد بود .
مثال زیر یک مثال کاملی برای ارسال یک ایمیل با فایل ضمیمه شده است :
<?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 mvc و یادگیری پروژه محور پی اچ پی را در نظر بگیرید.چون تا php mvc را یاد نگیرید به سختی میتوانید با فریمورک ها و سی ام اس های php کار کنید و همچنین آموزش های پروژه محور php باعث میشوند که در محیط یک پروژه ی واقعی قرار بگیرید و تجربه ی پیاده سازی یک پروژه ی کاملا عملی را کسب کنید. از دوره ی آموزش پی اچ پی استاد نیک زاد برای یادگیری ویدیویی پی اچ پی استفاده کنید.
اتمام درس
محصولات برگزیده مناسب شما
دوره ی آموزش ساخت فریمورک برای پی اچ پی با PHP MVC دوره ی آموزش کامل زبان پی اچ پی ( PHP ) دوره ی پروژه محور ساخت هتلداری با php mvc دوره پروژه محور ساخت فروشگاه بامیلو با لاراول