Estimados, tengo el siguiente problema y agradezco de antemano la ayuda que
me puedan dar

 

Tengo una rutina para enviar por mail un archivo PDF como adjunto

En desarrollo funciona correctamente, y cuando lo uso en producción
instalado en la pc de mi cliente no funciona (esto es lo que nos vuelve
locos a la mayoría de los programadores)

 

El tema es así:

Utilizo VS 2010 con lenguaje vb.net

se genera un archivo PDF exportado desde reporte crystal Report
(InvoiceNumber_00000026.pdf)

se envía por mail a una dirección de correo electrónico como adjunto el
archivo generado en el paso anterior y un archivo htm
(statements_00202823.htm) también como adjunto

el mail se envía correctamente, sin errores

 

ahora viene el problema

Si lo envío desde mi pc (entorno de desarrollo) el mail llega a la dirección
de correo indicada, con los 2 adjunto, el PDF y el HTM ambos con el nombre
que se envió desde el aplicativo

Si lo envío desde la pc del cliente (entorno de producción) el mail llega a
la dirección de correo indicada, con los 2 adjuntos, pero el PDF llega con
el nombre “=_utf-8_B_SW52b2ljZSBOwrogMDAwMDAwMjkgLSBB.pdf” y no se puede
abrir, el htm llega con el nombre correcto y se puede abrir sin problemas

 

El contenido del archivo “=_utf-8_B_SW52b2ljZSBOwrogMDAwMDAwMjkgLSBB.pdf” es
el siguiente

 

=?utf-8?B?WTJOdmRXNTBJRTUxYldKbGNpQXdNakF5Pz0NCiA9P3V0Zi04P0I/T0RJ?=\

\

=?utf-8?B?ekxsQkVSZz09Pz0=?="

Content-Transfer-Encoding: base64

Content-Disposition: attachment

 

JVBERi0xLjcgCiXi48/TIAoxIDAgb2JqIAo8PCAKL1R5cGUgL0NhdGFsb2cgCi9Q

YWdlcyAyIDAgUiAKL1BhZ2VNb2RlIC9Vc2VOb25lIAovVmlld2VyUHJlZmVyZW5j

 

Y continua cerca de 41k mas que no lo incluyo para no hacer muy grande este
correo

 

A continuación transcribo la función que utilizo para el envío de correo

 

 

Private Sub Enviar()

Dim objSmtp As New System.Net.Mail.SmtpClient

        Dim Mailmsg As System.Net.Mail.MailMessage

        Dim fromAddress As System.Net.Mail.MailAddress = Nothing

        Dim strBody As String = ""

        Dim strAsunto As String = ""

        Dim blnEnviado As Boolean = True

        Try

            Me.bdsInvoice.EndEdit()

            With Me.dtsDatos.ServidorCorreo(0)

                objSmtp.Host = .SMTP.Trim

                objSmtp.Port = .PuertoSMTP

                objSmtp.EnableSsl = .SSLHabilitado

                If .UsuarioSTMP.Trim <> "" Then

                    objSmtp.Credentials = New
System.Net.NetworkCredential(.UsuarioSTMP, .ContraseñaSMTP)

                End If

                fromAddress = New System.Net.Mail.MailAddress(.Mail,
.Remitente)

            End With

            For Each row As dtsInvoice.InvoiceRow In
Me.dtsInvoice.Invoice.Select("Enviado = 0")

                Dim toAddress As System.Net.Mail.MailAddress = Nothing

                Dim strArchivoPDF As String = ""

                Dim strArchivoHTM As String =
Archivos.DirectorioTemporal.Trim & "Statement_" &
row.AccountNumber.ToString.PadLeft(7, "0") & ".htm"

                With Me.dtsDatos.Clientes.FindByID_Cliente(row.ID_Cliente)

                        toAddress = New
System.Net.Mail.MailAddress(.Mail.Trim, .Nombre.Trim)

                    Dim dtsImpresion As New dtsImpresion

                    Impresion.PrepararDatasetImpresion(dtsImpresion,
dtsDatos, .ID_Cliente, row.InvoiceNumber)

                    strArchivoPDF = Impresion.ImprimirInvoice(dtsImpresion,
.AccountNumber, row.InvoiceNumber, True)

                    strAsunto = “”

                    strBody = “”

                End With

                If row.HTML.Trim <> "" Then

                    System.IO.File.WriteAllText(strArchivoHTM, row.HTML)

                End If

 

                With Me.dtsDatos.ServidorCorreo(0)

                    strBody = strBody & vbCrLf & vbCrLf & .Firma

                End With

 

                Mailmsg = New System.Net.Mail.MailMessage()

                With Mailmsg

                    .From = fromAddress

                    .IsBodyHtml = False

                    .Subject = strAsunto

                    If strArchivoPDF.Trim <> "" AndAlso
System.IO.File.Exists(strArchivoPDF) Then

 

                        .Attachments.Add(New
Net.Mail.Attachment(GetStreamFile(strArchivoPDF),
IO.Path.GetFileName(strArchivoPDF), "application/pdf"))

                    End If

                    If strArchivoHTM.Trim <> "" AndAlso
System.IO.File.Exists(strArchivoHTM) Then

                        .Attachments.Add(New
Net.Mail.Attachment(GetStreamFile(strArchivoHTM),
IO.Path.GetFileName(strArchivoHTM)))

                    End If

                    .Body = strBody

 

                    .Bcc.Add(fromAddress)

                    .To.Add(toAddress)

                    Try

                        objSmtp.Send(Mailmsg)

                    Catch ex As System.Net.Mail.SmtpException

                        blnEnviado = False

                    End Try

                End With

                Mailmsg = Nothing

            Next

        Catch ex As Exception

            Throw ex

        End Try

End sub

 

Private Function GetStreamFile(filePath As String) As IO.Stream

        Using fileStream As IO.Stream = IO.File.OpenRead(filePath)

            Dim memStream As New IO.MemoryStream()

            memStream.SetLength(fileStream.Length)

            fileStream.Read(memStream.GetBuffer(), 0,
CInt(fileStream.Length))

            Return memStream

        End Using

    End Function

 

 

 

 

 

 

 

Responder a