Tutorial ASP Tutorial de ASPEmail (Ampliado)
Este articulo ha sido ledo 117,050 veces
Tutorial de ASPEmail
Colaboracin enviada por
Qu es AspEmail? AspEmail es un componente activo del servidor, creado por Persists Software, Inc, que sirve para mandar mensajes de correo electrnico usando un servidor SMTP externo desde entornos como ASP y Visual Basic. Instalacin Pregunta al administrador de tu sitio web si disponen de ese componente. Si no es el caso pero te da permiso para instalar dlls propios en el servidor, puedes descargar la versin gratuita pero con ciertas limitaciones desde http://www.aspemail.com/, en su seccin download. Una vez lo tengas en tu ordenador, instlalo y enva al adminstrador el archivo AspEmail.dll solicitndole que lo registre. Este archivo suele encontrarse, despus de la instalacin en un directorio parecido a este: c:\archivos de programa\Persits Software\AspEmail\BIN\. (Nota: Estos pasos son slo una indicacin ya que es muy fcil que estos pasos puedan variar de un ordenador a otro y de un servidor web a otro)
Cmo se usa AspEmail en ASP Ya he comentado que AspEmail es un componente del servidor, por lo tanto debes crear una instancia del mismo en ASP Esto se hace as:
Set Mail = Server.CreateObject(Persits.MailSender)
Lo siguiente es configurar las opciones elementales como el servidor SMTP
Mail.Host = smtp.tuservidor.com
Tambin puedes especificar varios Servidores SMTP por si alguno no funciona en ese momento. Esto se hace indicando a la propiedad Host varios servidores separados por ;.
Mail.Host = smtp.tuservidor.com;smtp2.tuservidor.com;smtp.otroservidor.com
Otra propiedad indispensable es el email de quien enva el mensaje:
Mail.From =
[email protected]Y si lo deseas (es opcional) el nombre del mismo:
Mail.FromName = Departamento de ventas
A continuacin le indicamos a quin debe mandar el mensaje, ya sea como Direccin Original o bien como Carbon Copy. Algunos ejemplos:
Mail.AddAddress [email protected] En el siguiente ejemplo, el parmetro Nombre del destinatario es opcional MailAddAddress [email protected], Nombre del destinatario MailAddCC [email protected] Destinatario de la copia
Nota: Fjate que ah no hemos usado el signo =. Esto es porque es un mtodo, no una propiedad del componente. Saber esto te ser til cuando consultes la referencia de AspMail Tambin es importante, aunque no imprescindible, indicarle un ttulo al mensaje
Mail.Subject Titulo del mensaje
Y por supuesto, siempre es conveniente escribir algo en el cuerpo del mensaje
Mail.Body = Estimado Amigo, & chr(13) & chr(10) & Gracias por tu coperacin
Incluso puedes mandarlo usando HTML con slo indicar una propiedad ms
Mail.Body =<html><body bgcolor=#DDDDDD>Estimado Amigo,...</BODY></HTML> Mail.IsHTML = True
Ya slo nos falta enviar el mensaje, usando el mtodo Send (enviar). Puede que hacer esto falle en algn momento por lo que es una buena costumbre usar On Error Resume Next en tu cdigo. Por ejemplo:
On Error Resume Next Mail.Send
If Err <> 0 Then Response.Write Ha ocurrido un error: & Err.Description Else Response.Write Mensaje enviado con xito End if Ejemplo til de AspEmail A continuacin te mostramos mediante la cual, y slo con pasarle algunos parmetros, te permitir enviar un correo electrnico.
<% Function Correo(From,FromName,Address,AddressName,Subject,Body) Dim Mail On Error Resume Next Set Mail = Server.CreateObject("Persits.MailSender") Mail.Host = "mail.tuservidor.com" Mail.ContentTransferEncoding = "Quoted-Printable" Mail.From = From
Mail.FromName = Mail.EncodeHeader(FromName) Mail.AddAddress Address, Mail.EncodeHeader(AddressName) Mail.Subject = Mail.EncodeHeader(Subject) Mail.Body = Body Mail.SendToQueue If Err <> 0 Then Correo = Err.Description Else Correo = "" End If End Function %>
Los parmetros de la funcin son: From FromName Address AddressName Subject Body Direccin de correo del remitente Nombre del remitente Direccin de correo del destinatario Nombre del destinatario Asunto del correo que se quiere enviar Cuerpo del mensaje que se quiere enviar
Si esta funcin se encuentra en un archivo llamado "correo.inc", dentro del directorio /utilidades, para enviar un correo bastar con hacer algo como lo que sigue:
<!--#include virtual="/utilidades/correo.inc"--> <% strError = Correo("[email protected]","Webmaster de la Ciberteca","[email protected]","Tu Nombre", "Buen tutorial","Muchas gracias por el tutorial de ASPEmail, me ha sutado mucho") if len(strError) > 0 then Response.Write "<b>Se ha producido un error al enviar el email</b><br>" & strError else Response.Write "Email enviado con xito". end if %>
Como puedes observar, si se produce un error, la variable strError almacenar una descripcin del motivo que lo ha causado. Esta caraterstica la usamos para advertir al usuario del xito o fracaso de la operacin. Este ejemplo te puede ser muy til para enviar formularios, emails recomendando la pgina web, pequeas listas de correo y muchas otras posibilidades. Referencia anotada del componente AspEmail en espaol Aqu tienes una referencia con las propiedades, los mtodos y los cdigos de error ms importantes del componente. Recuerda que antes de enviar el mensaje debes haber completado todas las propiedades Requeridas que se indican y que slo podrs usar las caractersticas premium si adquiere la versin comercial del producto, no la gratuita. Propiedades del Componente Propiedad y Tipo Host As String Comentarios Requerido. La direccin del servidor
Port As Integer
From As String
FromName As String Subject As String Body As String
IsHTML As Boolean
Priority As Integer
SMTP que se usar para enviar mensajes. El nmero de Puerto de SMTP 25 por defecto. (No conviene modificarlo, el puerto 25 es el que suelen usar todos los servidores) Requerido. La direccin de correo electrnico de quien enva este mensaje. El nombre de quien enva este email. El ttulo del mensaje. El cuerpo del Mensaje. Puede enviarse como slo texto o bien en formato HTML si se pone la propiedad IsHTML a Verdadero (True). (Con esto consigues que tus mensajes queden ms bonitos. La pega es que algunos lectores de correo no permiten la visualizacin de HTML) Est a Falso (False) por defecto pero la tienes que cambiar a Verdadero (True) si quieres enviar HTML en vez de texto simple en el cuerpo de tu mensaje. Prioridad del mensaje: 1 Alta 3 Normal 5 Baja
Por defecto est a 0 que significa que no se indica prioridad. Helo As String Esta cadeba de texto identifica al cliente frente al servidor SMTP. Por defecto es"AspEmail (y no conviene modificarlo) ContentTransferEncoding As String Especifica la codifiacin de la cabecera MIME para el cuerpo del mensaje.. Tienes tres opciones: 7bit (por defecto). 8bit quoted-printable, convierte el cuerpo del mensaje al formato Quoted-Printable especificado en la RFC-2045 (las RFC son donde se indican las especificaciones de Internet)
Esta propiedad es til cuando se envan mensaje en un idioma distinto al ingls (como el espaol, por ejemplo).
CharSet As String
Esto es una caracterstica premium. Especifica los carcteres usados por la cabera MIME. Por defecto "ISO-8859-1" Esto es una caracterstica premium. Es el Nombre de Usuario. Debes usar las propiedades Username/Password si tu servidor SMTP requiere que el cliente le suministre parmetros de autentificacin. Esto es una caracterstica premium. Clave. Debes usar las propiedades Username/Password si tu servidor SMTP requiere que el cliente le suministre parmetros de autentificacin. Esto es una caracterstica premium.
Username As String
Password As String
Mtodos de AspEmail Method Name AddAddress Arguments Email As String, Optional Nombre Comments Aade una direccin de email a los destinatarios. El nombre del destinatario es opcional. Aade una direccin de email a los destinatarios de copias Cc:. El nombre del destinatario es opcional. Muy parecido al anterior pero con Bcc: Muy parecido al anterior pero con Reply-To: Aadir archivo adjunto. El Path debe indicar la localizacin absoluta (ejemplo: c:\temporal\archivo.xls) dentro del servidor. Rellena la propiedad Body con el texto o el HTML de un archivo especificado en Path. Esto es una caracterstica premium. Enva el mensaje.
AddCC
Email As String, Optional Nombre
AddBcc AddReplyTo AddAttachment
Email As String, Optional Name Email As String, Optional Name Path As String
AppendBodyFromFile Path As String
Send
Ninguno
Reset
Ninguno
ResetAll
Ninguno
EncodeHeader
Header as String Devuelve: String
Pueden producir errores por lo que es recomendable usar On Error Resume Next Limpia todas la lista de direcciones asi como la lista de todos los archivos adjuntos incluidos. Hace lo mismo que el mtodo Reset pero adems pone todas las propiedades a sus valores por defecto. Codifica una cadena que contenga caracteres ASCII mayors de 127 segn las directrices de la RFC 1522. Debes usar este mtodo para codificar el ttulo, el nombre del receptor o el nombre del servidor. Por ejemplo: MailSubject = Mail.EncodeHeader(Espaa mola un montn)
Cdigos de error Error Code 1 2 3 4 5 6 7 8 9 10 13 Description Fall la inicializacin de Winsock. Fall gethostbyname. Fall la creacin del Socket creation. Fall la conexin. Fall al enviar datos. Error devuelto por el servidor SMTP Fall al abrir un fichero. Memoria insuficiente Fall al leer de un fichero. Servidor SMTP no especificado Valor no permitido de la prioridad.
Tutorial ASP Como hacer upload de ficheros al servidor
Este articulo ha sido ledo 102,306 veces
Subir ficheros al servidor mediante ASP
Colaboracin enviada por Alvaro Miguel Este ejemplo nos muestra como subir un fichero desde el disco duro del cliente a un directorio de nuestro servidor; consta de un solo modulo que realiza las funciones de seleccin del fichero para upload (case 1) y las de la transmisin propiamente dicha (case 2) saveany.asp
<%@LANGUAGE="VBSCRIPT"%> <%response.buffer=true Func = Request("Func") if isempty(Func) Then Func = 1 End if Select Case Func Case 1 %> <table width="360" border="0" align="center"> <tr> <td> <div align="center">Selecciona una imagen para subir. </div> </td> </tr> </table> <FORM ENCTYPE="multipart/form-data" ACTION="saveany.asp?func=2" METHOD=POST id=form1 name=form1> <TABLE align="center"> <TR> <TD> </TD> </TR> <TR> <TD><font color="#330066" size="2">Pulsa en el botn examinar y elige el archivo de tu ordenador.<BR> <BR> </font></TD> </TR> <TR> <TD><font color="#330066" size="2">Luego pulsa el botn subir.<BR> <BR> </font></TD> </TR> <TR> <TD><STRONG><font color="#330066" size="2">Nombre del archivo...</font></STRONG></TD> </TR> <TR> <TD> <font size="2"> <INPUT NAME=File1 SIZE=30 TYPE=file> <BR> </font></TD> </TR> <TR>
<TD align=left> <INPUT type="submit" value="Subir"> <BR> <BR> </TD> </TR> <TR> <TD><font color="#330066" size="2">NOTA: Espera, recibirs una notificacin cuando el archivo haya sido subido</font><font size="2">.<BR> <BR> </font></TD> </TR> </TABLE> <% Case 2 ForWriting = 2 adLongVarChar = 201 lngNumberUploaded = 0 'Get binary data from form noBytes = Request.TotalBytes binData = Request.BinaryRead (noBytes) 'convery the binary data to a string Set RST = CreateObject("ADODB.Recordset") LenBinary = LenB(binData) if LenBinary > 0 Then RST.Fields.Append "myBinary", adLongVarChar, LenBinary RST.Open RST.AddNew RST("myBinary").AppendChunk BinData RST.Update strDataWhole = RST("myBinary") End if 'Creates a raw data file for with all da ' ta sent. Uncomment for debuging. 'Set fso = CreateObject("Scripting.FileSystemObject") 'Set f = fso.OpenTextFile(server.mappath(".") & "\raw.txt", ForWriting, True) 'f.Write strDataWhole 'set f = nothing 'set fso = nothing 'get the boundry indicator strBoundry = Request.ServerVariables ("HTTP_CONTENT_TYPE") lngBoundryPos = instr(1,strBoundry,"boundary=") + 8 strBoundry = "--" & right(strBoundry,len(strBoundry)-lngBoundryPos) 'Get first file boundry positions. lngCurrentBegin = instr(1,strDataWhole,strBoundry) lngCurrentEnd = instr(lngCurrentBegin + 1,strDataWhole,strBoundry) - 1 Do While lngCurrentEnd > 0 'Get the data between current boundry an ' d remove it from the whole. strData = mid(strDataWhole,lngCurrentBegin, lngCurrentEnd - lngCurrentBegin) strDataWhole = replace(strDataWhole,strData,"") 'Get the full path of the current file. lngBeginFileName = instr(1,strdata,"filename=") + 10 lngEndFileName = instr(lngBeginFileName,strData,chr(34)) 'Make sure they selected at least one fi ' le. if lngBeginFileName = lngEndFileName and lngNumberUploaded = 0 Then Response.Write "<H2> Ha ocurrido el siguiente error.</H2>" Response.Write "Debes elegir un archivo para subir" Response.Write "<BR><BR>Pulsa el botn volver, realiza la correccin." Response.Write "<BR><BR><INPUT type='button' onclick='history.go(-1)' value='<< Volver' id='button'1 name='button'1>"
Response.End End if 'There could be one or more empty file b ' oxes. if lngBeginFileName <> lngEndFileName Then strFilename = mid(strData,lngBeginFileName,lngEndFileName - lngBeginFileName) 'Creates a raw data file with data betwe ' en current boundrys. Uncomment for debug ' ing. 'Set fso = CreateObject("Scripting.FileSystemObject") 'Set f = fso.OpenTextFile(server.mappath(".") & "\raw_" & lngNumberUploaded & ".txt", ForWriting, True) 'f.Write strData 'set f = nothing 'set fso = nothing 'Loose the path information and keep jus ' t the file name. tmpLng = instr(1,strFilename,"\") Do While tmpLng > 0 PrevPos = tmpLng tmpLng = instr(PrevPos + 1,strFilename,"\") Loop FileName = right(strFilename,len(strFileName) - PrevPos) 'Get the begining position of the file d ' ata sent. 'if the file type is registered with the ' browser then there will be a Content-Typ 'e lngCT = instr(1,strData,"Content-Type:") if lngCT > 0 Then lngBeginPos = instr(lngCT,strData,chr(13) & chr(10)) + 4 Else lngBeginPos = lngEndFileName End if 'Get the ending position of the file dat ' a sent. lngEndPos = len(strData) 'Calculate the file size. lngDataLenth = lngEndPos - lngBeginPos 'Get the file data strFileData = mid(strData,lngBeginPos,lngDataLenth) 'Create the file. Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.OpenTextFile(server.mappath("..") & "\TuDirectorio\" &_ FileName, ForWriting, True) f.Write strFileData Set f = nothing Set fso = nothing lngNumberUploaded = lngNumberUploaded + 1 End if 'Get then next boundry postitions if any '. lngCurrentBegin = instr(1,strDataWhole,strBoundry) lngCurrentEnd = instr(lngCurrentBegin + 1,strDataWhole,strBoundry) - 1 loop
Response.Write "Archivo subido"
Response.Write lngNumberUploaded & " archivo ya est en el servidor.<BR>" Response.Write "<BR><BR><INPUT type='button' onclick='document.location=" & chr(34) & "saveany.asp" & chr(34) & "' value='<< Volver' id='button'1 name='button'1>" End Select %> </BODY> </HTML>
Tutorial ASP
Este articulo ha sido ledo 101,157 veces
Un Contador de visitas
Contador de visitas a nuestra aplicacin utilizaremos para llevar el control de visitas una variable del objeto application. Esta variable la inicializaremos a cero en global.asa cuando iniciemos la aplicacin (application_onstart) y la iremos incrementando en uno cada vez que un nuevo visitante entre en la aplicacin , capturaremos esta entrada en el evento session_onstart tambien en globla asa. Luego simplemente en nuestras pginas mostraremos el numero almacenado en la variable de aplicacin.
global.asa
<SCRIPT LANGUAGE="VBScript" RUNAT="Server"> Sub Application_OnStart application("visitas")=0 application("fecha")=date() End Sub Sub Application_OnEnd End Sub Sub Session_OnStart application.lock application("visitas")=application("visitas")+1 application.unlock End Sub Sub Session_OnEnd End Sub </SCRIPT>
mipagina.asp
<html> ........ Eres el visitante n :<%=application("visitas")%> desde el dia <%=application("fecha")%> ..... </html>
Tutorial ASP Un contador de usuarios activos
Este articulo ha sido ledo 71,382 veces
Contador de visitantes activos Utilizaremos para llevar el control de visitantes activos una variable del objeto application. Esta variable la inicializaremos a cero en global.asa cuando iniciemos la aplicacin (application_onstart) y la iremos incrementando en uno cada vez que un nuevo visitante entre en la aplicacin , capturaremos esta entrada en el evento session_onstart tambien en globla asa. Reduciremos en uno el numero de vistante cada vez que uno de ellos abandone nuestra aplicacin, esto lo sabremos gracias al evento session_onend Luego simplemente en nuestras pginas mostraremos el numero almacenado en la variable de aplicacin.
global.asa
<SCRIPT LANGUAGE="VBScript" RUNAT="Server"> Sub Application_OnStart application("vactivos")=0 application("fecha")=date() End Sub Sub Application_OnEnd End Sub Sub Session_OnStart application.lock application("vactivos")=application("vactivos")+1 application.unlock End Sub Sub Session_OnEnd application.lock application("vactivos")=application("vactivos")-1 application.unlock End Sub </SCRIPT>
mipagina.asp
<html> ........ Sois actualmente <%=application("vactivos")%> visitantes concurrentes
..... </html>
Tutorial ASP Como Imprimir desde un enlace
Este articulo ha sido ledo 66,845 veces
Imprimir desde un enlace en la pgina No se si alguno tendris alguna vez la necesidad de imprimir desde un enlace en la pgina, si es as, aqu tenis unos ejemplos de como hacerlo. Antes de nada, tenemos que averiguar que tipo de explorador tiene el cliente ( como es "normal", cada uno funciona de forma distinta). Si el cliente es Netscape o Explorer 5.x, es facil solo hay que hacer una llamada a la funcin print() de Javascript Ejemplo IE5.x Netscape:
<a href="javascript:print()"><font color="#0000FF">Imprimir </font></a>
Si el cliente es Explorer 4.x la cosa es un poco mas complicada, esta versin hace la impresin por medio de un componente ActiveX que reside en la maquina del cliente, por lo cual nos toca hacer una instancia de dicho componente y luego llamarlo Ejemplo IE4.x: Declaracin del objeto en IE4.x
<OBJECT ID="WB" WIDTH="0" HEIGHT="0" CLASSID="clsid:8856F961-340A-11D0-A96B00C04FD705A2"></OBJECT> <SCRIPT LANGUAGE="VBScript"> <!-Function window_onunload On Error Resume Next Set WB = nothing End Function Sub vbPrintPage() OLECMDID_PRINT = 6 OLECMDEXECOPT_DONTPROMPTUSER = 6 OLECMDEXECOPT_PROMPTUSER = 1 On Error Resume Next WB.ExecWB OLECMDID_PRINT,OLECMDEXECOPT_PROMPTUSER End Sub --> </SCRIPT>
LLamada al objeto declarado:
<a href="#" onclick="vbPrintPage()"><font color="#0000FF">Imprimir </font>
Como averiguar cual es el explorador cliente
Existen varias formas de averiguarlo usando Javascript, la forma que os muestro a continuacin es usando ASP (ya que estas pginas van sobre ASP, no?). Esta informacin la podemos encontrar en examinando:
Request.ServerVariables("HTTP_USER_AGENT")
Un ejemplo completo
Nota: como en IE5.x y Netscape se imprime de la misma forma, lo que nos interesa averiguar es la excepcin, o sea, IE4.x
<html> <head> <title>xxxxxxxxx</title> </head> <%nav=Request.ServerVariables("HTTP_USER_AGENT") cadenabuscada="MSIE 4" for i = 1 to len(nav) if mid(nav,i,1)= "M" then xx=mid(nav,i,(len(cadenabuscada))) if xx=cadenabuscada then nav="IE4" exit for end if end if next if nav="IE4" then %> <OBJECT ID="WB" WIDTH="0" HEIGHT="0" CLASSID="clsid:8856F961-340A-11D0-A96B00C04FD705A2"></OBJECT> <SCRIPT LANGUAGE="VBScript"> <!-Function window_onunload On Error Resume Next Set WB = nothing End Function Sub vbPrintPage() OLECMDID_PRINT = 6 OLECMDEXECOPT_DONTPROMPTUSER = 6 OLECMDEXECOPT_PROMPTUSER = 1 On Error Resume Next WB.ExecWB OLECMDID_PRINT,OLECMDEXECOPT_PROMPTUSER End Sub --> </SCRIPT> <%end if%> <body> <%if nav="IE4" then%>
<a href="#" onclick="vbPrintPage()"><font color="#0000FF">Imprimir </font></a></td> <%else%> <a href="javascript:print()"><font color="#0000FF">Imprimir </font></a></td> <%end if%>
</body> </html>
Tutorial ASP Formato de fechas en SQL Server
Este articulo ha sido ledo 98,004 veces
Formato de fechas en SQL Server Colaboracin enviada por Bernardo Flores Gonzlez Formato para comparar fechas con Sql server 6.5 y 7.0, independiente de la configuracin regional del server. Select * from tabla where fecha = 'yyyymmdd'
Al especificar esta forma ya no se depende de la configuracin regional, si utilizamos fechas con hora (datetime) entonces le agregamos la hora Select * from tabla where fecha = 'yyyymmdd HH:mm:ss'
(HH: significa formato de 24 horas) Con VB en ASP podemos utilizar lo siguiente
FechaAux = right("0000"&year(date()),4)&right("00"&month(date()),2)&right("00"&day(date()),2) Sql = "Select * from tabla where fecha = '" & FechaAux & "' " FechaAux = right("0000"&year(date()),4)&right("00"&month(date()),2)&right("00"&day(date()),2)&" 00:00:00" Sql = "Select * from tabla where fecha = '" & FechaAux & "' "
De esta forma el manejo de la fecha es independiente de la configuracin del server. Si se desea obtener todos los registros a una fecha dada y la fecha es almacenada con hora debera ser mas o menos as
FechaIni = date() FechaIni = right("0000"&year(FechaIni),4)&right("00"&month(FechaIni),2)&right("00"&day(FechaIni),2) & " 00:00:00" FechaFin = date() FechaFin = right("0000"&year(FechaFin),4)&right("00"&month(FechaFin),2)&right("00"&day(FechaFin),2) & " 23:59:59" o FechaFin = dateadd("d",1,date())
FechaFin = right("0000"&year(FechaFin),4)&right("00"&month(FechaFin),2)&right("00"&day(FechaFin),2) & " 00:00:00" Sql = "Select * from tabla where fecha >= '" & FechaIni & "' and fecha <= '" & FechaFin & "' "