Foros del Web » Programando para Internet » ASP Clásico »

no adjunto archivo al enviar mail

Estas en el tema de no adjunto archivo al enviar mail en el foro de ASP Clásico en Foros del Web. Hola! Porque al enviar un mail no se me adjunta el fichero que yo quiero? Set oMail = Server.CreateObject("CDONTS.NewMail") oMail.To = rs("corrElec") oMail.From = request.Form("orig") ...
  #1 (permalink)  
Antiguo 03/02/2006, 11:24
 
Fecha de Ingreso: octubre-2003
Mensajes: 184
Antigüedad: 20 años, 7 meses
Puntos: 0
no adjunto archivo al enviar mail

Hola!

Porque al enviar un mail no se me adjunta el fichero que yo quiero?

Set oMail = Server.CreateObject("CDONTS.NewMail")
oMail.To = rs("corrElec")
oMail.From = request.Form("orig")
oMail.Subject = request.Form("asun")
oMail.AttachFile =request.Form("fich")
oMail.Body = request.Form("men")
oMail.Send
Set oMail = nothing

lee bien el nombre del fichero, existe el fichero, etc...
  #2 (permalink)  
Antiguo 03/02/2006, 11:36
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 meses
Puntos: 7
Tienes que hacer algo asi:

1 - Una vez recibido el POST con el enctype 'multipart/form-data' guarda los datos de texto en variables y el archivo de "fich" guardarlo en el servidor con algun componente upload.

2 - Una vez hecho esto, ya puedes adjuntarlo al objeto CDONTS.

Esto es así porque lo que hay en request.Form("fich") no es un fichero propiamente dicho, sino un conjunto de datos binarios debidamente ordenados con una cabecera de tipo Content-Type donde dice lo que es realmente (jpg, gif, exe, zip, etc) No es un archivo hasta que se "re-crea" en un servidor (dirección http, sea en donde este el script que lo llama o no) y es "físicamente" accesible.

Bueno, no se si me he explicado debidamente.



Un saludo
  #3 (permalink)  
Antiguo 03/02/2006, 12:35
 
Fecha de Ingreso: octubre-2003
Mensajes: 184
Antigüedad: 20 años, 7 meses
Puntos: 0
como lo guardo con upload?
  #4 (permalink)  
Antiguo 03/02/2006, 12:44
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 meses
Puntos: 7
Usa el buscador de foro. Hay multitud de post sobre el tema.




Un saludo
  #5 (permalink)  
Antiguo 05/02/2006, 06:48
 
Fecha de Ingreso: octubre-2003
Mensajes: 184
Antigüedad: 20 años, 7 meses
Puntos: 0
Ya he mirado los post antes de preguntar en el foro pero no me aclaro.

Yo tengo hecho esto:
Un formulario con los siguientes campos:

<form action="envProf2.asp" name="envCor" method="post">
Para: <input type="text" name="dest" size="100">
De: <input type="text" name="orig" size="100" value=<%=Response.Write(RS("corrElec"))%>>
Tema: <input type="text" name="asun" size="100>
Adjuntar archivo: <input type="file" name="fich" size="60">
<textarea cols="85" rows="15" name="men"></textarea>
<input type="submit" name="Enviar" value="Enviar" size="30">
<input type="reset" name="Borrar" value="Borrar" size="30">
</form>

En la siguiente pagina, es decir donde leo los campos del formulario que tendria que hacer el subir el fichero y cargar los campos del formulario en variables o subir el fichero por una parte y por otra (en otra pagina) cargar los campos del formulario..

Gracias y siento dar tanto la vara
  #6 (permalink)  
Antiguo 05/02/2006, 07:35
Avatar de tomchat  
Fecha de Ingreso: septiembre-2005
Mensajes: 231
Antigüedad: 18 años, 9 meses
Puntos: 0
MIra este codigo

Yo lo he creado y me funciona bien.

<html>
<head>
<title></title>
</head>
<body background="images/bgfondo.jpg">
<!--#include file="upload.asp"-->
<%
Response.Expires = -1
Server.ScriptTimeout = 600
'Aqui se crear el objeto
Set Uploader = New FileUploader
Uploader.Upload()

origen = Uploader.Form("origen"): nombres = Uploader.Form("nombres")
asunto = Uploader.Form("asunto"): mensaje = Uploader.Form("mensaje")

If nombres = "" Then nombres = "Desconocido"

mensaje = "<font color=#003366 size=3 face=Arial>Mensaje Enviado Por:" & nombres & "<BR><BR>" & mensaje

If Uploader.Files.Count = 0 Then
Response.Write "File(s) not uploaded."
Else
For Each File In Uploader.Files.Items
File.SaveToDisk Server.MapPath("archivos/mail")
numSize = File.FileSize: NameFile = File.FileName
'aqui la ruta de tu arhchivo q has subido
RutaFile = "C:\Inetpub\wwwroot\mi carpeta\archivos\mail\" & NameFile
'NameFile = "../archivos/mail/" & NameFile
Next
End If

Set myMail = Server.createObject("CDO.Message")
Set Config = Server.createObject ("CDO.Configuration")

With Config
.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "www.alumnos.abaco-corp.edu.pe"
.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Fields("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
.Fields.update
End With

Set myMail.Configuration = Config
myMail.Subject = asunto
myMail.From = origen
myMail.To = "[email protected]"
myMail.HtmlBody = mensaje
myMail.AddAttachment RutaFile
myMail.Send
set myMail=nothing

'aqui yo borro el archivo x q ya no lo necesito

Function BorrarArchivo(archivo)
dim fs
Set fs = Server.CreateObject("Scripting.FileSystemObject")
if fs.FileExists(archivo) then fs.DeleteFile(archivo)
Set fs = Nothing
End function


BorrarArchivo(RutaFile)
%>
<script>document.location.href="ver_mensaje_mail.a sp?id=2";</script>
</body>
<html>
  #7 (permalink)  
Antiguo 05/02/2006, 07:37
Avatar de tomchat  
Fecha de Ingreso: septiembre-2005
Mensajes: 231
Antigüedad: 18 años, 9 meses
Puntos: 0
Codigo del Upload

Y este es el codigo del UPload, el cual llamas

<%
Class FileUploader
Public Files
Private mcolFormElem

Private Sub Class_Initialize()
Set Files = Server.CreateObject("Scripting.Dictionary")
Set mcolFormElem = Server.CreateObject("Scripting.Dictionary")
End Sub

Private Sub Class_Terminate()
If IsObject(Files) Then
Files.RemoveAll()
Set Files = Nothing
End If
If IsObject(mcolFormElem) Then
mcolFormElem.RemoveAll()
Set mcolFormElem = Nothing
End If
End Sub

Public Property Get Form(sIndex)
Form = ""
If mcolFormElem.Exists(LCase(sIndex)) Then Form = mcolFormElem.Item(LCase(sIndex))
End Property

Public Default Sub Upload()
Dim biData, sInputName
Dim nPosBegin, nPosEnd, nPos, vDataBounds, nDataBoundPos
Dim nPosFile, nPosBound

biData = Request.BinaryRead(Request.TotalBytes)
nPosBegin = 1
nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(13)))

If (nPosEnd-nPosBegin) <= 0 Then Exit Sub

vDataBounds = MidB(biData, nPosBegin, nPosEnd-nPosBegin)
nDataBoundPos = InstrB(1, biData, vDataBounds)

Do Until nDataBoundPos = InstrB(biData, vDataBounds & CByteString("--"))

nPos = InstrB(nDataBoundPos, biData, CByteString("Content-Disposition"))
nPos = InstrB(nPos, biData, CByteString("name="))
nPosBegin = nPos + 6
nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(34)))
sInputName = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
nPosFile = InstrB(nDataBoundPos, biData, CByteString("filename="))
nPosBound = InstrB(nPosEnd, biData, vDataBounds)

If nPosFile <> 0 And nPosFile < nPosBound Then
Dim oUploadFile, sFileName
Set oUploadFile = New UploadedFile

nPosBegin = nPosFile + 10
nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(34)))
sFileName = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
oUploadFile.FileName = Right(sFileName, Len(sFileName)-InStrRev(sFileName, "\"))

nPos = InstrB(nPosEnd, biData, CByteString("Content-Type:"))
nPosBegin = nPos + 14
nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(13)))

oUploadFile.ContentType = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))

nPosBegin = nPosEnd+4
nPosEnd = InstrB(nPosBegin, biData, vDataBounds) - 2
oUploadFile.FileData = MidB(biData, nPosBegin, nPosEnd-nPosBegin)

If oUploadFile.FileSize > 0 Then Files.Add LCase(sInputName), oUploadFile
Else
nPos = InstrB(nPos, biData, CByteString(Chr(13)))
nPosBegin = nPos + 4
nPosEnd = InstrB(nPosBegin, biData, vDataBounds) - 2
If Not mcolFormElem.Exists(LCase(sInputName)) Then mcolFormElem.Add LCase(sInputName), CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
End If

nDataBoundPos = InstrB(nDataBoundPos + LenB(vDataBounds), biData, vDataBounds)
Loop
End Sub

'String to byte string conversion
Private Function CByteString(sString)
Dim nIndex
For nIndex = 1 to Len(sString)
CByteString = CByteString & ChrB(AscB(Mid(sString,nIndex,1)))
Next
End Function

'Byte string to string conversion
Private Function CWideString(bsString)
Dim nIndex
CWideString =""
For nIndex = 1 to LenB(bsString)
CWideString = CWideString & Chr(AscB(MidB(bsString,nIndex,1)))
Next
End Function
End Class

Class UploadedFile
Public ContentType
Public FileName
Public FileData

Public Property Get FileSize()
FileSize = LenB(FileData)
End Property

Public Sub SaveToDisk(sPath)
Dim oFS, oFile
Dim nIndex

If sPath = "" Or FileName = "" Then Exit Sub
If Mid(sPath, Len(sPath)) <> "\" Then sPath = sPath & "\"

Set oFS = Server.CreateObject("Scripting.FileSystemObject")
If Not oFS.FolderExists(sPath) Then Exit Sub

Set oFile = oFS.CreateTextFile(sPath & FileName, True)

For nIndex = 1 to LenB(FileData)
oFile.Write Chr(AscB(MidB(FileData,nIndex,1)))
Next

oFile.Close
End Sub

Public Sub SaveToDatabase(ByRef oField)
If LenB(FileData) = 0 Then Exit Sub

If IsObject(oField) Then
oField.AppendChunk FileData
End If
End Sub

End Class
%>
  #8 (permalink)  
Antiguo 06/02/2006, 05:03
 
Fecha de Ingreso: octubre-2003
Mensajes: 184
Antigüedad: 20 años, 7 meses
Puntos: 0
Muchas gracias por todo pero he desistido, llevo cuatro dias intentandolo y no lo consigo.
  #9 (permalink)  
Antiguo 06/02/2006, 07:29
Avatar de tomchat  
Fecha de Ingreso: septiembre-2005
Mensajes: 231
Antigüedad: 18 años, 9 meses
Puntos: 0
ps con el codigo q te he puesto solo tienes q configurar tu SMTP, lo demas es copiar. Q mas facil q eso.
  #10 (permalink)  
Antiguo 06/02/2006, 09:58
 
Fecha de Ingreso: octubre-2003
Mensajes: 184
Antigüedad: 20 años, 7 meses
Puntos: 0
Vale, no sabia que tenia que configurar el smtp.

Ahora me da el siguiente error:
Objeto Server, ASP 0177 (0x8007007E)
8007007e

/Colegio/upload.asp, line 111

y la linea 111 es la siguiente
Set oFS = Server.CreateObject("Scripting.FileSystemObject")
  #11 (permalink)  
Antiguo 06/02/2006, 20:51
Avatar de tomchat  
Fecha de Ingreso: septiembre-2005
Mensajes: 231
Antigüedad: 18 años, 9 meses
Puntos: 0
Debes ver bien al momento q creas el objeto, ribiza bien el UPload.
  #12 (permalink)  
Antiguo 07/02/2006, 02:47
 
Fecha de Ingreso: octubre-2003
Mensajes: 184
Antigüedad: 20 años, 7 meses
Puntos: 0
Lo siento pero no te he entendido, que significa "ribiza", perdona ya se lo que es "ribiza", bueno "revisa"

Última edición por movil; 07/02/2006 a las 04:13
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:39.