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