Verwendung von Collaboration Data Objects für Microsoft Windows NT Server (CDONTS), E-mail aus Active Server Pages (ASP) zu senden ist sehr häufig geworden. CDONTS wird zusammen mit anderen Technologien verwenden, können Sie eine webbasierte Schnittstelle erstellen, die Benutzern die Anlagen mit Ihre e-Mail-Nachrichten senden ermöglicht. CDONTS führt auf den Server, damit die Dateianlage auf den Server hochgeladen werden muss, bevor es an die E-mail zugeordnet werden kann.
Der Dateiupload kann über die Microsoft Posting Acceptor erfolgen. Die Posting Acceptor ist auf dem Server installiert und ermöglicht einem Client, eine Datei an den Webserver von dem Computer des Benutzers gesendet. Diese Datei kann dann auf e-mail als Anlage gesendet werden.
Hinweis: Der SMTP--Dienst muss werden aktiviert und konfiguriert, um CDONTS verwenden werden. (Finden Sie unter dem IIS-Dokumentation.)
Schritte zum Anfügen einer Datei an eine Nachricht
- Erstellen Sie ein neues Anwendung Webprojekt MyEmailWebApp in Microsoft Visual InterDev auf dem Server mit der Posting Acceptor aufgerufen.
- Fügen Sie eine ASP-Seite default.ASP aufgerufen, um das Projekt hinzu.
- Löschen Sie den Code, der mit der Seite standardmäßig geliefert wird.
- Fügen Sie folgenden Code auf der Seite:
<%@ Language=VBScript %>
<HTML>
<HEAD>
<%
Dim strServerURL 'Server Name including http:// protocol
strServerURL = "http://" + Request.ServerVariables("SERVER_NAME")
Dim strServerURLFull 'Path to subweb directory
strServerURLFull = strServerURL & "/myEmailWebApp"
Dim strTargetURL 'Directory where we will upload our file to
strTargetURL = strServerURLFull & "/uploaded_files"
Dim strRepostURL 'Path to the page we will display after our file uploads
strRepostURL = strServerURLFull & "/SendMail.asp"
Dim strPathToPA 'Path to the cpshost.dll
strPathToPA = strServerURL & "/Scripts/cpshost.dll"
Dim strPostingURL 'Action path for our form
strPostingURL = strPathToPA + "?PUBLISH?" + strRepostURL
%>
</HEAD>
<BODY bgcolor="white">
<!--The Form must include the enctype properties set to "multipart/form-data" or the upload will fail. -->
<FORM enctype="multipart/form-data" action="<%=strPostingURL %>" method="post" id="form1" name="form1">
<INPUT type="hidden" name="TargetURL" value="<% = strTargetURL %>">
<!--This hidden field is used to determine if a file post is being made.-->
<INPUT type="hidden" name="bolAttach" value="true">
<CENTER>
<TABLE bgcolor=Gray border=1>
<tr>
<td>From:</td>
<!--Who is this message from.-->
<td><INPUT id="FromBox" name="FromBox" maxlength="50" value="myEmail@myDomain.com"></td>
<tr>
<tr>
<!--Who is this message To.-->
<td>To:</td>
<td><INPUT id="ToBox" name="ToBox" maxlength="50" value="myEmail@myDomain.com"></td>
<tr>
<tr>
<!--This message's Subject.-->
<td>Subject:</td>
<td><INPUT id="SubjectBox" name="SubjectBox" maxlength="50" value="Email with attachment.">
</td>
</tr>
<tr>
<!--This message's body.-->
<td colspan="2"><br><br>Message:<br>
<TEXTAREA cols="40" id="MessageArea" name="MessageArea" rows="10">Here is the text for this message.</TEXTAREA>
<br>
</td>
</tr>
<tr>
<td colspan="2" align="Left" valign="center">
Specify File Attachment Paths:
</td>
</tr>
<tr>
<!--Path to the file to attach to this message.-->
<td colspan="2" align="right" valign="center">
<INPUT name="my_file" type="file" size="20">
<br><br>
</td>
</tr>
<tr>
<!--This message's importance.-->
<td colspan="2" ><br>Importance Level:
<INPUT type="radio" id=optImpo name=optImpo value=0 checked>Low
<INPUT type="radio" id=optImpo name=optImpo value=1>Medium
<INPUT type="radio" id=optImpo name=optImpo value=2>High
<br></td>
<tr>
<tr>
<!--Validating Submit Button.-->
<td colspan="2" align="right" valign="center">
<INPUT type="button" value="Send" id="button1" name="button1" LANGUAGE="javascript" onclick="return button1_onclick()">
<INPUT type="reset" value="Reset" id="reset1" name="reset1">
</td>
</tr>
</TABLE>
</CENTER>
</FORM>
<SCRIPT ID="clientEventHandlersJS" LANGUAGE="javascript">
<!--
function button1_onclick() {
//Determine if there is a From address at all.
if(form1.FromBox.value =="")
{
//No from Address -Stop Submission
alert("You have not typed a From: Address.");
return;
}
//Determine if there is a To address at all.
if(form1.ToBox.value =="")
{
//No To Address -Stop Submission
alert("You have not typed a TO: Address.");
return;
}
//Determine if there is a subject at all.
if(form1.SubjectBox.value =="")
{
//No Subject - Question Submission
//Determine if they care.
var bolCancel = confirm("You have not typed a Subject continue?\n");
if(bolCancel==false)
{
//User clicked Cancel -Stop Submission
return;
}
}
if(form1.MessageArea.value =="")
{
//No Message - Question Submission
//Determine if they care.
var bolStop = confirm("You have not typed a Message continue?\n");
if(bolStop==false)
{
//User clicked Cancel -Stop Submission
return;
}
}
SubmitForm();
}
function SubmitForm()
{
//File counter for the number of files on the Form
var FileNumber = 0;
//FormMain is set to the form1 of the document
var FormMain = document.forms("form1");
//Loop counter
var i;
//Start at zero and loop until i is equal to the number of
//elements in the page. Step i +1 per loop through
for (i=0;i<FormMain.elements.length;i++)
{
if (FormMain.elements[i].name == 'my_file' && FormMain.elements[i].value.length > 0)
{
FileNumber++;
}
}
//If there are files being posted then send the file to the Posting Acceptor
//If not, skip to the send mail page with the Attachment boolean set to false.
if(FileNumber==0)
{
form1.bolAttach.value = "false"
form1.action = 'SendMail.asp';
//The encoding must be set to a different type in order to not
//use the posting acceptor.
form1.encoding = 'application/x-www-form-urlencoded';
form1.submit();
}
else
{
//There are files attached use normal submit.
form1.submit();
}
};
//-->
</SCRIPT>
</BODY>
</HTML> - Klicken Sie in Visual InterDev mit der rechten Maustaste auf den Projektnamen im Projekt-Explorer, und wählen Sie Neuer Ordner aus dem Popupmenü.
- Nennen Sie den neuen Ordner Uploaded_files .
- Öffnen Sie die Internetdienste-Manager-Konsole und suchen Sie den Uploaded_files-Ordner, den Sie erstellt haben.
- Klicken Sie mit der rechten Maustaste auf den Ordner, und klicken Sie dann auf Eigenschaften .
- Aktivieren Sie auf der Registerkarte Verzeichnis Berechtigungen mit Lese-/Schreibzugriff und klicken Sie dann auf OK .
- Schließen Sie Internet Services Manager.
- Öffnen Sie Windows Explorer und wechseln zu der MyEmailWebApp-Ordner unter Stammverzeichnis : Verzeichnis \Inetpub\Wwwroot.
- Klicken Sie mit der rechten Maustaste auf den Ordner Uploaded_files, und wählen Sie dann Eigenschaften .
- Stellen Sie auf der Registerkarte Sicherheit sicher, dass das Internetgastkonto Read/write/change Berechtigungen auf den Ordner verfügt.
- Klicken Sie auf OK , und schließen Sie Windows Explorer.
- In Visual InterDev Hinzufügen einer zweiten Seite mit dem Namen SendMail.asp in der Webanwendung.
- Löschen Sie den Code, der mit der Seite standardmäßig geliefert wird.
- Fügen Sie folgenden Code auf der Seite:
<%@ Language=VBScript %>
<HTML>
<HEAD>
<TITLE>E-mail Sent Confirmation</TITLE>
</HEAD>
<BODY>
<HR>
<%
'Dim Message Variables
Dim objMsg, strFrom, strTo, strSubject,lngImportance
'Get the values to use with the message from the post.
strFrom = lcase(Trim(Request.Form("FromBox")))
strTo = lcase(Trim(Request.Form("ToBox")))
strSubject = Request.Form("SubjectBox")
lngImportance = CInt(Request.Form("optImpo"))
'Create the Message Object
Set objMsg = Server.CreateObject("CDONTS.NewMail")
'Set the properties of the Message
objMsg.From = strFrom
objMsg.To = strTo
objMsg.Subject = strSubject
'Use the actual Request Object so that you do not over load the string Data type.
objMsg.Body = Request.Form("MessageArea")
objMsg.Importance = lngImportance
'Determine if we need to attach a file.
Dim bolAttachmentPosted
bolAttachmentPosted = CBool(Request.Form("bolAttach"))
If bolAttachmentPosted Then
'If do then where on the server can we get it
FilePathOnServer= Server.MapPath("/myEmailWebApp/uploaded_files")
FilePath_Name = FilePathOnServer & "\" & Request.Form("FileName") & Request.Form("FileExtention")
'Attach it
objMsg.AttachFile FilePath_Name
End If
'Send Message
objMsg.Send
'Destroy the object
Set objMsg = Nothing
'Determine if there is a file on the server to delete.
If bolAttachmentPosted Then
Dim FSO
'Create a File System Object
Set FSO = server.CreateObject ("Scripting.FileSystemObject")
'Delete the file from the server
FSO.DeleteFile FilePath_Name
'Destroy the object
Set FSO = Nothing
End If
'Write out results
Response.Write "The following message was sent via CDO for NTS:" & "<br>"
Response.Write "From: " & strFrom & "<br>"
Response.Write "To: " & strTo & "<br>"
Response.Write "Subject: " & strSubject & "<br>"
Response.Write "Importance: " & lngImportance & "<br>"
Response.Write "Body: " & Request.Form("MessageArea") & "<br>"
%>
</BODY>
</HTML>
- Klicken Sie auf der Symbolleiste auf Alles speichern .
- Klicken Sie mit der rechten Maustaste auf die Datei default.asp, und wählen Sie die in Browser anzeigen .
222618
(http://support.microsoft.com/kb/222618/EN-US/
)
Mithilfe von ASP und Benutzernamen mit Posting Acceptor
260317
(http://support.microsoft.com/kb/260317/EN-US/
)
Konfigurieren die Buchung Acceptor mit Remoteservern zu uploadendes
189651
(http://support.microsoft.com/kb/189651/EN-US/
)
Upload einer Datei in IIS mit einem Browser
250384
(http://support.microsoft.com/kb/250384/EN-US/
)
Buchung Acceptor AllowAnonymous uploaden Repost Fehler unter Windows
186204
(http://support.microsoft.com/kb/186204/EN-US/
)
Verwendung von CDONTS zum Erfassen und E-Mail-Informationen von einem Benutzer
177850
(http://support.microsoft.com/kb/177850/EN-US/
)
INFO: Was ist die Differenz zwischen CDO 1.2 und CDONTS?
189945
(http://support.microsoft.com/kb/189945/EN-US/
)
Gewusst wie: Senden von HTML-formatierte E-Mail über SMTP mit CDONTS