How to use ASP mail from VBScript?

 

Simple Mail Example:

ASP  Mail Samples With Perl scripts Included -

Using the component is as simple as:

      • Creating the object
      • Setting a few properties
      • Calling the SendMail method

The following code demonstrates how to use AspMail from VBScript. In this example Joe from Joe’s Widgets wishes to send an email to  John Smith. Joe’s mail server is located at  mailhost.localisp.net.

Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
Mailer.FromName   = "Joe’s Widgets Corp."
Mailer.FromAddress= "Joe@somehost.com"
Mailer.RemoteHost = "mailhost.localisp.net"
Mailer.AddRecipient "John Smith", "jsmith@anotherhostname.com"
Mailer.Subject    = "Great SMTP Product!"
Mailer.BodyText   = "Dear Stephen" & VbCrLf & "Your widgets order has been processed!"
if Mailer.SendMail then
  Response.Write "Mail sent..."
else
  Response.Write "Mail send failure. Error was " & Mailer.Response
end if
 

By testing the result of the SendMail method we can  determine if the mailing process was successful or not.

 

 

Form Handling

All or partial input for a message may come from a form.  For example, a form posted to the server with a request method of GET (i.e.  <form action="/scripts/AspMail.asp" method=get>) may provide the  message recipient’s email address, subject and message text as  follows:

 
Mailer.AddRecipient Request.QueryString("ToName"), Request.QueryString("ToAddress")
Mailer.Subject   =  Request.QueryString("Subject")
Mailer.BodyText  = Request.QueryString("MsgBody")
 

The form may also use the POST method (i.e. <form  action="/scripts/AspMail.asp" method=post>) in which case the code would  look as follows:

 
Mailer.AddRecipient Request.Form("ToName"), Request.Form("ToAddress")
Mailer.Subject   =  Request.Form ("Subject")
Mailer.BodyText  = Request.Form ("MsgBody")
 

You can use any mixture of static and dynamic data in  setting the components properties as dictated by your needs. For example,  you may wish to send the mail to a single user. In this case you could  modify the code to look something like this:

 
Mailer.AddRecipient "John Smith", "jsmith@alocalhost.com"
Mailer.Subject   =  Request.QueryString("Subject")
Mailer.BodyText  = Request.QueryString("MsgBody")
 

Generic Form Handling

In some cases users may wish to use a number of  different forms to send email with the same block of code. ASP allows you to  loop through each QueryString or Form variable and append each one to string  variable which is then assigned to the BodyText property. Please note:  AspMail cannot control the order that these variables are returned in. This  is a function of ASP, not AspMail. ASP takes the form variables and creates  the appropriate Request collection (QueryString or Form) and stores the data  in an order that AspMail cannot change. If you use this method you must  accept ASP's order.

 
strMsgHeader = "Form information follows" & vbCrLf
for each qryItem in Request.QueryString
   strMsgInfo = strMsgInfo &  qryItem & " - " & request.querystring(qryItem) & vbCrLf
next
strMsgFooter = vbCrLf & "End of form information"
Mailer.BodyText = strMsgHeader & strMsgInfo & strMsgFooter
 

Setting Mail Priority

There are a couple of headers that can be modified to  set message priority.

The Priority property sets the message priority  on a scale of 1 to 5. A priority of 1 means HIGH. A priority of 3 means  NORMAL and a priority of 5 means LOW. In addition to this you can also set  the Urgent property if the message status is urgent. The Urgent property is a true/false property.

 

 

How to Use the DateTime Property

The component creates a Date/Time value for the message  based on the calculated GMT time. The DateTime property was added to allow  users to set a custom date/time timezone. The following code demonstrates  how to set the DateTime to US Central Standard Time. By slightly altering  the code you can adjust this to work for your own timezone.

function DayName (intDay)
  select case intDay
    case 1
      DayName = "Sun"
    case 2
      DayName = "Mon"
    case 3
      DayName = "Tue"
    case 4
      DayName = "Wed"
    case 5
      DayName = "Thu"
    case 6
      DayName = "Fri"
    case 7
    DayName = "Sat"
  end select
end function

function MonthName (intMonth)
  select case intMonth
    case 1
      MonthName = "Jan"
    case 2
      MonthName = "Feb"
    case 3
      MonthName = "Mar"
    case 4
      MonthName = "Apr"
    case 5
      MonthName = "May"
    case 6
      MonthName = "Jun"
    case 7
      MonthName = "Jul"
    case 8
      MonthName = "Aug"
    case 9
      MonthName = "Sep"
    case 10
      MonthName = "Oct"
    case 11
      MonthName = "Nov"
    case 12
      MonthName = "Dec"
  end select
end function

[set other Mailer properties]
Mailer.DateTime = DayName (WeekDay(Date)) & ", " & Day(Date) & " " & MonthName(Month(Date)) & " " & Year(Date) & " " & FormatDateTime(Now, 4) & " -0600 (CST)"
Mailer.SendMail

Notes About Creating the Mailer Object

You can create the mailer object at two different points  in time:

    Immediately before sending an email

    At the session scope and saved as a session  object

You will have to decide when and where it is appropriate  to create the object based on your particular application. If you aren't  sure which way to create the object reference, or for typical usage, you  should create the object immediately before sending your email. Your code  would look like this:

Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
... [Set properties]
if Mailer.SendMail then ...

Creating these local references, as demonstrated above,  allow you to use the object on multiple application threads at the same  time.

To create an object reference at the session level, your  code might look something like this:

 

if Not IsObject (session("Mailer")) then
  Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
  Set session("Mailer") = Mailer
else
  Response.write "Cached session object reference being used<p>"
  Set Mailer = session("Mailer")
end if

 

 

Multiple Host Support

AspMail provides one host property to set up remote SMTP  server addresses. The RemoteHost property should be set to your  primary and secondary server’s address separated by semicolons. In the event  that the primary server is down, AspMail will attempt to use the  secondary server. For example,

Mailer.RemoteHost = "mailhost.localisp.com;mailhost.anotherisp.com"

ASP mail properties

Property
Description
BodyText
The message body text. To clear the  text once you have set it use the ClearBodyText Method.
Example:
Mailer.BodyText = "Your order for 15 widgets has  been processed"
CharSet
The character set. By default the char  set is US Ascii
Valid values:
    1 = US Ascii
    2 = ISO-8859-1
Example:
Mailer.CharSet = 2
ConfirmRead
The ConfirmReading flag. If this is  set to true AND the recipients email program supports
this feature (and it is enabled) the recipients  email program will send a notice back to the FromAddress confirming  that this email has been read.
Example:
Mailer.ConfirmRead = true
ContentType
The ContentType property allows you to set the  ContentType header of the message's BodyText. If, for example, you  wanted to send HTML as the messages's body, you could set ContentType  = "text/html" and EMail programs that support HTML content could  properly display the HTML text.
Note: The ContentType property is ignored if you  have file attachments.
Example:
Mailer.ContentType = "text/html"
CustomCharSet
If you wish to use a character set besides the  included types you can set CustomCharSet to a character set  string.
Example:
Mailer.CustomCharSet = "ISO-2022"  or
Mailer.CustomCharSet = "big5"
DateTime
AspMail will, by default, create a Date/Time  header for your local system using GMT. If you would like to override  the date/time calculation set the DateTime property to a valid  date/time string in the format defined by RFC 822 & RFC  1123.
Example:
Mailer.DateTime = "Fri, 02 May 1997 10:53:49  -0500"
Encoding
The encoding type for attachments. The  default setting is MIME.
Valid values:
    1 = UUEncoded
    2 = MIME
Example:
Mailer.Encoding = 1
Expires
If the component is an eval version  the expires property will return the date that the component quits  functioning.
Example:
Response.Write "Component Expires: " &  Mailer.Expires
FromName
The message originator’s name.
Example:
Mailer.FromName = "Joe’s Widget  Shop"
FromAddress
The message originator’s email  address.
Example:
Mailer.FromAddress =  "joe@widgets.com"
IgnoreMalformedAddres s
Defaults to false. When false AspMail will check  for '@' in the email address for calls to AddRecipient, AddCC and  AddBCC. An error would be returned in the Response property. When this  property is set to true AspMail will not perform any address syntax  validation. If you are using AspMail to send a message through an SMS  gateway or fax system you may need to set this property to  true.
IgnoreRecipientErrors
Defaults to true. If true AspMail will ignore  error messages returned by the SMTP server for invalid addresses. This  is useful when a mailing is addressed to a number of  recipients.
Live
Live allows you to test the component without an  SMTP server. If Live is set to false then the NET SEND message will be  executed with the FromName property being used as the recipient of the  message. Only the subject is sent to the recipient.
Example:
Mailer.FromName = "ASPProgrammer"
Mailer.Live =  false
Organization
Sets the Organization header in the  message.
Example:
Mailer.Organization = "Your Company  Name"
PGPPath
The path where PGP is  located.
PGPParams
Parameters that PGP will use to  process message.
Priority
Sets the message priority. Priorities  are 1-5 and are reflected in the X-Priority
Valid values:
    1 – High
    3 – Normal
    5 – Low
Example:
Mailer.Priority = 1
RemoteHost
The remote SMTP host that the message  will be sent through. This is typically an SMTP server located at your  local ISP or it could be an internal SMTP server on your companies  premises. Up to 3 server addresses can be specified, seperated by a  semicolon. If the primary server is down the component will attempt to  send the mail using the seconary server and so on.
Example:
Mailer.RemoteHost = "mailhost.myisp.net"  or
Mailer.RemoteHost = "mailhost.myisp.net;  mailhost.myotherisp.net"
RemoveXHeaders
To remove any extra XHeaders such as  the AspMail software header set RemoveXHeaders to true. (Version >=  3.00)
Example:
Mailer.RemoveXHeaders = true
ReplyTo
The ReplyTo property allows you to specify a  different email address that replies should be sent to. By default  mail programs should use the Reply-To: header for responses if this  header is specified.
Response
The Response property returns any error messages  that may occur.
ReturnReceipt
The ReturnReceipt flag. If this is set  to true AND the recipients SMTP server supportsthis feature (and it is enabled) the recipients SMTP server  will send a notice back to the FromAddress confirming that this email  has been delivered.
Example:
Mailer.ReturnReceipt = false
SMTPLog
If you need to debug the session give  a log file name here. Make sure the IUSR_XYZ IIS user has security  that allows the component to write to this file. Warning: Do not use  this setting in situations where multiple users can access this  component at the same time. This is for single user debugging  ONLY!
Example:
Mailer.SMTPLog = "c:\smtplog.txt"
Subject
The message subject.
Example:
Mailer.Subject = "Stock split  announced!"
SuppressMsgBody
The SuppressMsgBody property is true by default  and is used in conjuction with the SMTPLog property. When SMTPLog is  set to a file and SuppressMsgBody is true the log file receives a copy  of the message text. If SuppressMsgBody is false the message text is  not sent to the log.
TimeOut
Timeout is the maximum time that  AspMail should wait for a response from the remote server. The default  is 30 seconds.
Example:
Mailer.Timeout = 15
Urgent
The urgent flag sets the X-Urgent  header in the outgoing message. Not all mail readers support this  flag.
Example:
Mailer.Urgent = true
UseMSMailHeaders
MS-Mail priority headers, by default,  are sent in addition to the standard SMTP priority headers. You can  turn MS-Mail headers off with this property
Example:
Mailer.UseMSMailHeaders = false
Version
Gets the internal component version  number.
Example:
Response.Write "Component Version: " &  Mailer.Version
WordWrap
The WordWrap property is off by default. Setting  WordWrap to true causes the message body to wordwrap at the position  specified by the WordWrapLen property.
WordWrapLen
The WordWrapLen property is set to 70 by default.  You can modify the position that wordwrap occurs by changing this  value.

 

AspMail Component  Methods

Method
Parameters
Return Value
Description
SendMail
None
True or False
Example:
if Mailer.SendMail then
Response.Write "Mail sent..."
else
Response.Write "Mail failure. Check mail host  server name and tcp/ip connection..."
end if
The SendMail method attempts to send  the email.
AddRecipient
Mailer.AddRecipient "Jay Jones",  "jayj@somehost.net"
True/False based upon success or  failure.
Adds a new recipient, as shown in the  message's To: list.
ClearRecipients
None
None
Clears any recipients assigned to the To list.
AddCC
Mailer.AddCC "Jay Jones",  "jayj@somehost.net"
True/False based upon success or  failure.
Adds a new recipient, as shown in the message's CC list.
ClearCCs
None
None
Clears any recipients assigned to the CC list.
AddBCC
Mailer.AddBCC "Jay Jones",  "jayj@somehost.net"
True/False based upon success or  failure.
Adds a new Blind Carbon Copy recipient. BCC recipients are not shown in any message  recipient list.
ClearBCCs
None
None
Clears any recipients assigned to the BCC list.
ClearAllRecipients
None
None
Clears all recipients assigned to the To, CC and BCC lists.
AddAttachment
Filename to attach to message.
Example:
Mailer.AddAttachment  "d:\shipping\proddsk1.zip"
N/A
Adds attachments to current mailing.  You must use an explicit path to attach files.
Make sure that the IUSR_XYZ IIS user, or the  authenticated user has security rights that allow the component to  read the necessary files! Note: Attachments may not be supported in  some eval versions.
ClearAttachments
None
None
Clears any attachments that were previously  set.
Example:
Mailer.ClearAttachments
ClearBodyText
None
None
Clears any text assigned to the  message’s body which may have been set previously by using the BodyText property.
ClearExtraHeaders
None
None
Clears any X-Headers that were set by  use of AddExtraHeader.
AddExtraHeader
A string value that forms a proper  SMTP X-Header
Example:
Mailer.AddExtraHeader
("X-HeaderName:  XHdrValue")
True or false. Returns true if  X-Header was added.
Adds extra X-Headers to the mail  envelope.
GetBodyTextFromFile
See pgpmail.asp for more  information.
See pgpmail.asp for more  information.
Loads message's body text from a file.  Optionally runs PGP on the message text.
See pgpmail.asp for more  information.
EncodeHeader
strValue
strValue encoded as String
Encodes a string in RFC1522 format to  provide support for 8bit mail headers such as 8bit subject  headers.
Example:
Mailer.Subject = Mailer.EncodeHeader("Réspons e de  Service à la clientèle")
GetTempPath
N/A
strPath
Returns the path set up by the OS for  temporary mail files.