ID do artigo: 266452 - Última revisão: sexta-feira, 21 de abril de 2006 - Revisão: 3.3

Como enviar um anexo em ASP usando CDONTS e Acceptor postagem

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Recolher tudo

Sumário

Uso de Collaboration Data Objects para Microsoft Windows NT Server (CDONTS) para enviar email de páginas Active Server Pages (ASP) tornou-se muito comuns. Usando CDONTS juntamente com outras tecnologias, você pode criar uma interface baseada na Web que permite aos usuários enviar anexos com seus emails. CDONTS executa no servidor para que o anexo de arquivo deve ser carregado no servidor antes de poder ser associado ao email.

O carregamento de arquivo pode ser feito por meio do Microsoft Posting Acceptor. O Posting Acceptor é instalado no servidor e permite que um cliente enviar um arquivo para o servidor Web do computador do usuário. Este arquivo, em seguida, pode ser enviado como um anexo ao email.

Mais Informações

Observação: O serviço SMTP (Simple Mail Transfer Protocol) deve ser ativado e configurado para usar o CDONTS. (Consulte a documentação do IIS para obter detalhes.)

Etapas para anexar um arquivo a uma mensagem

  1. Crie um novo projeto de aplicativo Web chamado myEmailWebApp em Microsoft Visual InterDev no servidor Web com Posting Acceptor instalado.
  2. Adicione uma página ASP chamada default.asp para o projeto.
  3. Exclua o código que vem com a página por padrão.
  4. Adicione o seguinte código à página:
    <%@ 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. No Visual InterDev clique com o botão direito do mouse no nome do projeto no Explorador de projeto e escolha Nova pasta a partir do menu pop-up.
  6. Nomeie a nova pasta Uploaded_files .
  7. Abra o Console Gerenciador de serviços de Internet e navegue até a pasta Uploaded_files que você criou.
  8. Clique com o botão direito na pasta e, em seguida, clique em Propriedades .
  9. Na guia Directory selecione permissões de leitura/gravação e, em seguida, clique em OK .
  10. Feche o Gerenciador de serviços da Internet.
  11. Abra o Windows Explorer e navegue para a pasta MyEmailWebApp sob a raiz : diretório \Inetpub\Wwwroot.
  12. Clique com o botão direito na pasta Uploaded_files e escolha Propriedades .
  13. Na guia segurança Verifique se a conta de convidado da Internet tem permissões de leitura/gravação/alteração na pasta.
  14. Clique em OK e feche o Windows Explorer.
  15. No Visual InterDev, adicione uma segunda página chamada SendMail.asp ao aplicativo Web.
  16. Exclua o código que vem com a página por padrão.
  17. Adicione o seguinte código à página:
    <%@ 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. Clique em Salvar tudo na barra de ferramentas.
  19. Clique com o botão direito no arquivo default.asp e selecione View in Browser .

Referências

222618  (http://support.microsoft.com/kb/222618/EN-US/ ) Usando o ASP e nomes de usuário com Posting Acceptor
260317  (http://support.microsoft.com/kb/260317/EN-US/ ) Configurando o Posting Acceptor para carregar com servidores remotos
189651  (http://support.microsoft.com/kb/189651/EN-US/ ) Carregando um arquivo para o IIS usando um navegador
250384  (http://support.microsoft.com/kb/250384/EN-US/ ) Lançamento Acceptor AllowAnonymous carregar Repost falha no Windows
186204  (http://support.microsoft.com/kb/186204/EN-US/ ) Como usar o CDONTS para coletar e as informações de email de um usuário
177850  (http://support.microsoft.com/kb/177850/EN-US/ ) INFO: O que é a diferença entre CDO 1.2 e CDONTS?
189945  (http://support.microsoft.com/kb/189945/EN-US/ ) Como enviar HTML mensagem formatada em SMTP usando CDONTS

A informação contida neste artigo aplica-se a:
  • Microsoft Visual InterDev 6.0 Standard Edition nas seguintes plataformas
    • the operating system: Microsoft Windows 2000
    • Microsoft Windows NT 4.0
Palavras-chave: 
kbmt kbhowto kbsample kbscript KB266452 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 266452  (http://support.microsoft.com/kb/266452/en-us/ )