PHP must be configured correctly in the
php.ini file with the details of how your system sends email. Open php.ini file available in
/etc/ directory and find the section headed
[mail function].
Windows users should ensure that two directives are supplied. The
first is called SMTP that defines your email server address. The second
is called sendmail_from which defines your own email address.
The configuration for Windows should look something like this:
[mail function]
; For Win32 only.
SMTP = smtp.secureserver.net
; For win32 only
sendmail_from = webmaster@tutorialspoint.com
|
Linux users simply need to let PHP know the location of their
sendmail application. The path and any desired switches should be specified to the sendmail_path directive.
The configuration for Linux should look something like this:
[mail function]
; For Win32 only.
SMTP =
; For win32 only
sendmail_from =
; For Unix only
sendmail_path = /usr/sbin/sendmail -t -i
|
Now you are ready to go:
Sending plain text email:
PHP makes use of
mail() function to send an email. This
function requires three mandatory arguments that specify the
recipient's email address, the subject of the the message and the
actual message additionally there are other two optional parameters.
mail( to, subject, message, headers, parameters );
|
Here is the description for each parameters.
Parameter |
Description |
to |
Required. Specifies the receiver / receivers of the email |
subject |
Required. Specifies
the subject of the email. This parameter cannot contain any newline characters |
message |
Required. Defines the message to be sent. Each line should
be separated with a LF (\n). Lines should not exceed 70 characters |
headers |
Optional. Specifies additional headers, like From, Cc, and
Bcc. The additional headers should be separated with a CRLF (\r\n) |
parameters |
Optional. Specifies an additional parameter to the sendmail program |
As soon as the mail function is called PHP will attempt to send the
email then it will return true if successful or false if it is failed.
Multiple recipients can be specified as the first argument to the mail() function in a comma separated list.
Example:
Following example will send an HTML email message to
xyz@somedomain.com. You can code this program in such a way that it
should receive all content from the user and then it should send an
email.
<html>
<head>
<title>Sending email using PHP</title>
</head>
<body>
<?php
$to = "xyz@somedomain.com";
$subject = "This is subject";
$message = "This is simple text message.";
$header = "From:abc@somedomain.com \r\n";
$retval = mail ($to,$subject,$message,$header);
if( $retval == true )
{
echo "Message sent successfully...";
}
else
{
echo "Message could not be sent...";
}
?>
</body>
</html>
|
Sending HTML email:
When you send a text message using PHP then all the content will be
treated as simple text. Even if you will include HTML tags in a text
message, it will be displayed as simple text and HTML tags will not be
formatted according to HTML syntax. But PHP provides option to send an
HTML message as actual HTML message.
While sending an email message you can specify a Mime version, content type and character set to send an HTML email.
Example:
Following example will send an HTML email message to
xyz@somedomain.com copying it to afgh@somedomain.com. You can code this
program in such a way that it should recieve all content from the user
and then it should send an 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>
|
Sending attachments with email:
To send an email with mixed content requires to set
Content-type header to
multipart/mixed. Then text and attachment sections can be specified within
boundaries.
A boundary is started with two hyphens followed by a unique number
which can not appear in the message part of the email. A PHP function
md5()
is used to create a 32 digit hexadecimal number to create unique
number. A final boundary denoting the email's final section must also
end with two hyphens.
Attached files should be encoded with the
base64_encode() function for safer transmission and are best split into chunks with the
chunk_split() function. This adds
\r\n inside the file at regular intervals, normally every 76 characters.
Following is the example which will send a file
/tmp/test.txt as an attachment. you can code your program to receive an uploaded file and send it.
<html>
<head>
<title>Sending attachment using PHP</title>
</head>
<body>
<?php
$to = "xyz@somedomain.com";
$subject = "This is subject";
$message = "This is test message.";
# Open a file
$file = fopen( "/tmp/test.txt", "r" );
if( $file == false )
{
echo "Error in opening file";
exit();
}
# Read the file into a variable
$size = filesize("/tmp/test.txt");
$content = fread( $file, $size);
# encode the data for safe transit
# and insert \r\n after every 76 chars.
$encoded_content = chunk_split( base64_encode($content));
# Get a random 32 bit number using time() as seed.
$num = md5( time() );
# Define the main headers.
$header = "From:xyz@somedomain.com\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; ";
$header .= "boundary=$num\r\n";
$header .= "--$num\r\n";
# Define the message section
$header .= "Content-Type: text/plain\r\n";
$header .= "Content-Transfer-Encoding:8bit\r\n\n";
$header .= "$message\r\n";
$header .= "--$num\r\n";
# Define the attachment section
$header .= "Content-Type: multipart/mixed; ";
$header .= "name=\"test.txt\"\r\n";
$header .= "Content-Transfer-Encoding:base64\r\n";
$header .= "Content-Disposition:attachment; ";
$header .= "filename=\"test.txt\"\r\n\n";
$header .= "$encoded_content\r\n";
$header .= "--$num--";
# Send email now
$retval = mail ( $to, $subject, "", $header );
if( $retval == true )
{
echo "Message sent successfully...";
}
else
{
echo "Message could not be sent...";
}
?>
</body>
</html>
|
You try all the above examples. If you face any problem then you can post that problem in discussion forum.
A PHP script can be used with a HTML form to allow users to upload
files to the server. Initially files are uploaded into a temporary
directory and then relocated to a target destination by a PHP script.
Information in the
phpinfo.php page describes the temporary directory that is used for file uploads as
upload_tmp_dir and the maximum permitted size of files that can be uploaded is stated as
upload_max_filesize. These parameters are set into PHP configuration file
php.ini
The process of uploading a file follows these steps
- The user opens the page containing a HTML form featuring a text files, a browse button and a submit button.
- The user clicks the browse button and selects a file to upload from the local PC.
- The full path to the selected file appears in the text filed then the user clicks the submit button.
- The selected file is sent to the temporary directory on the server.
- The PHP script that was specified as the form handler in the
form's action attribute checks that the file has arrived and then
copies the file into an intended directory.
- The PHP script confirms the success to the user.
As usual when writing files it is necessary for both temporary and
final locations to have permissions set that enable file writing. If
either is set to be read-only then process will fail.
An uploaded file could be a text file or image file or any document.
Creating an upload form:
The following HTM code below creates an uploader form. This form is having method attribute set to
post and enctype attribute is set to
multipart/form-data
<html>
<head>
<title>File Uploading Form</title>
</head>
<body>
<h3>File Upload:</h3>
Select a file to upload: <br />
<form action="/php/file_uploader.php" method="post"
enctype="multipart/form-data">
<input type="file" name="file" size="50" />
<br />
<input type="submit" value="Upload File" />
</form>
</body>
</html>
|
This will display following result:
Creating an upload script:
There is one global PHP variable called
$_FILES. This
variable is an associate double dimension array and keeps all the
information related to uploaded file. So if the value assigned to the
input's name attribute in uploading form was
file, then PHP would create following five variables:
- $_FILES['file']['tmp_name']- the uploaded file in the temporary directory on the web server.
- $_FILES['file']['name'] - the actual name of the uploaded file.
- $_FILES['file']['size'] - the size in bytes of the uploaded file.
- $_FILES['file']['type'] - the MIME type of the uploaded file.
- $_FILES['file']['error'] - the error code associated with this file upload.
The following example below attempts to copy a file uploaded by the HTML Form listed in previous section page to
/var/www/html directory which is
document root
of your PHP server and it will display all the file's detail upon
completion. Please note that if you are going to display uploaded file
then don't try with binary files like images or word document.
Here is the code of
uploader.php script which will take care of uploading a file.
<?php
if( $_FILES['file']['name'] != "" )
{
copy( $_FILES['file']['name'], "/var/www/html" ) or
die( "Could not copy file!");
}
else
{
die("No file specified!");
}
?>
<html>
<head>
<title>Uploading Complete</title>
</head>
<body>
<h2>Uploaded File Info:</h2>
<ul>
<li>Sent file: <?php echo $_FILES['file']['name']; ?>
<li>File size: <?php echo $_FILES['file']['size']; ?> bytes
<li>File type: <?php echo $_FILES['file']['type']; ?>
</ul>
</body>
</html>
|
When you will upload a file using upload form and upload script, it will display following result:
Uploaded File Info:
- Sent file: uploadedfile.txt
- File size: 2003 bytes
- File type: image/jpg
|
You try out above example yourself on your webserver. If you have
any problem then post it to Discussion Forums to get any further help.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
No comments:
Post a Comment