PHP phải được định cấu hình chính xác trong php.ini gửi thông tin chi tiết về cách hệ thống của bạn gửi email. Mở tệp php.ini có sẵn trong /vân vân/ thư mục và tìm phần đứng đầu [mail function].
Người dùng Windows nên đảm bảo rằng hai chỉ thị được cung cấp. Đầu tiên được gọi là SMTP xác định địa chỉ máy chủ email của bạn. Thứ hai được gọi là sendmail_from xác định địa chỉ email của riêng bạn.
Cấu hình cho Windows sẽ trông giống như thế này –
[mail function] ; For Win32 only. SMTP = smtp.secureserver.net ; For win32 only sendmail_from = webmaster@PHP
Người dùng Linux chỉ cần cho PHP biết vị trí của gửi thư đăng kí. Đường dẫn và bất kỳ công tắc mong muốn nào phải được chỉ định cho chỉ thị sendmail_path.
Cấu hình cho Linux sẽ trông giống như thế này –
[mail function] ; For Win32 only. SMTP = ; For win32 only sendmail_from = ; For Unix only sendmail_path = /usr/sbin/sendmail -t -i
Bây giờ bạn đã sẵn sàng –
Gửi email văn bản thuần túy
Mục lục
PHP sử dụng thư() chức năng gửi email. Hàm này yêu cầu ba đối số bắt buộc chỉ định địa chỉ email của người nhận, chủ đề của thư và thư thực tế, ngoài ra còn có hai tham số tùy chọn khác.
mail( to, subject, message, headers, parameters );
Đây là mô tả cho từng tham số.
| Sr.No | Mô tả về Thông Số |
|---|---|
| 1 |
đến Yêu cầu. Chỉ định người nhận / người nhận email |
| 2 |
môn học Yêu cầu. Chỉ định chủ đề của email. Tham số này không được chứa bất kỳ ký tự dòng mới nào |
| 3 |
thông điệp Yêu cầu. Xác định tin nhắn sẽ được gửi. Mỗi dòng phải được phân tách bằng LF (\ n). Các dòng không được vượt quá 70 ký tự |
| 4 |
tiêu đề Không bắt buộc. Chỉ định các tiêu đề bổ sung, như Từ, Cc và Bcc. Các tiêu đề bổ sung phải được phân tách bằng CRLF (\ r \ n) |
| 5 |
thông số Không bắt buộc. Chỉ định một tham số bổ sung cho chương trình gửi thư |
Ngay sau khi hàm mail được gọi, PHP sẽ cố gắng gửi email sau đó nó sẽ trả về true nếu thành công hoặc false nếu không thành công.
Nhiều người nhận có thể được chỉ định làm đối số đầu tiên cho hàm mail () trong danh sách được phân tách bằng dấu phẩy.
Gửi email HTML
Khi bạn gửi một tin nhắn văn bản bằng PHP thì tất cả nội dung sẽ được coi là văn bản đơn giản. Ngay cả khi bạn bao gồm các thẻ HTML trong một tin nhắn văn bản, nó sẽ được hiển thị dưới dạng văn bản đơn giản và các thẻ HTML sẽ không được định dạng theo cú pháp HTML. Nhưng PHP cung cấp tùy chọn để gửi một tin nhắn HTML dưới dạng tin nhắn HTML thực tế.
Trong khi gửi email, bạn có thể chỉ định phiên bản Mime, loại nội dung và bộ ký tự để gửi email HTML.
Thí dụ
Ví dụ sau sẽ gửi một email HTML tới xyz@somedomain.com, sao chép nó vào afgh@somedomain.com. Bạn có thể viết mã chương trình này theo cách mà nó sẽ nhận được tất cả nội dung từ người dùng và sau đó nó sẽ gửi một email.
<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>
Gửi tệp đính kèm bằng email
Để gửi một email có nội dung hỗn hợp, yêu cầu đặt Loại nội dung tiêu đề tới nhiều phần / hỗn hợp. Sau đó, các phần văn bản và phần đính kèm có thể được chỉ định trong ranh giới.
Ranh giới được bắt đầu bằng hai dấu gạch nối theo sau là một số duy nhất không thể xuất hiện trong phần thư của email. Một hàm PHP md5 () được sử dụng để tạo một số thập lục phân gồm 32 chữ số để tạo số duy nhất. Ranh giới cuối cùng biểu thị phần cuối cùng của email cũng phải kết thúc bằng hai dấu gạch nối.
<?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>

