Foros del Web » Programación para mayores de 30 ;) » .NET »

adjuntar archivo a un correo

Estas en el tema de adjuntar archivo a un correo en el foro de .NET en Foros del Web. Hola, tengo un formulario, para enviar correos, el cual si no adjunto un fichero lo hace bien. El problema es cuando adjunto un fichero, me ...
  #1 (permalink)  
Antiguo 30/03/2005, 02:55
 
Fecha de Ingreso: octubre-2004
Mensajes: 94
Antigüedad: 19 años, 6 meses
Puntos: 0
adjuntar archivo a un correo

Hola, tengo un formulario, para enviar correos, el cual si no adjunto un fichero lo hace bien. El problema es cuando adjunto un fichero, me dice que el fichero no existe .... y si que existe.

Alguien sabe por que puede ser?????

Os envio el codigo:

Imports System.Web.Mail
Imports System.IO

Public Class WebForm1
Inherits System.Web.UI.Page

#Region " Código generado por el Diseñador de Web Forms "

'El Diseñador de Web Forms requiere esta llamada.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

End Sub
Protected WithEvents Button1 As System.Web.UI.WebControls.Button
Protected WithEvents examinar As System.Web.UI.HtmlControls.HtmlInputFile
Protected WithEvents Submit1 As System.Web.UI.HtmlControls.HtmlInputButton

'NOTA: el Diseñador de Web Forms necesita la siguiente declaración del marcador de posición.
'No se debe eliminar o mover.
Private designerPlaceholderDeclaration As System.Object

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: el Diseñador de Web Forms requiere esta llamada de método
'No la modifique con el editor de código.
InitializeComponent()
End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Introducir aquí el código de usuario para inicializar la página
End Sub

Private Sub Submit1_ServerClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Submit1.ServerClick
Dim email As New MailMessage

With email
.From = "[email protected]"
.To = "[email protected]"
.Subject = "Artículo de MSDN"
.Body = "<HTML><Body>Nuevos artículos en <b>MSDN</b>.<br>Busque los <font color=red>libros de .NET</font></Body></HTML>"
.BodyFormat = MailFormat.Html
.Priority = MailPriority.Normal

If FileExists(Me.examinar.Value) Then
.Attachments.Add(New MailAttachment(Me.examinar.Value))
Else
Response.Write("NO EXISTE")
End If

End With
Try
' Nombre del servidor a donde se dirige el correo
SmtpMail.SmtpServer = "aquiles"

SmtpMail.Send(email)
Catch ex As Exception
Response.Write(ex.Message)
End Try
End Sub

' Comprueba si existe un fichero.
Private Function FileExists(ByVal FileFullPath As String) As Boolean
If Trim(FileFullPath) = "" Then Return False

Dim f As New IO.FileInfo(FileFullPath)
Return f.Exists

End Function
End Class



Un saludo.
  #2 (permalink)  
Antiguo 30/03/2005, 08:11
 
Fecha de Ingreso: diciembre-2004
Mensajes: 130
Antigüedad: 19 años, 4 meses
Puntos: 0
Send Mail

Hola...

Cuando envias un email mendiante tu aplicacion ASP.NET con archivos atachados, estos archivos deben de existir en el servidor y con el HTMLInputFile que estas usando estas leyendo archivos del lado del cliente, intenta enviar un mail con un archivo cualquiera que este en tu servidor para que compruebes eso.

Código:
SmtpMail.SmtpServer = "localhost"; 
MailMessage Message= new MailMessage(); 
Message.From = "[email protected]"; 
Message.To = "[email protected]"; 
Message.Subject = "Contrato de Servicio de ...."; 
Message.Body = "Estimado cliente, .....";
Message.Attachments.Add(new MailAttachment("C:\\Inetpub\\wwwroot\\app\\reportes\\propuesta1.pdf"));
SmtpMail.Send(Message);
Saludos cordiales
__________________
langdotnet
  #3 (permalink)  
Antiguo 30/03/2005, 08:47
 
Fecha de Ingreso: octubre-2004
Mensajes: 94
Antigüedad: 19 años, 6 meses
Puntos: 0
Hola, eso ya lo había probado y te voy a expicar lo que me pasa (me estoy volviendo loco).
Para probarlo habia pasado en el attachment "C:\\Lotus\Notes\image.jpg" y me lo hacía bien, me enviaba el correo con el archivo adjunto.
Luego probando con "C:\\Documents and Settings\hlopezl\Mis documentos\image.jpg" no me iba. Dice que el archivo no existe y si que existe.

Se te ocurre algo????

Saludos.
  #4 (permalink)  
Antiguo 30/03/2005, 09:35
 
Fecha de Ingreso: marzo-2005
Mensajes: 19
Antigüedad: 19 años, 1 mes
Puntos: 0
Hola

Quizás el problema sea por permisología sobre el path que quieres accesar. Verificaste que el usuario que está ejecutando la aplicación tenga el acceso correcto sobre el archivo?. No está tampoco protegido?

Saludos

Carlos
  #5 (permalink)  
Antiguo 30/03/2005, 10:06
 
Fecha de Ingreso: diciembre-2004
Mensajes: 130
Antigüedad: 19 años, 4 meses
Puntos: 0
<Impersonate> | Web.Config

Hola,

ASPNET ejecuta un proceso llamado aspnet_wp, este proceso se ejecuta con el usuario ASPNET, ahora este usuario ASPNET tiene ciertas limitaciones como son accesos a directorios, permisos NTFS, etc, entonces al momento de buscar el archivo en la ruta del documents and settings simplemente no lo encuentra por que no tiene permisos sobre la carpeta.

La solucion seria que pongas tus archivos en una ruta relativa de tu aplicacion web (el usuario ASPNET si lo ubicara), la otra solucion (muy peligrosa) seria que impersones la aplicacion con un usuario que tenga mayores privilegios (ej. administrador) pero como te digo esta ultima opcion resulta poco segura (aunque podrias impersonar un bloque de codigo), pero te recomiendo poner tus archivos a enviar en una ruta relativa a la aplicacion.

Saludos cordiales.
__________________
langdotnet
  #6 (permalink)  
Antiguo 26/04/2005, 16:05
 
Fecha de Ingreso: abril-2005
Mensajes: 4
Antigüedad: 19 años, 1 mes
Puntos: 0
Me ha sido de ayuda lo que habeis dicho. Pero tengo una duda.
Que pasa si tengo un listBox ? como envio todos los adjuntos del lisbox ? tengo que recorrer cada item agregandolo ?
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 13:03.