Using SoftArtisans FileUp and SMTPMail together, it is possible
to create a Web-based SMTP client that you can use to compose e-mail
messages with attached files.
Using SMTPMail itself to attach files is very easy, as all you
need to do is specify the path, on the server, to the file you want
to attach with the AddAttachment method. However, what if the file
you want to attach isn't yet on the server? In many cases, the file
originally resides on the workstation where you'll be sitting while
you're composing your email. Or, perhaps you want to create a web
application which allows any user to send an e-mail with an attachment.
In this case, you'll need to get the file from the client onto the
server before it can be attached to an outgoing e-mail. This is
where FileUp steps in to the equation.
First, FileUp handles receiving the file you want to attach to
your outgoing e-mail. Then, it saves the file temporarily to the
server's disk so that SMTPMail can attach it to an outgoing message.
Finally, FileUp removes the file from the server after the message
has been sent, and you're done.
It is important to note that once FileUp is included in your application,
you'll need to make some changes to your form and ASP
response page so that the file is transmitted properly, and you
can read the form values.
As with any FileUp upload, you'll need
to:
- Specify ENCTYPE="multipart/form-data" in your <FORM>
tag.
- To access the values of the form in your ASP script,
use FileUp's Form collection instead of ASP's intrinsic Request.Form
collection.
The following code illustrates how to utilize both FileUp and SMTPMail
together to accomplish this task.
Here is the HTML form that provides the User Interface to our SMTP
e-mail application:
<HTML>
<BODY>
<FORM ENCTYPE="multipart/form-data" method="post"
action="smtpmail.asp">
<TABLE>
<TR>
<TD>RemoteHost:</TD>
<TD><input type="text" name="remotehost"
value="Your SMTP server">
</TR>
<TR>
<TD>From Name:</TD>
<TD><input type="text" name="fromname">
</TR>
<TR>
<TD>From Address:</TD>
<TD><input type="text" name="fromaddress">
</TR>
<TR>
<TD>Subject:</TD>
<TD><input type="text" name="subject">
</TR>
<TR>
<TD>Recipient's Name:</TD>
<TD><input type="text" name="recipname">
</TR>
<TR>
<TD>Recipient's E-mail:</TD>
<TD><input type="text" name="recipemail">
</TR>
<TR>
<TD>Body Text:</TD>
<TD><textarea rows="15" name="bodytest"
cols=50>Enter message body here.</textarea>
</TR>
<TR>
<TD>Attachment:</TD>
<TD><input type="file" name="attachfile"></TD>
</TR>
<TR>
<TD COLSPAN="2">
<input type="submit" value="Send
Mail w/ Attachment">
</TD>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>
|
Now, here is the ASP response page where FileUp and SMTPMail are used
to parse the form data, save the uploaded file, and assemble the outgoing
email:
<%
'--- First, we'll use FileUp to receive and temporarily save the
uploaded file.
'--- We'll attach it to the e-mail later in the script.
Set upl = Server.CreateObject("SoftArtisans.FileUp")
'--- Set the path where you want to save the
files
upl.Path = "c:\temp"
'--- Here we'll check to be sure the user selected
a file to be attached
If Not upl.Form("attachfile").IsEmpty
Then
'--- If so, set a flag
that we'll use later on
'--- and save the file
to the disk
bAttachFile = True
upl.Form("attachfile").Save
Else
'--- If not, set the flag
to False
'--- we'll test this flag
later on to prevent errors
bAttachFile = False
End If
'--- Now use SMTPMail to attach create an e-mail
'--- Here we take all of the SMTPMail values directly from the form
Set mailer = Server.CreateObject("SoftArtisans.SMTPMail")
'--- Set standard SMTPMail properties with values
from the Form
mailer.RemoteHost = upl.Form("remotehost")
mailer.FromName = upl.Form("fromname")
mailer.FromAddress = upl.Form("fromaddress")
mailer.Subject = upl.Form("subject")
mailer.BodyText = upl.Form("bodytext")
mailer.AddRecipient upl.Form("recipname"),
upl.Form("recipemail")
'--- Now attach the file that was just uploaded
'--- .ServerName is the full path and name of
the just-saved
'--- file
'--- We'll check to be sure there really was
an uploaded file
If bAttachFile Then
mailer.AddAttachment upl.Form("attachfile").ServerName
End If
'--- If the message is sent successfully, delete
the file
'--- from the server
If mailer.SendMail Then
Response.Write("Successfully
Sent.<BR>")
If bAttachFile Then
Response.Write("Attached:
" & upl.Form("attachfile").ServerName)
Else
Response.Write("No
attachment.")
End If
Else
Response.Write("Mail
send failed.")
End If
'--- Now, remove the attached
file from the server
'--- since it's already
on its way out with the e-mail
If bAttachFile Then
upl.Form("attachfile").Delete
End If
%>
|
|