Visual Basic.NET - Error en envío de archivo

   
Vista:

Error en envío de archivo

Publicado por Sergio (15 intervenciones) el 13/03/2015 05:12:28
Buenos días. Estoy haciendo una aplicación en la cual hay un trozo de código que me exporta un informe de crystal reports a pdf y lo envía a una dirección de correo electrónico. La exportación la hace bien y manda el correo, pero a la hora de ver abrir el archivo adjunto me dice: ningún programa puede leer este archivo. Sin embargo, en otro trozo de código, elijo el archivo mediante un openfiledialog y funciona perfectamente. ¿Por qué ocurre esto? Gracias. Por cierto, el correo se envía con una cuenta gmail.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Error en envío de archivo

Publicado por Miguel (350 intervenciones) el 13/03/2015 07:14:20
Hola, le faltará la extensión (*.pdf) al archivo o?

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error en envío de archivo

Publicado por Sergio (15 intervenciones) el 13/03/2015 08:39:02
No porque cuando lo exporto, antes compruebo que se ha creado bien y lo abro con el acrobat reader
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error en envío de archivo

Publicado por Miguel (350 intervenciones) el 13/03/2015 13:54:41
OK, disculpa a qué te refieres cuando mencionas ésto "Sin embargo, en otro trozo de código, elijo el archivo mediante un openfiledialog y funciona perfectamente."?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error en envío de archivo

Publicado por Sergio (15 intervenciones) el 13/03/2015 17:51:08
Haber si me explico: tengo una subrutina para mandar correos electrónicos y allí e usuario puede mandar archivos que los elijen mediante un openfiledialog. Yo, haciendo pruebas, he mandado el mismo archivo pdf que me ha creado el programa y luego se puede leer perfectamente, sin embargo, tengo otra subrutina en la cual se ve un formulario y desde un botón, el usuario puede enviar los datos de ese formulario a una cuenta de correo electrónico. Esta subrutina es la que exporta el informe en crystal reports a pdf y luego lo envía a dicha dirección de correo electrónico. Es con esta subrutina cuando no se puede leer el archivo. Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error en envío de archivo

Publicado por Miguel (350 intervenciones) el 13/03/2015 19:16:40
Has comparado el tamaño del archivo *pdf recibido por e-mail y el generado localmente (que mencionas se genera y lee correctamente); puede ser que no lo estés adjuntando correctamente. Puedes compartir la rutina en donde exportas el informe a *.pdf y envías el mail?

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error en envío de archivo

Publicado por Sergio (15 intervenciones) el 13/03/2015 19:46:05
Esta es la rutina con openfiledialog:
tadatosempresa.Fill(dtdatosempresa)
correo.From = New MailAddress(dtdatosempresa(0).email, "Victor Llorente", System.Text.Encoding.UTF8)
correo.To.Add(txtdestinatario.Text)
correo.SubjectEncoding = System.Text.Encoding.UTF8
correo.Subject = txtasunto.Text
correo.Body = txtmensaje.Text
correo.BodyEncoding = System.Text.Encoding.UTF8
correo.IsBodyHtml = False
correo.Priority = MailPriority.High
If archivo <> "" Then
Dim archivoparaenviar As New System.Net.Mail.Attachment(archivo)
correo.Attachments.Add(archivoparaenviar)
End If
smtp.Credentials = New System.Net.NetworkCredential(dtdatosempresa(0).email, dtdatosempresa(0).password)
If dtdatosempresa(0).tipocuenta = "gmail" Then
smtp.Port = 587
smtp.Host = "smtp.gmail.com"
Else
smtp.Port = 25
smtp.Host = "smtp.live.com"
End If
smtp.EnableSsl = True
Try
smtp.Send(correo)
frmenviandocorreo.ShowDialog()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try


Y esta es la rutina donde exporta a pdf y luego envia:
Private Sub FacturaActualToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles FacturaActualToolStripMenuItem.Click
tadatosempresa.Fill(dtdatosempresa)
taclientes.Fill(dtclientes)
taclientes.FillBy1(dtclientes, dtfacturas(pos).idcliente)
If dtclientes(0).email = "" Then
MsgBox("Tienes que modificar los datos del cliente e introducir una dirección de correo electrónico.")
Exit Sub
Else
tahistorialfacturascompleto.HistorialFacturasCompleto(dthistorialfacturascompleto, miidfacturas)
dt = dthistorialfacturascompleto
Dim micrystal As New frmcrystal
Dim oinforme As New facturascompleto 'Nombre que le he puesto al informe
Dim ruta As String
Dim email As New System.Net.Mail.MailMessage
Dim smtp As New SmtpClient()
ruta = System.Threading.Thread.GetDomain.BaseDirectory & "/Victor.accdb"
oinforme.SetDataSource(dt)
prepararinforme(oinforme, ruta)
micrystal.cr1.ReportSource = oinforme
If System.IO.Directory.Exists(System.Windows.Forms.Application.StartupPath & "/Informes Facturas") = False Then
System.IO.Directory.CreateDirectory(System.Windows.Forms.Application.StartupPath & "/Informes Facturas")
End If
If System.IO.File.Exists(System.Windows.Forms.Application.StartupPath & "/Informes Facturas/" & lblnumero.Text & ".pdf") = False Then
oinforme.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, System.Windows.Forms.Application.StartupPath & "/Informes Facturas/" & lblnumero.Text & ".pdf")
Else
If modificado = True Then
'El archivo pdf ya existe, pero puede haber modificado datos
frase = "El archivo " & lblnumero.Text & ".pdf se ha modificado. " & vbCrLf &
"¿Quieres sobreescribir el archivo?"
tipo = MsgBoxStyle.Question + MsgBoxStyle.YesNo
titulo = "ARCHIVO EXISTENTE"
retval = MsgBox(frase, tipo, titulo)
If retval = MsgBoxResult.Yes Then
Try
oinforme.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, System.Windows.Forms.Application.StartupPath & "/Informes Facturas/" & lblnumero.Text & ".pdf")
Catch ex As Exception
MsgBox(ex.ToString())
End Try
End If
End If
End If

Dim archivo As New System.Net.Mail.Attachment(System.Windows.Forms.Application.StartupPath & "/Informes Facturas/" & lblnumero.Text & ".pdf")
'Hay que enviar el informe
'Pondremos valores constantes para asunto y mensaje
email.From = New MailAddress(dtdatosempresa(0).email, "Victor Llorente", System.Text.Encoding.UTF8)
'email.To.Add(correo)
email.To.Add(dtclientes(pos).email)
email.SubjectEncoding = System.Text.Encoding.UTF8
email.Subject = "Envío de la Factura nº " & lblnumero.Text
email.Body = "Envío de la Factura nº " & lblnumero.Text & "." & " Si tiene alguna pregunta, no dude en llamarme." & vbCrLf &
"Reciba un cordial saludo"
email.BodyEncoding = System.Text.Encoding.UTF8
email.IsBodyHtml = False
email.Attachments.Add(archivo)
If dtdatosempresa(0).tipocuenta = "gmail" Then
smtp.Port = 587
smtp.Host = "smtp.gmail.com"
Else
smtp.Port = 25
smtp.Host = "smtp.live.com"
End If
smtp.EnableSsl = True
email.Priority = MailPriority.High
smtp.Credentials = New System.Net.NetworkCredential(dtdatosempresa(0).email, dtdatosempresa(0).password)
Try
smtp.Send(email)
frmenviandocorreo.ShowDialog()
Catch ex As Exception
MsgBox(ex.ToString())
End Try
End If
End Sub

En la primera rutina, al abrir el archivo, se lee perfectamente. Sin embargo en la segunda no.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error en envío de archivo

Publicado por Sergio (15 intervenciones) el 16/03/2015 20:12:23
Ya lo he arreglado. Estaba enviando toda la ruta como si fuera un archivo. Gracias a todos por vuestro interés
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar