Posted by sarapeter on February 8, 2009
The last variation that we will consider is email with attachments. To send an email with attachment we need to use the multipart/mixed MIME type that specifies that mixed types will be included in the email. Moreover, we want to use multipart/alternative MIME type to send both plain-text and HTML version of the email. Have a look at the example:
<?php
$to = ‘youraddress@example.com’;
$subject = ‘Test email with attachment’;
$random_hash = md5(date(‘r’, time()));
$headers = “From: webmaster@example.com\r\nReply-To: webmaster@example.com”;
$headers .= “\r\nContent-Type: multipart/mixed; boundary=\”PHP-mixed-”.$random_hash.”\”";
$attachment = chunk_split(base64_encode(file_get_contents(‘attachment.zip’)));
ob_start();
?>
–PHP-mixed-<?php echo $random_hash; ?>
Content-Type: multipart/alternative; boundary=”PHP-alt-<?php echo $random_hash; ?>”
–PHP-alt-<?php echo $random_hash; ?>
Content-Type: text/plain; charset=”iso-8859-1″
Content-Transfer-Encoding: 7bit
Hello World!!!
This is simple text email message.
–PHP-alt-<?php echo $random_hash; ?>
Content-Type: text/html; charset=”iso-8859-1″
Content-Transfer-Encoding: 7bit
<h2>Hello World!</h2>
<p>This is something with <b>HTML</b> formatting.</p>
–PHP-alt-<?php echo $random_hash; ?>–
–PHP-mixed-<?php echo $random_hash; ?>
Content-Type: application/zip; name=”attachment.zip”
Content-Transfer-Encoding: base64
Content-Disposition: attachment
<?php echo $attachment; ?>
–PHP-mixed-<?php echo $random_hash; ?>–
<?php
$message = ob_get_clean();
$mail_sent = @mail( $to, $subject, $message, $headers );
echo $mail_sent ? “Mail sent” : “Mail failed”;
?>
As you can see, sending an email with attachment is easy to accomplish. In the preceding example we have multipart/mixed MIME type, and inside it we have multipart/alternative MIME type that specifies two versions of the email. To include an attachment to our message, we read the data from the specified file into a string, encode it with base64, split it in smaller chunks to make sure that it matches the MIME specifications and then include it as an attachment.
Posted in Php Codes | Tagged: Email with Attachment, Php Email | Leave a Comment »
Posted by sarapeter on February 8, 2009
The next step is to examine how to send HTML email. However, some mail clients cannot understand HTML emails. Therefore it is best to send any HTML email using a multipart construction, where one part contains a plain-text version of the email and the other part is HTML. If your customers have HTML email turned off, they will still get a nice email, even if they don’t get all of the HTML markup. Have a look at the example:
<?php
$to = ‘youraddress@example.com’;
$subject = ‘Test HTML email’;
$random_hash = md5(date(‘r’, time()));
$headers = “From: webmaster@example.com\r\nReply-To: webmaster@example.com”;
$headers .= ”\r\nContent-Type: multipart/alternative; boundary=\”PHP-alt-”.$random_hash.”\”";
ob_start(); //Turn on output buffering
?>
–PHP-alt-<?php echo $random_hash; ?>
Content-Type: text/plain; charset=”iso-8859-1″
Content-Transfer-Encoding: 7bit
Hello World!!!
This is simple text email message.
–PHP-alt-<?php echo $random_hash; ?>
Content-Type: text/html; charset=”iso-8859-1″
Content-Transfer-Encoding: 7bit
<h2>Hello World!</h2>
<p>This is something with <b>HTML</b> formatting.</p>
–PHP-alt-<?php echo $random_hash; ?>–
<?
$message = ob_get_clean();
$mail_sent = @mail( $to, $subject, $message, $headers );
echo $mail_sent ? “Mail sent” : “Mail failed”;
?>
In the preceding example we add one additional header of Content-type:multipart/alternative and boundary string that marks the different areas of the email. Note that the content type of the message itself is sent as a mail header, while the content types of the individual parts of the message are embedded in the message itself. This way, mail clients can decide which part of the message they want to display.
Posted in Php Codes | Tagged: HTML Email, Php Email | Leave a Comment »
Posted by sarapeter on February 8, 2009
At first let’s consider how to send a simple text email messages. PHP includes the mail() function for sending email, which takes three basic and two optional parameters. These parameters are, in order, the email address to send to, the subject of the email, the message to be sent, additional headers you want to include and finally an additional parameter to the Sendmail program. The mail() function returns True if the message is sent successfully and False otherwise. Have a look at the example:
<?php
$to = ‘youraddress@example.com’;
$subject = ‘Test email’;
$message = “Hello World!\n\nThis is my first mail.”;
$headers = “From: webmaster@example.com\r\nReply-To: webmaster@example.com”;
$mail_sent = @mail( $to, $subject, $message, $headers );
echo $mail_sent ? “Mail sent” : “Mail failed”;
?>
As you can see, it very easy to send an email. You can add more receivers by either adding their addresses, comma separated, to the $to variable, or by adding cc: or bcc: headers. If you don’t receive the test mail, you have probably installed PHP incorrectly, or may not have permission to send emails.
Posted in Php Codes | Tagged: PHP, Php Email, Simple Text Email | Leave a Comment »
Posted by sarapeter on July 29, 2008
<?Php
function check_email_address($email) {
// First, we check that there’s one @ symbol, and that the lengths are right
if (!ereg(“^[^@]{1,64}@[^@]{1,255}$”, $email)) {
// Email invalid because wrong number of characters in one section, or wrong number of @ symbols.
return false;
}
// Split it into sections to make life easier
$email_array = explode(“@”, $email);
$local_array = explode(“.”, $email_array[0]);
for ($i = 0; $i < sizeof($local_array); $i++) {
if (!ereg(“^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.-]{0,63})|(\”[^(\\|\")]{0,62}\”))$”, $local_array[$i])) {
return false;
}
}
if (!ereg(“^\[?[0-9\.]+\]?$”, $email_array[1])) { // Check if domain is IP. If not, it should be valid domain name
$domain_array = explode(“.”, $email_array[1]);
if (sizeof($domain_array) < 2) {
return false; // Not enough parts to domain
}
for ($i = 0; $i < sizeof($domain_array); $i++) {
if (!ereg(“^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$”, $domain_array[$i])) {
return false;
}
}
}
return true;
}
?>
Using the function above is relatively simple, as you can see:
<?Php
if (check_email_address($email)) {
echo $email . ‘ is a valid email address.’;
} else {
echo $email . ‘ is not a valid email address.’;
}
?>
Posted in Php Codes, Php Validators | Tagged: Email Address, Email Validator, Php Email | Leave a Comment »