| 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. |