Error en envío de archivo
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.