Angel, el archivo se genera en un directorio del cliente, y la rutina que lo
genera devuelve el nombre completo del archivo (path + filename + .pdf) para
adjuntarlo al mail

Ese archivo se ve perfectamente con el adobe pdf reader en producción y
desarrollo, es mas ese archivo es exactamente igual en tamaño y contenido
byte por byte en producción y desarrollo, lo único que varia, obviamente es
la fecha de creacion del mismo,

Debe ser algo que al adjuntarlo lo toma diferente en producción que en
desarrollo, pero no logro descubrir que, me fije versión del  windows, las 2
con windows 7 mismo SP, versión del framework 4.0 (v4.0.30319),
configuración regional del Windows, los usuarios son del grupo
administradores, hasta puse los ejecutables en el mismo directorio
(C:\Inovice) y no pude resolverlo, la verdad ya no se que mas mirar

 

Gracias por tu interés en este tema

 

Claudio Speroni

 

 

De: [email protected] [mailto:[email protected]] En nombre de Angel
"Java" Lopez
Enviado el: lunes, 04 de marzo de 2013 07:02
Para: [email protected]
Asunto: [puntonet] Consulta sobre envio de mail

 

Hola gente!

 

Claudio, una pregunta:

 

-          Pudiste comprobar el archivo PDF generado en la maquina de
producción?

 

Por lo que vi del código, es una rutina tuya la que lo genera (llamando a
Crystal Report) y es esa rutina la que te da el nombre. Tal vez el problema
esta ahí, antes de ir a enviar el email. Tal vez el Crystal lo genera mal, o
de forma distinta. Veria primero de revisar este punto.

 

Nos leemos!

 

Angel “Java” Lopez

@ajlopez

 

De: [email protected] [mailto:[email protected]] En nombre de Claudio
Speroni
Enviado el: Monday, March 04, 2013 12:42 AM
Para: [email protected]
Asunto: [puntonet] Consulta sobre envio de mail

 

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