PHP Sending
Emails using PHP
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 sendmailapplication.
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.
Sr.No |
Parameter & Description |
1 |
to Required. Specifies the receiver / receivers of
the email |
2 |
subject Required. Specifies the subject of the email.
This parameter cannot contain any newline characters |
3 |
message Required. Defines the message to be sent. Each
line should be separated with a LF (\n). Lines should not exceed 70
characters |
4 |
headers Optional. Specifies additional headers, like
From, Cc, and Bcc. The additional headers should be separated with a CRLF
(\r\n) |
5 |
parameters Optional. Specifies an additional parameter to
the send mail 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.
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 receive 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
tomultipart/mixed. Then text and
attachment sections can be specified withinboundaries.
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.
<?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>