Utilização de Collaboration Data Objects para o Microsoft Windows NT Server (CDONTS) para enviar correio electrónico de páginas ASP (Active Server Pages) tornou-se muito comum. Utilizando CDONTS juntamente com outras tecnologias, pode criar uma interface baseada na Web que permite aos utilizadores enviar anexos de correio electrónico. CDONTS executa no servidor para que o anexo de ficheiro deve ser enviado para o servidor antes de pode ser anexado a mensagem de correio electrónico.
O envio de ficheiros pode ser efectuado através do Microsoft Posting Acceptor. O ' Posting Acceptor ' está instalado no servidor e permite que um cliente coloca um ficheiro para o servidor Web de computador do utilizador. Este ficheiro pode ser enviado como um anexo para o correio electrónico.
NOTA: O serviço SMTP (Simple Mail Transfer Protocol) deve ser activado e configurado para utilizar CDONTS. (Consulte a documentação dos serviços de informação Internet para obter detalhes).
Passos para anexar um ficheiro a uma mensagem
- Crie um novo projecto de aplicação Web chamado myEmailWebApp no Microsoft Visual InterDev no servidor Web com o Posting Acceptor instalado.
- Adicione uma página ASP de chamada default.asp ao projecto.
- Elimine o código que acompanha a página por predefinição.
- Adicione o seguinte código para a 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> - No Visual InterDev clique com o botão direito do rato no nome do projecto no Explorador de projecto e seleccione Nova pasta no menu de contexto.
- Nome à pasta nova Uploaded_files .
- Abra a consola ' Gerenciador de serviços de Internet ' e navegue para a pasta Uploaded_files que criou.
- Clique com o botão direito do rato na pasta e, em seguida, clique em Propriedades .
- No separador directório seleccione permissões de leitura/escrita e, em seguida, clique em OK .
- Feche o Gestor dos serviços de Internet.
- Abra o Explorador do Windows e procure a pasta MyEmailWebApp em raiz : directório \Inetpub\Wwwroot.
- Clique com o botão direito do rato na pasta Uploaded_files e, em seguida, escolha Propriedades .
- No separador segurança , certifique-se de que a conta de convidado da Internet tem permissões de leitura/escrita/alteração na pasta.
- Clique em OK e, em seguida, feche O Explorador do Windows.
- No Visual InterDev, adicione uma página segunda SendMail.asp o nome da aplicação da Web.
- Elimine o código que acompanha a página por predefinição.
- Adicione o seguinte código para a 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>
- Clique em Guardar tudo na barra de ferramentas.
- Clique com o botão direito do rato no ficheiro default.asp e, em seguida, seleccione Ver no browser .
222618
(http://support.microsoft.com/kb/222618/EN-US/
)
Utilização de ASP e nomes de utilizador com o registo Acceptor
260317
(http://support.microsoft.com/kb/260317/EN-US/
)
Configurar Acceptor registo para enviar aos servidores remoto
189651
(http://support.microsoft.com/kb/189651/EN-US/
)
Enviar um ficheiro para o IIS utilizando um browser
250384
(http://support.microsoft.com/kb/250384/EN-US/
)
Registo Acceptor AllowAnonymous enviar Repost falha no Windows
186204
(http://support.microsoft.com/kb/186204/EN-US/
)
Como utilizar CDONTS para recolher e informações de correio a partir de um utilizador
177850
(http://support.microsoft.com/kb/177850/EN-US/
)
INFO: O que é a diferença entre o CDO 1.2 e CDONTS?
189945
(http://support.microsoft.com/kb/189945/EN-US/
)
Como enviar HTML formatado correio através de SMTP utilizar CDONTS