Sending Emails with ASP and PHP


Hi,
I think many of new web developers come around a situation where they have to send emails (like registration emails of password-user name emails or newsletters) from their developed sites.
And I had also come around such situations where I had to send mails from PHP or ASP scripts. I found some useful resources and I have tested some of they successfully and also made some modifications to use them correctly. I will give some of them here. Hope it will help us to know the scripting power better.

Sending mails with ASP (CDOSYS):

CDO (Collaboration Data Objects) is a Microsoft technology that is designed to simplify the creation of messaging applications.

CDOSYS is a built-in component in ASP. We will show you how to use this component to send e-mail with ASP.

Sending a text e-mail:

<%
Set myMail=CreateObject(“CDO.Message”)
myMail.Subject=”Sending email with CDO”
myMail.From=”mymail@mydomain.com
myMail.To=”someone@somedomain.com
myMail.TextBody=”This is a message.”
myMail.Send
set myMail=nothing
%>

Sending a text e-mail with Bcc and CC fields:

<%
Set myMail=CreateObject(“CDO.Message”)
myMail.Subject=”Sending email with CDO”
myMail.From=”mymail@mydomain.com
myMail.To=”someone@somedomain.com
myMail.Bcc=”someoneelse@somedomain.com
myMail.Cc=”someoneelse2@somedomain.com
myMail.TextBody=”This is a message.”
myMail.Send
set myMail=nothing
%>

Sending an HTML e-mail:

<%
Set myMail=CreateObject(“CDO.Message”)
myMail.Subject=”Sending email with CDO”
myMail.From=”mymail@mydomain.com
myMail.To=”someone@somedomain.com
myMail.HTMLBody = “<h1>This is a message.</h1>”
myMail.Send
set myMail=nothing
%>

Sending an HTML e-mail that sends a webpage from a website:

<%
Set myMail=CreateObject(“CDO.Message”)
myMail.Subject=”Sending email with CDO”
myMail.From=”mymail@mydomain.com
myMail.To=”someone@somedomain.com
myMail.CreateMHTMLBody “http://www.w3schools.com/asp/
myMail.Send
set myMail=nothing
%>

Sending an HTML e-mail that sends a webpage from a file on your computer:

<%
Set myMail=CreateObject(“CDO.Message”)
myMail.Subject=”Sending email with CDO”
myMail.From=”mymail@mydomain.com
myMail.To=”someone@somedomain.com
myMail.CreateMHTMLBody “file://c:/mydocuments/test.htm
myMail.Send
set myMail=nothing
%>

Sending a text e-mail with an Attachment:

<%
Set myMail=CreateObject(“CDO.Message”)
myMail.Subject=”Sending email with CDO”
myMail.From=”mymail@mydomain.com
myMail.To=”someone@somedomain.com
myMail.TextBody=”This is a message.”
myMail.AddAttachment “c:\mydocuments\test.txt”
myMail.Send
set myMail=nothing
%>

Sending a text e-mail using a remote server:

<%
Set myMail=CreateObject(“CDO.Message”)
myMail.Subject=”Sending email with CDO”
myMail.From=”mymail@mydomain.com
myMail.To=”someone@somedomain.com
myMail.TextBody=”This is a message.”
myMail.Configuration.Fields.Item _
(“http://schemas.microsoft.com/cdo/configuration/sendusing&#8221;)=2
‘Name or IP of remote SMTP server
myMail.Configuration.Fields.Item _
(“http://schemas.microsoft.com/cdo/configuration/smtpserver“) _
=”smtp.server.com”
‘Server port
myMail.Configuration.Fields.Item _
(“http://schemas.microsoft.com/cdo/configuration/smtpserverport“) _
=25
myMail.Configuration.Fields.Update
myMail.Send
set myMail=nothing
%>

Sending mails with SMTP Authentication:

<%

Const cdoSendUsingPickup = 1 ‘Send message using the local SMTP service pickup directory.
Const cdoSendUsingPort = 2 ‘Send the message using the network (SMTP over the network).

Const cdoAnonymous = 0 ‘Do not authenticate
Const cdoBasic = 1 ‘basic (clear-text) authentication
Const cdoNTLM = 2 ‘NTLM

Set objMessage = Server.CreateObject(“CDO.Message”)
objMessage.Subject = “Example CDO Message”
objMessage.Sender = “me@mydomain.com
objMessage.From = “me@mydomain.com
objMessage.To = “recipient@test.com
objMessage.TextBody = “This is some sample message text..” & vbCRLF & “It was sent using SMTP authentication.”

‘==This section provides the configuration information for the remote SMTP server.

objMessage.Configuration.Fields.Item _
(“http://schemas.microsoft.com/cdo/configuration/sendusing“) = 2

‘Name or IP of Remote SMTP Server
objMessage.Configuration.Fields.Item _
(“http://schemas.microsoft.com/cdo/configuration/smtpserver“) = “mail.your.com

‘Type of authentication, NONE, Basic (Base64 encoded), NTLM
objMessage.Configuration.Fields.Item _
(“http://schemas.microsoft.com/cdo/configuration/smtpauthenticate“) = cdoBasic

‘Your UserID on the SMTP server
objMessage.Configuration.Fields.Item _
(“http://schemas.microsoft.com/cdo/configuration/sendusername“) = “youruserid

‘Your password on the SMTP server
objMessage.Configuration.Fields.Item _
(“http://schemas.microsoft.com/cdo/configuration/sendpassword“) = “yourpassword

‘Server port (typically 25)
objMessage.Configuration.Fields.Item _
(“http://schemas.microsoft.com/cdo/configuration/smtpserverport“) = 25

‘Use SSL for the connection (False or True)
objMessage.Configuration.Fields.Item _
(“http://schemas.microsoft.com/cdo/configuration/smtpusessl“) = False

‘Connection Timeout in seconds (the maximum time CDO will try to establish a connection to the SMTP server)
objMessage.Configuration.Fields.Item _
(“http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout“) = 60

objMessage.Configuration.Fields.Update
objMessage.Send

%> 

Note :
Change the SMTP Server with your mail.yourdomain.com
Username –> Change with your email account in this format (email@domain.com).
Password-> Your email password.

Sending Emails with CDONTS:

Using CDONTS to send a text based email message.

<%
    Dim MyBody
    Dim MyCDONTSMail

    Set MyCDONTSMail = CreateObject(“CDONTS.NewMail”)
    MyCDONTSMail.From= “somebody@nowhere.com
    MyCDONTSMail.To= “nobody@nowhere.com
    MyCDONTSMail.Subject=”This is a Test”
    MyBody = “Thank you for ordering that stuff” & vbCrLf
    MyBody = MyBody & “We appreciate your business” & vbCrLf
    MyBody = MyBody & “Your stuff will arrive within 7 business days”
    MyCDONTSMail.Body= MyBody
    MyCDONTSMail.Send
    set MyCDONTSMail=nothing
%>

Using CDONTS to send a HTML based email message.

You’ll get the general idea..notice how you have to add extra double quotes inside the HTML. You can use any valid HTML. Just make sure you link the images back to your webserver so that the recipient doesn’t get a broken image. If the recipient’s email program doesn’t support HTML this is not always a good way to send email, but most do in my experience and if they don’t they will still get the message… it will just look kinda strange.

<%
    Dim MyCDONTSMail2
    Dim HTML
    Set MyCDONTSMail2 = CreateObject(“CDONTS.NewMail”)
    HTML = “<!DOCTYPE HTML PUBLIC””-//IETF//DTD HTML//EN””>”
    HTML = HTML & “<html>”
    HTML = HTML & “<head>”
    HTML = HTML & “<title>Sending CDONTS Email Using HTML</title>”
    HTML = HTML & “</head>”
    HTML = HTML & “<body bgcolor=””FFFFFF””>”
    HTML = HTML & “<p><font size =””3″” face=””Arial””><strong>”
    HTML = HTML & “Name Of Store</strong><br>”
    HTML = HTML & “Incoming Customer Order</strong></p>”
    HTML = HTML & “<p align = “”center””>Bla Bla Bla Bla Bla</p>”
    HTML = HTML & “</body>”
    HTML = HTML & “</html>”
    MyCDONTSMail2.From= “somebody@somewhere.com
    MyCDONTSMail2.To=”nobody@somewhere.com
    MyCDONTSMail2.Subject=”Incoming Customer Order”
    MyCDONTSMail2.BodyFormat=0
    MyCDONTSMail2.MailFormat=0
    MyCDONTSMail2.Body=HTML
    MyCDONTSMail2.Send
    set MyCDONTSMail2=nothing
%>

Using CDONTS to send a file attachment and have a Carbon Copy Recipient.

<%
    Dim MyBody2
    Dim MyCDONTSMail3

    Set MyCDONTSMail3 = CreateObject(“CDONTS.NewMail”)
    MyCDONTSMail3.From= “somebody@nowhere.com
    MyCDONTSMail3.To= “nobody@nowhere.com
    MyCDONTSMail3.Cc=”nobody2@nowhere.com
    MyCDONTSMail3.Subject=”This is a Test”
   
    MyCDONTSMail3.AttachFile Server.MapPath(“/somedirectory/bla.txt”)
    ‘ or you could specify the path exactly if you knew it like below
    ‘MyCDONTSMail3.AttachFile (“C:\inetpub\wwwroot\somedirectory\bla.txt”)
    
    MyBody2 = “Thank you for ordering that stuff” & vbCrLf
    MyBody2 = MyBody2 & “We appreciate your business” & vbCrLf
    MyBody2 = MyBody2 & “Your stuff will arrive within 7 business days”
    MyCDONTSMail3.Body= MyBody2
    MyCDONTSMail3.Send
    set MyCDONTSMail3=nothing
%>

When sending an attachment this is just a very simple example. There are certain encoding options and file type settings that you may also want to set.
 

Sending Email With PHP:

The PHP mail() Function
The PHP mail() function is used to send emails from inside a script.

Syntax: mail(to,subject,message,headers,parameters)

Parameter Description
to Required. Specifies the receiver / receivers of the email
subject Required. Specifies the subject of the email.
Note: 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

Note: For the mail functions to be available, PHP requires an installed and working email system. The program to be used is defined by the configuration settings in the php.ini file.
——————————————————————————–

PHP Simple E-Mail
The simplest way to send an email with PHP is to send a text email.

In the example below we first declare the variables ($to, $subject, $message, $from, $headers), then we use the variables in the mail() function to send an e-mail:

<?php
$to = “someone@example.com“;
$subject = “Test mail”;
$message = “Hello! This is a simple email message.”;
$from = “someonelse@example.com“;
$headers = “From: $from”;
mail($to,$subject,$message,$headers);
echo “Mail Sent.”;
?>
——————————————————————————–

PHP Mail Form:
With PHP, you can create a feedback-form on your website. The example below sends a text message to a specified e-mail address:

<html>
<body><?php
if (isset($_REQUEST[’email’]))
//if “email” is filled out, send email
  {
  //send email
  $email = $_REQUEST[’email’] ;
  $subject = $_REQUEST[‘subject’] ;
  $message = $_REQUEST[‘message’] ;
  mail( “someone@example.com“, “Subject: $subject”,
  $message, “From: $email” );
  echo “Thank you for using our mail form”;
  }
else
//if “email” is not filled out, display the form
  {
  echo “<form method=’post’ action=’mailform.php’>
  Email: <input name=’email’ type=’text’ /><br />
  Subject: <input name=’subject’ type=’text’ /><br />
  Message:<br />
  <textarea name=’message’ rows=’15’ cols=’40’>
  </textarea><br />
  <input type=’submit’ />
  </form>”;
  }
?></body>
</html>

  • This is how the example above works:
    First, check if the email input field is filled out
    If it is not set (like when the page is first visited); output the HTML form
    If it is set (after the form is filled out); send the email from the form
    When submit is pressed after the form is filled out, the page reloads, sees that the email input is set, and sends the email

Sending mails with Attachment : (with attachment size limit checking)

<?php
   include “../../common/error.php”;
   if ($_SERVER[‘REQUEST_METHOD’]==”POST”){
   $to=$_POST[‘to’];
   $subject=$_POST[‘subject’];
   $from = stripslashes($_POST[‘fromname’]).”<“.stripslashes($_POST[‘fromemail’]).”>”;
  

   // generate a random string to be used as the boundary marker
   $mime_boundary=”==Multipart_Boundary_x”.md5(mt_rand()).”x”;

   // store the file information to variables for easier access
   $tmp_name = $_FILES[‘filename’][‘tmp_name’];
   $type = $_FILES[‘filename’][‘type’];
   $name = $_FILES[‘filename’][‘name’];
   $size = $_FILES[‘filename’][‘size’];
/**********************************************************/
echo “Size=”.$size;
if($size>122880)
  {
  echo “Attachment Size Exceeds 1MB Limit”;
  echo “<br><a href=send_mail.php>try Again</a>”;
   exit();
  }
/**********************************************************/
   // here we’ll hard code a text message
   // again, in reality, you’ll normally get this from the form submission
   $message = “Note File Attached: $name \n”.$_POST[‘message’];
/***************************************************/
   if($_FILES[‘filename’][‘tmp_name’]==””)
   {
    echo “No files attached”;
    $message =$_POST[‘message’];
 $headers.=”MIME-Version: 1.0\r\n”;
 $headers.=”Content-type: text/html;”.”charset=iso-8859-1\r\n”;
 $headers.=”From:”.$from.”\r\n”;

 if (mail($to, $subject, $message, $headers))
         {
  
   }
      else
    {
         echo “Failed to send”;
         echo “<br><a href=send_mail.php>try Again</a>”;
    } 
 
 
   } 
/**************************************************/  

   // if the upload succeded, the file will exist
   if (file_exists($tmp_name)){

      // check to make sure that it is an uploaded file and not a system file
      if(is_uploaded_file($tmp_name)){

         // open the file for a binary read
         $file = fopen($tmp_name,’rb’);

         // read the file content into a variable
         $data = fread($file,filesize($tmp_name));

         // close the file
         fclose($file);

         // now we encode it and split it into acceptable length lines
         $data = chunk_split(base64_encode($data));
     }

      // now we’ll build the message headers
      $headers = “From: $from\r\n” .
         “MIME-Version: 1.0\r\n” .
         “Content-Type: multipart/mixed;\r\n” .
         ” boundary=\”{$mime_boundary}\””;

      // next, we’ll build the message body
      // note that we insert two dashes in front of the
      // MIME boundary when we use it
      $message = “This is a multi-part message in MIME format.\n\n” .
         “–{$mime_boundary}\n” .
         “Content-Type: text/plain; charset=\”iso-8859-1\”\n” .
         “Content-Transfer-Encoding: 7bit\n\n” .
         $message . “\n\n”;

      // now we’ll insert a boundary to indicate we’re starting the attachment
      // we have to specify the content type, file name, and disposition as
      // an attachment, then add the file content and set another boundary to
      // indicate that the end of the file has been reached
      $message .= “–{$mime_boundary}\n” .
         “Content-Type: {$type};\n” .
         ” name=\”{$name}\”\n” .
         //”Content-Disposition: attachment;\n” .
         //” filename=\”{$fileatt_name}\”\n” .
         “Content-Transfer-Encoding: base64\n\n” .
         $data . “\n\n” .
         “–{$mime_boundary}–\n”;

      // now we just send the message
      if (@mail($to, $subject, $message, $headers))
         {
     
   }
      else
    {
         echo “Failed to send”;
         echo “<br><a href=send_mail.php>try Again</a>”;
      } 
   }
} else {
?>
<html>
<head>
<title>Send E-mail with Attchment</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″>
<style type=”text/css”>
<!–
body {
 margin-left: 0px;
 margin-top: 0px;
 margin-right: 0px;
 margin-bottom: 0px;
}
–>
</style>
<script language=”javascript” type=”text/javascript”>

function CheckFields()
 {
  //——-E-Mail Check———–
   if(!document.form1.to.value.length)
    {
    alert(“To E-Mail Address can’t be left blank”);
    document.form1.to.focus();
    return false;
 }
  if (document.form1.to.value.indexOf(‘@’) == -1) {
    alert(“Error in To E-mail address”);
    document.form1.to.focus();
    return false;
 }
 if (document.form1.to.value.indexOf(‘.’) == -1) {
    alert(“Error in To E-mail address”);
    document.form1.to.focus();
    return false;
 }

  if(!document.form1.fromname.value.length)
    {
    alert(“Your Name can’t be left blank”);
    document.form1.fromname.focus();
    return false;
 }

  if(!document.form1.fromemail.value.length)
    {
    alert(“Your E-Mail Address can’t be left blank”);
    document.form1.fromemail.focus();
    return false;
 }
if (document.form1.fromemail.value.indexOf(‘@’) == -1) {
    alert(“Error in From E-mail address”);
    document.form1.fromemail.focus();
    return false;
 }
 if (document.form1.fromemail.value.indexOf(‘.’) == -1) {
    alert(“Error in From E-mail address”);
    document.form1.fromemail.focus();
    return false;
 }
if(!document.form1.subject.value.length)
    {
    alert(“Subject can’t be left blank”);
    document.form1.subject.focus();
    return false;
 }
if(!document.form1.message.value.length)
    {
    alert(“Message can’t be left blank”);
    document.form1.message.focus();
    return false;
 }
 }

<script>
</head>
<body>
<form action=”<?php echo $_SERVER[‘PHP_SELF’]; ?>” method=”post”
   enctype=”multipart/form-data” name=”form1″ onSubmit=”return CheckFields()”>
<table width=”100%” border=”0″>
  <tr bgcolor=”#0099FF”>
    <td height=”33″ colspan=”4″ align=”center” bgcolor=”#A6DBFF” >Send an e-mail</td>
  </tr>
  <tr>
    <td width=”20%” height=”21″ >To      </td>
    <td colspan=”3″><span >:</span>
        <input name=”to” type=”text” id=”to” size=”50″>
                <span >(Insert Multiple E-Mail Addresses with commas i.e. moon@sun.com,apolo@greece.com)</span></td>
  </tr>
  <tr bgcolor=”#0099FF”>
    <td height=”33″ bgcolor=”#D7EFFF”>
   <p >From name </p>   </td>
    <td width=”31%” bgcolor=”#D7EFFF”><span >:</span>
      <input name=”fromname” type=”text”>
      <span >(Your Name) </span></td>
    <td width=”12%” bgcolor=”#D7EFFF”><span >From e-mail </span></td>
    <td width=”37%” bgcolor=”#D7EFFF”><span >:</span>
      <input name=”fromemail” type=”text”>
      <span >(Your E-Mail Address)</span> </td>
  </tr>
  <tr>
    <td height=”33″ >Subject</td>
    <td colspan=”3″><span >:
      <input name=”subject” type=”text” id=”subject”>
    </span></td>
  </tr>
  <tr>
    <td height=”42″ valign=”top” bgcolor=”#EAF7FF” >Message      </td>
    <td colspan=”3″ valign=”middle” bgcolor=”#EAF7FF”><span >:</span>
      <textarea name=”message” cols=”80″ rows=”8″ id=”message”></textarea></td>
  </tr>
  <tr>
    <td height=”38″ >Attach File </td>
    <td colspan=”3″><span >:</span>
      <input name=”filename” type=”file”>
      <span >(Do Not Attach More Than 1MB)</span></td>
  </tr>
  <tr>
    <td height=”55″ colspan=”4″ align=”center” bgcolor=”#A6DBFF”><table width=”100%” border=”0″>
      <tr>
        <td width=”37%” valign=”bottom” >Powered by <a href=”http://www.ubk.co.in&#8221; mce_href=”http://www.ubk.co.in”>UBK</a&gt; </td>
        <td width=”22%”><input name=”Submit” type=”submit” value=”Send Mail”></td>
        <td width=”41%”> </td>
      </tr>
    </table>
    </td>
  </tr>
</table>
</form>
</body>
</html>
<?php } ?>

Advertisements