none
E-mail com anexo RRS feed

  • Pergunta

  • Gostaria de enviar um e-mail com anexo, sendo em anexo um Print Screen.. o e-mail chega até o destinatario o problema que o anexo fica vazio, segue abaixo o meu código.

    /// <summary>Logs the specified error.</summary>
            /// <param name="error">The error to log.</param>
            public override void LogError(string error)
            {
                SmtpClient cliente = new SmtpClient(smtp, porta);
                cliente.EnableSsl = ssl;
    
                MailAddress remetente = new MailAddress(emailRemetente, "Logger de erro");
                MailAddress destinatario = new MailAddress(emailDestinatario);
    
                MailMessage mensagem = new MailMessage(remetente, destinatario);
                mensagem.Body = error;
                mensagem.Subject = assunto;
    
                // Create attachment
                Stream stream = GerarImagemTela();
                ContentType contentType = new ContentType();
                contentType.MediaType = MediaTypeNames.Application.Octet;
                contentType.Name = "Tela.jpg";
                Attachment attachment = new Attachment(stream, contentType);
    
                // Add the attachment
                mensagem.Attachments.Add(attachment);
    
                NetworkCredential credenciais = new NetworkCredential(usuario, senha);
                cliente.Credentials = credenciais;
    
                cliente.Send(mensagem);
            }
    
            /// <summary>
            /// Tira um Print Screen
            /// </summary>
            /// <returns></returns>
            private Stream GerarImagemTela()
            {
                // Set the bitmap object to the size of the screen
                Bitmap bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb);
                // Create a graphics object from the bitmap
                Graphics gfxScreenshot = Graphics.FromImage(bmpScreenshot);
                // Take the screenshot from the upper left corner to the right bottom corner
                gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size);
    
                MemoryStream memStream = new MemoryStream();
                memStream.Seek(0, SeekOrigin.Begin);
                bmpScreenshot.Save(memStream, ImageFormat.Jpeg);
               
                return memStream;
    
            }

    Se alguém puder me ajudar agradeço.

    quinta-feira, 12 de abril de 2012 17:18

Respostas

  • Boa tarde,

    creio que seu anexo esteja sendo enviado, mas com o mime-type errado, o que faz com que alguns provedores o removam da mensagem.

    Especifique o MediaType como JPeg:

    contentType.MediaType = MediaTypeNames.Image.Jpeg;
    Abraços,

    Daniel Cheida de Oliveira

    quinta-feira, 12 de abril de 2012 18:27