| How do I determine a cause of mail
failure? or
The message is sent but I never receive it.
What's wrong?
or
It's been working fine for 3 years and now it
appears that the messages are not getting delivered. |
Note about FromAddress: You must specify
a value for the FromAddress property. Mail failure will
occur without a FromAddress. If the component
can determine why the SendMail method failed, that information
will be stored in the Response property. So, for example, to print
that information to the clients browser you could add the following
code:
if not Mailer.SendMail then
if Mailer.Response <> ''" then
strError = Mailer.Response
else
strError = "Unknown"
end if
Response.Write "Mail failure occured. Reason: " & strError
end if Another
fairly common problem is when a user reports that a specific feature
is not working. For example BCC's may seem to never reach their
destination. A valuable debugging tool is available with the SMTPLog
feature. Assign a valid filename to this property and the contents
of the SMTP transaction that occurs during a SendMail call will
be recorded to this file. I
f you find that the SMTP transaction occurs
without error then you should check elsewhere for the cause of
mail delivery failure. Invariably the user finds that the BCC
address was invalid or that the SMTP server is not relaying mail
for the recipient domain.
The SMTPLog feature allows you to verify if
the transactions are complete and valid before pursuing other
avenues in determining the cause of failure. If you see no errors
in the SMTPLog then you need to check downstream of AspMail starting
with the SMTP server you are using to send, as well as the recipient
SMTP server. Anti-spam features on either machine may be identifying
your message as spam and may need to be reconfigured. Check with
the SMTP server administrators.
500 (503, 554 etc...) series errors are errors
that the SMTP server generates. The exact meaning of the error
depends upon your configuration and SMTP server. Please consult
your SMTP server documentation for specifics on what these errors
mean. Some of these are covered below but these errors are being
issued by your SMTP server and AspMail is merely passing them
on to you. |
| Checking the Mailer.Response property
returns "File Access Denied"
or
"Cannot create file"
or
"I have a TMP/TEMP var but it still isn't working"
What's wrong? |
- You probably don't have a TMP or TEMP path
set up, or if you do, the IIS User (or any users authenticating
under IIS) don't have read/write access to the this directory.
- Make sure the directory exists.
- Make sure you have FREE space on that
partition/directory
- Make sure the TMP or TEMP variable exists
in your NT/Win95 environment. Under NT this must be a system
environment variable, not a user environment variable. If
TShoot (see our tech support page) doesn't show the var
it isn't a system var. It must be a system var.
How to determine where your
TMP/TEMP dir points to
AspMail versions 2.5.8 and higher have a method
called GetTempPath. To display where your TMP path is set to
place the following code in an ASP script and run it.
Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
Response.Write Mailer.GetTempPath
Your Win32 OS is designed to find your temporary path in the
following manner:
- Check for TMP.
- If it does not exist, check for TEMP.
- If it does not exist use the current directory.
ASP tends to use the \WinNT directory in this case.
- The problem is the TMP path noted above
99% of the time. If you have double-checked that the system
(not user) env var exists
- Make sure all users which need access
to the component (the anonymous IIS user and any other users
which authenticate under IIS) have read/write access to
this path.
- Make sure that the drive where the TMP
path points to has free disk space
- Check to see if the user has a disk space
quota (under NT 4 this would only be available through 3rd
party quota software; this is now built in to Win2K)
There are no other known causes for this error
so please check the above issues. If you fail to resolve the issue
then turn security failure auditing on using User Manager (NT
only) run the script for failure, and view the Event Log looking
for an indication of the reason it failed. |
| What would cause an "Operation timed
out error"? or
"AspMail has been working great but suddenly
I'm getting an 'Operation timed out' error. |
Reasons for operation timed out include:
- SMTP server is down, overloaded or simply
not responding
- Firewall blocking port 25 between AspMail
and SMTP server
- Packet filtering blocking port 25 between
AspMail and SMTP server
- IP route is down
- Your Winsock configured DNS server is down
To check using another method run
telnet [smtp hostname] 25
from the IIS server where AspMail is installed. If telnet can
see the
SMTP server, then AspMail can see the server also. |
| I can successfully send email from
one computer on our network but the same exact code is failing from
another machine on the network. |
See the first question listed above
"How do I determine a cause of mail failure?" first. If there are
no communications problems the likely cause is that the first machines
IP is not blocked at the SMTP server whereas the 2nd machines is.
Consult with your SMTP server admin to see if anti-spam features
are in use that would prevent the 2nd IP address from sending mail. |
| I'm adding attachments but they aren't
getting added to the actual mailing. What's wrong? |
- The path specified is not valid.
- The user the component is running under,
typically the anonymous IIS user, does not have rights to open
the file. The anon IIS user, by default, cannot read from networked
drives so a path such as \\foobar\files\myfile.zip is not valid.
- The file is open by another process that's
denying reads to the file (another process you have running
has the file open for writing and is denying read access).
|
| How do I use AspMail with Microsoft's
Proxy Server? |
If the machine running IIS and AspMail
is separated from your SMTP host by Microsoft's Proxy Server, you
may experience problems connecting to the SMTP server. AspMail typically
reports the error "Host not found" under this configuration. As
a logged-in user you may have no problems connecting to the SMTP
server. You must assign NT user credentials to the IIS Admin service
using the CREDTOOL command-line utility. This utility is located
in the directory \MSP\Clients\I386 on the Proxy Server machine.
Copy this utility to the machine running IIS and execute the following
command at an MS-DOS prompt specifying your own user credentials:
credtool -w -n inetinfo -c <username> <domain> <password>
This command assigns the credentials of a specified
NT user to the executable inetinfo.exe that hosts the IIS Admin
service. You also need to configure your IIS to recognize those
credentials. You do that by creating the file Wspcfg.ini and placing
it in the directory where inetinfo.exe is located. This is usually
found in the \winnt\system32\inetsrv directory.
The following INI entry should be put in the
wspcfg.ini file:
[Inetinfo]
ForceCredentials=1
After that, you must restart IIS by issuing
the commands:
net stop iisadmin /y
net start w3svc |
| I'm adding files from an array. All
but the last file are getting added, no matter how many files I
add. |
The last array element filename probably
has a chr(0) appended to the end. You'll have to delete the final
character of the filename before calling AddAttachment. |
| Is there a comprehensive list of errors
that can be returned by AspMail? |
There are quite a few errors that
can be returned. We do not have a comprehensive list, primarily
because these errors are returned from systems AspMail is dependent
on. The errors can come from your SMTP server (errors vary from
vendor to vendor), from WinSock errors (documented by Microsoft)
and general OS errors such as out of memory, disk read/write failures
etc... (again documented by Microsoft). |
| "AddCC or AddBCC doesn't work" - is
this a bug with AspMail? or
"I'm adding multiple recipients but only the
first one is getting delivered. What's wrong with AspMail?" |
AddRecipient, AddCC and AddBCC work
just as they should. The problem is not with AspMail. It is likely
that your SMTP server is rejecting "foreign addresses" (see "no
relay" question below). To test whether
AspMail is functioning properly use the SMTPLog property to capture
an SMTP session with multiple recipients. All the recipients you
send to should appear in the log as the SMTP envelope is sent.
If they all appear then the problem is with your SMTP server or
an SMTP server down the stream (or your addresses are invalid). |
| The syntax Mailer.AddRecipient
= "name", "name@address.net"
and
Mailer.AddRecipient = "name@address.net"
both return a VBScript error. What's wrong? |
First off, remove the = sign. AddRecipient
sounds like and is actually a method, not a property. Also AddRecipient
takes two parameters. See AddRecipient in the methods listing
for details. |
| What's the syntax for adding multiple
recipients? |
Call AddRecipient, AddCC or AddBCC
for each recipient. There's no other way to add multiple recipients.
Mailer.AddRecipient "name1", "address1"
Mailer.AddRecipient "name2", "address2"
Mailer.AddBCC "name3", "address3" |
| How do I define the sensitivity of
the message? |
Outlook allows you to define a message
sensitivity. You can do this using as mail by adding the sensitivity
header along with the proper text for the sensitivity header.
For example:
Mailer.AddExtraHeader "Sensitivity: Company-Confidential" |
| How do I create a hyperlink in my
message? |
Set Mailer.ContentType = "text/html"
and include the hyperlink just like you would with html.
<html>
<head><title>AspMail HyperLink</title><head>
<body>
<H3>AspMail HyperLink</H3>
<%
Set Mailer =
Server.CreateObject("SMTPsvg.Mailer")
Mailer.FromName = "Status Update Report"
Mailer.FromAddress =
"useyour@isphostnamehere.com"
Mailer.RemoteHost = "your.smtp.server"
Mailer.AddRecipient "Your Recipient", "yourrecipients@addressgoeshere.com"
Mailer.Subject = "AspMail Hyperlink"
Mailer.ContentType = "text/html"
Mailer.BodyText = "<html><body>Here's some <a href=""http://www.serverobjects.com/"">info</a></body></html>"
if Mailer.SendMail then
Response.Write "Mail sent..."
else
Response.Write "Mail failure. Check mail host server name
and tcp/ip connection..."
Response.Write "<p>" & Mailer.Response
end if
%> |
| How do I create a line-break in a
message? |
Under VBScript you can use the predefined
constant VBCrLf. Simply using a Chr(13) or a Chr(10) will not work
--you must use both -- the VBCrLf defined constant is the preferred
method. A Carriage-return and line-feed character are required to
create a new line in the message. See the sample scripts for examples. |
| How do I send multipart text and html
messages so that text viewers can read the message and HTML enabled
email clients can see and HTML version? |
See the file multmail.asp that is
located inside the AspMail zip file.
Do not write ServerObjects for a copy. Download the zip file for
AspMail from the ServerObjects Web site if you need a copy. |
| "Do I need to install SMTP on my server?"
or
"Is the Microsoft SMTP service required?" |
AspMail "knows" how to talk SMTP without
any external dependencies. You do not need to have Exchange or other
products installed (outside of the OS / TCP IP) for AspMail to work. |
| How do I set the username and password
to send mail? |
Standard SMTP does not use a uid/pwd
so it isn't needed unless your SMTP requires user authentication.
AspMail will support user authentication in a future version but
not currently do so. |
| What versions of PGP does AspMail
support? |
AspMail can support any encryption
program that uses command-line parameters. Using PGPPath and PGPParams
you can specify input, output and processing options. The current
version of PGP (5.0) does not support command-line parameters but
the commercial PGP 4.x does as well as the freeware (non-commercial
use) PGP 2.6.2. |
| How do I troubleshoot PGP usage? |
- Check permissions on the pgp.exe. The anon
IIS user (if you are calling PGP from that user account) will
need rights to read and execute files from the PGP directory.
- Verify the path and params you are setting
up to call PGP.
- Use task manager to see if PGP is getting
executed on the server.
- Check the Mailer.Response property immediately
after you call GetBodyTextFromFile to see if any O/S errors
are getting returned by the call to PGP.
- If the error returned in the Response property
indicates that file access was denied, or that there was a file
access timeout you need to find out...
- If the file is getting created in the
path specified.
- What has the file open. You can use Filemon for Windows
NT and HandleEx from
Systems Internals to help debug these issues.
|
| My mail to AOL is bouncing. What am
I doing wrong? |
AOL will not accept anything other
than a true address in the "From:" heading. Just about every mail
system out there, except AOL and Compuserve, will accept the "No
Mail Address" as the "From:" header. (thanks to R.S for this info).
|
| I want to create a mail service like
HotMail or Yahoo Mail. Do you have script code that would serve
as a basis for this? |
No. We only provide the AspMail and
AspPOP3 components. You will have to either write the code yourself
or find a consultant to do it for you. |
| I want to use AspMail from VB, FoxPro
or [insert name here]. |
The product page has
several examples of usage from other languages. Be sure you are
using AspMail 3.x since this version corrects a problem some users
reported with previous versions. |
| Does AspMail support 8bit messages?
or
"does AspMail support Japanese character set" |
AspMail supports any 8 bit characters
but please note:
- Message bodies may be 8bit.
- Some SMTP servers drop the 8th bit in message
headers including Subject lines.
- You can encode message subjects using a new
method named EncodeHeader. See the methods
listing for details. Some character sets don't work properly
using this method, some do. We don't have any support for character
sets that don't work properly using this encoding.
- SHIFT-JIS reportedly works fine with the
EncodeHeader method.
|
| Can I repeatedly assign values to
the BodyText property? and "The message text keeps growing with
each email I send." |
Yes, the text will be appended to
the message. Use ClearBodyText if you need to clear the message
text. |
| How many recipients can I add to a
message? |
To Recipients: 65K; CC's: 65K; BCC's:
65K. But many SMTP servers won't handle that many so we suggest
you reduce the # per message sent. |
| Can AspMail be used to retrieve files
off the client computer? |
AspMail is a server-side component.
Retrieving files from the client computer requires a client-side
component that has access to the client's local harddisk or a browser
that supports file uploads in addition to a server side component/extension
that can accept those files. AspMail does not support this
function. You can however install a component that handles server
side uploads and use it in conjunction with AspMail. After handling
file uploads to the server they can then be attached using AddAttachment. |
| How do I get Exchange to route Internet
email to the Net? |
Exchange uses a service called the
Internet Mail Connector (IMC) to allow it to act as an SMTP server
and transmit and receive mail via a TCP/IP network. If you are not
running the IMC you will not be able to send or receive mail from
the Internet by AspMail or any other means. Once
you have SMTP mail going with the IMC, no further action should
be necessary to use AspMail. (Thanks to Steve Crane for this information).
Note: You must enable the rerouting on your
Exchange's Internet Mail Connector. Go in the properties of your
Internet Mail Services (Exchange 5.0). Check the reroute incoming
SMTP mail option and add a route to your domain. Mail sent to
"yourdomain.com" should be accepted as "inbound". Thanks to Sébastien
Stormacq for this information. |
| What options does Exchange allow to
prevent spamming or relaying through itself? |
Exchange provides at least two options:
1) You can turn authentication on and prevent
non-authenticated connections from sending SMTP traffic -- But
the problem with this is that AspMail does not currently
support authentication.
2) A better option, and one that works with
AspMail is to use Exchanges ability to block incoming SMTP traffic
from all IP addresses except the IP(s) where AspMail is located.
See your Exchange administrator for details
on how to do this. |
| How do I upgrade to the latest version? |
Download the latest "eval" version
and follow the upgrade directions provided earlier in this document. |
| Can I redistribute this control with
my products? |
The license agreement does not
permit redistribution of AspMail. |
| The SMTP server is reporting back
a "no relay" error. What's wrong? also
"foreign traffic not accepted" and other similar messages... |
The SMTP server is looking at your
FromAddress and determining that it doesn't know who you are. Some
SMTP servers are configured to disallow the "relaying" or transfer
of mail originating from addresses outside of its own domain. The
only solution is to provide a FromAddress that's local to the SMTP
server's domain or get the operator of the SMTP server to allow
the FromAddress you are using. This setting is commonly used by
ISP's to prevent spammers from using their resources. |
| What does the error "socket not connected"
mean? |
This error occurs when the remote
SMTP server abnormally closes the Winsock connection that AspMail
established. The reasons may include an SMTP server that is not
functioning properly (misconfigured or failing). In some cases this
error can be generated by a Winsock layer that is failing. To test
your local server, reboot the server and try to run the script again.
If the error continues to occur it is likely that some sort of configuration
problem or failure is occurring on the SMTP server. |
| What does error "554 No valid recipients"
mean? or
"503 Need RCPT (recipient)" |
500 series errors are errors that
the SMTP server generates. This error means that the message recipients
given are either not given (you didn't use AddRecipient, AddCC or
AddBCC) OR they are not valid recipients for this SMTP server. This
is often associated with the "no relay" issued covered above. The
SMTP server rejects the given recipients and then issues this error.
This typically happens when you have IgnoreInvalidRecipients set
to true. You can verify that the SMTP server is ignoring your recipients
due to the "no relay" issue or for any other reason by using the
SMTPLog property to generate a log and then look at the rejection
errors in the log file. |
Some of our emails are getting equal
signs at the end of lines in some messages. Why?
|
AspMail can encode high characters
using a scheme where the = sign
indicates a character to be decoded follow by the hex string value
of
the character to be encoded. This system of course assumes that
the client can decode these characters (which most can). This is
called quoted-printable encoding. The default for AspMail is not
to use QP encoding. Things that trigger automatic QP encoding:
- High characters - characters with the following
ordinal values 0..31,61,128..255
- Long lines of a message body (you can turn
wordwrap on to fix this case)
Most clients are capable of handling QP encoding.
If your client is not capable then you should upgrade your client
or you must work within the above limitations to prevent the QP
encoding from occuring. |
| Sometimes I get multiple (duplicate)
messages sent when I call SendMail. Why? |
AspMail has an internal routine to
look for errors. If an error occurs at any point (even after the
text of the message has been sent to the SMTP server) AspMail will
go ahead and attempt to send it a second time in an attempt to complete
the SMTP transaction without any errors if, and only if, you
have multiple RemoteHosts set up in the RemoteHost property.
The AspMail routine will only attempt 1 retry in this case.
If you only have one host name setup then the
problem will be found in
#1) you are calling SendMail more than once
or
#2) you are not handling cases where the user
does a double/triple-click on his/her browser.
#3) Your smtp server is erroring out before
the message transfer is complete in which case AspMail detects
the error and resends till it gets a successful send (this
can only occur with AspQMail) |
| How do I specify the Return-Path header
in a message? |
Mailer.AddExtraHeader "Return-Path:
your_route-addr" |
| With AspMail can I have "required
fields" on my HTML forms or other form processing functionality.
Can AspMail change the order I get form field data back? |
- Microsoft's ASP, not AspMail controls form
data order. If you are looping through the form data in ASP
order it probably won't be the original form order. You'll have
to hard code field names to force the data back in a specific
or original form order.
- Required fields are a function of HTML and
client side scripting, not AspMail. If you used a CGI library
in the past that handled those issues for you, it what only
because they delved into areas outside of SMTP/Mail. AspMail's
only function in life is to send mail. It does not handle client
side HTML/scripting.
|
| "Can someone use AspMail to send SPAM
through our system?" |
AspMail does not accept SMTP connections
and therefore cannot be used to "relay" SMTP traffic. AspMail can
generate new SMTP message traffic but only if you provide a script
page to generate it. Therefore it is under the Web operator's control. |
| I am getting blank emails OR
We are getting blank emails even when we aren't
calling/using AspMail |
One of your scripts which calls AspMail
is getting called
- By someone using a Web browser or
- By a stats package like WebTrends or
- By a Web Robot which is parsing your site.
AspMail is a component and it doesn't have the
"brains" to generate messages on it's own cognizance. |
| WebTrends is generating multiple messages
when its schedule runs. |
WebTrends is probably parsing your
Web tree and calling the HTML and ASP scripts to determine what
they are. In the process the ASP scripts you have that call AspMail
may be getting called at the same time. Your options are:
- You are going to have to configure WebTrends
not to call these scripts. - or -
- Modify your scripts so that if WebTrends
is calling them they don't fire off a message. - or -
- Contact WebTrends for another solution. AspMail
can't control WebTrends.
|
| My component is registered. Should
the Expires property return a date? |
No. Registered versions return N/A
for an expiration date. The registration process (per the instructions
you received) should be run on the server. |
| I'm mailing a large number of people.
At some point in the mailing it fails. Can you give me any tips? |
The first tip is to use the SMTPLog
property to write an SMTP log to disk and see what the point of
failure is based on the log. The SMTP server is probably rejecting
your message for some reason and the cause is typically determinable
from the log. Secondly, some SMTP servers
only accept mail for locally known recipients. The SMTP server
may be rejecting your message since it is being addressed to recipients
outside the domain of that SMTP server. This is unusual but could
possibly be the problem you are running into. |
| Using the SMTPLog property I got an
error #132. How can I look up numeric errors returned by AspMail
to find out what it means? |
TShoot under
the file menu has a Win32 error code lookup form. |
| What are some of the issues that affect
the speed of the mailing? |
A small message should take 3-4 seconds
to send if the server is local and all other conditions are normal.
The following list are some items that can affect transfer speed.
- The slower the TCP connection the longer
the mailing will take. Typically a local server is much faster
than a remote server. If you are losing packets between your
server and the SMTP server you can expect longer times due to
this packet loss.
- The size of the mailing. The larger the message
the longer the message transfer will take to send.
- CPU utilization: If your CPU is experiencing
heavy usage you can expect it to take longer to transfer mail.
- SMTP server utilization: If your SMTP server
is experiencing heavy traffic response times from the server
are going to take longer thus increasing the time it takes to
send a message.
One thing we've found is that by changing the
RemoteHost name from a hostname to an IP address can cut 3 or
4 seconds off some messages. Even if the RemoteHost name is set
to the local server's name, we've found some messages waiting
for the hostname lookup. Just change the address to an IP and
you may see an increase in the speed. |
| Is there a limit to the length of
email addresses. |
AspMail support longer email addresses
than anyone has so there are no practical limits. If your email
is not being delivered see the previous questions for pointers on
how to troubleshoot mail failures. |
| Does the 2 CPU license cover two servers
or two processors? |
In accordance with the license agreement,
the 2 CPU license would cover either 2 single CPU servers or 1 dual
CPU server. With this pricing model, AspMail is far more inexpensive
than any "competing" products. |
| The message body occassionally gets
truncated. |
You are likely low on TEMP path harddrive
space. |