Artikel-ID: 266452 - Geändert am: Freitag, 21. April 2006 - Version: 3.3

Gewusst wie: Senden eine Anlage in ASP mit CDONTS und der Acceptor buchen

SystemtippDieser Artikel bezieht sich auf ein anderes Betriebssystem als das von Ihnen verwendete. Für Sie möglicherweise nicht relevante Artikelinhalte wurden deaktiviert.

Auf dieser Seite

Alles erweitern | Alles schließen

Zusammenfassung

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.

Weitere Informationen

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

  1. Erstellen Sie ein neues Anwendung Webprojekt MyEmailWebApp in Microsoft Visual InterDev auf dem Server mit der Posting Acceptor aufgerufen.
  2. Fügen Sie eine ASP-Seite default.ASP aufgerufen, um das Projekt hinzu.
  3. Löschen Sie den Code, der mit der Seite standardmäßig geliefert wird.
  4. 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>
  5. Klicken Sie in Visual InterDev mit der rechten Maustaste auf den Projektnamen im Projekt-Explorer, und wählen Sie Neuer Ordner aus dem Popupmenü.
  6. Nennen Sie den neuen Ordner Uploaded_files .
  7. Öffnen Sie die Internetdienste-Manager-Konsole und suchen Sie den Uploaded_files-Ordner, den Sie erstellt haben.
  8. Klicken Sie mit der rechten Maustaste auf den Ordner, und klicken Sie dann auf Eigenschaften .
  9. Aktivieren Sie auf der Registerkarte Verzeichnis Berechtigungen mit Lese-/Schreibzugriff und klicken Sie dann auf OK .
  10. Schließen Sie Internet Services Manager.
  11. Öffnen Sie Windows Explorer und wechseln zu der MyEmailWebApp-Ordner unter Stammverzeichnis : Verzeichnis \Inetpub\Wwwroot.
  12. Klicken Sie mit der rechten Maustaste auf den Ordner Uploaded_files, und wählen Sie dann Eigenschaften .
  13. Stellen Sie auf der Registerkarte Sicherheit sicher, dass das Internetgastkonto Read/write/change Berechtigungen auf den Ordner verfügt.
  14. Klicken Sie auf OK , und schließen Sie Windows Explorer.
  15. In Visual InterDev Hinzufügen einer zweiten Seite mit dem Namen SendMail.asp in der Webanwendung.
  16. Löschen Sie den Code, der mit der Seite standardmäßig geliefert wird.
  17. 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>
    					
  18. Klicken Sie auf der Symbolleiste auf Alles speichern .
  19. Klicken Sie mit der rechten Maustaste auf die Datei default.asp, und wählen Sie die in Browser anzeigen .

Informationsquellen

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

Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Visual InterDev 6.0 Standard Edition, wenn verwendet mit:
    • the operating system: Microsoft Windows 2000
    • Microsoft Windows NT 4.0
Keywords: 
kbmt kbhowto kbsample kbscript KB266452 KbMtde
Maschinell übersetzter ArtikelMaschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 266452  (http://support.microsoft.com/kb/266452/en-us/ )
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.