none
Envio de E-mail, imagem no corpo da mensagem

    Question

  • Olá, depois de uma longa pesquisa na internet, forums e afins sobre como colcocar imagens de funfo asn mensagem, sem obter exito, peço a ajuda de vocês para resolver meu problema

    Segue o códo

    public static bool EnviarEmail(string De, string Para, string Assunto, string Mensagem, string Anexo, bool ConfirmacaoDeLeitura)
      {
      MailMessage mail = new MailMessage();
      Attachment att;

      if (!string.IsNullOrEmpty(De))
      mail.From = new MailAddress(De);
      else
      {
      MessageBox.Show("O e-mail do remetente não pode ficar em branco.", "Erro ao enviar e-mail", MessageBoxButtons.OK, MessageBoxIcon.Error);
      return false;
      }
      if (!string.IsNullOrEmpty(Para))
      mail.To.Add(new MailAddress(Para));
      else
      {
      MessageBox.Show("O e-mail do destinatário não pode ficar em branco.", "Erro ao enviar e-mail", MessageBoxButtons.OK, MessageBoxIcon.Error);
      return false;
      }
       
      if (!string.IsNullOrEmpty(Anexo))
      {
      att = new Attachment(Anexo);
      mail.Attachments.Add(att);
      }

      mail.Subject = Assunto;
      AlternateView av = AlternateView.CreateAlternateViewFromString("Abaixo a imagem : <br><br><img src=" + Convert.ToString((char)34) + Anexo + Convert.ToString((char)34) + "/img>", null, MediaTypeNames.Text.Html);
      LinkedResource LR = new LinkedResource(Anexo);
      LR.ContentId = Anexo;
      av.LinkedResources.Add(LR);
      mail.AlternateViews.Add(av);
      mail.IsBodyHtml = true;

      if (ConfirmacaoDeLeitura)
      mail.Headers.Add("Disposition-Notification-To", "<" + De + ">");

      try
      {
      SmtpClient client = new SmtpClient("smtp.syspoint.com.br");
      client.Send(mail);
      return true;
      }
      catch (Exception ex)
      {
      MessageBox.Show(ex.Message, "Envio de E-mail: " + ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error);
      return false;
      }
      }

    obrigado desde já.


    Bresol
    Wednesday, March 18, 2009 7:16 PM

Answers

  • Bresol,

    Isto aqui pode te ajudar.

                string arquivo = @"c:\imagem.jpg";  
     
                string corpo = "<html><body><img src='imagem.jpg'><br><br>" +  
                              "<b>Algum texto do email...</b><br><br>" +  
                              "Mais alguma coisa.....<br></body></html>";  
     
                MailMessage message = new MailMessage("emailRemetente@algo.com.br""destinatario@algo.com.br");  
                message.Subject = "Contato";  
                message.Body = corpo;  
                message.IsBodyHtml = true;  
     
                Attachment attachment = new Attachment(arquivo);  
                message.Attachments.Add(attachment);  
     
                SmtpClient mailClient = new SmtpClient("smtp.algo.com.br");  
     
                mailClient.Send(message);  
     

    Já usei inúmeras vezes.

    Espero ter ajudado.
    Rafael Medeiros
    Tuesday, March 24, 2009 6:20 PM

All replies

  • Ninguem???
    Preciso enviar Mensagem com imagem no corpo, ou dessa forma ou entao importanto de um arquivo EML.

    Fiz uma rotina que joga o EML pra uma string, e a string joguei no Body da mensagem(MailMessage) mas nao rolou


    Preciso de ajuda, urgente.

    Obrigado a todos
    Bresol
    Thursday, March 19, 2009 1:42 PM
  • Bresol,


    Veja se te ajuda:

    protected void yourButton_Click(object sender, EventArgs e)  
        {  
                   
                string strMailContent = "Welcome new user";  
                string fromAddress = "yourname@yoursite.com";  
                string toAddress = "newuser@hisdomain.com";  
                string contentId  = "image1";  
                string path = Server.MapPath(@"images/Logo.jpg"); // my logo is placed in images folder  
                MailMessage mailMessage = new MailMessage( fromAddress, toAddress );  
                mailMessage.Bcc.Add("inkrajesh@hotmail.com"); // put your id here  
                mailMessage.Subject = "Welcome new User";  
                 
     
                LinkedResource logo = new LinkedResource(path);  
                logo.ContentId = "companylogo";  
         // done HTML formatting in the next line to display my logo  
                AlternateView av1 = AlternateView.CreateAlternateViewFromString("<html><body><img src=cid:companylogo/><br></body></html>" + strMailContent, null, MediaTypeNames.Text.Html);  
                av1.LinkedResources.Add(logo);  
     
     
                mailMessage.AlternateViews.Add(av1);  
                mailMessage.IsBodyHtml = true;  
                SmtpClient mailSender = new SmtpClient("localhost"); //use this if you are in the development server  
                            mailSender.Send(mailMessage);  
                  
            }     
     
     

    Mais informações: http://weblogs.asp.net/nawaf/archive/2007/12/07/sending-email-in-c-sync-async-multiple-recipients-attachments-etc.aspx


    Att
    Nelson Borges - Analista de Sistemas
    Sunday, March 22, 2009 2:28 PM
  • FIcou na mesma cara, a imagem nao abre, fica um quadradinho com um losangolo vermelho, a imagem tem q estar em algum site ou coisa do tipo?


    Obrigado por enquanto
    Bresol
    Monday, March 23, 2009 7:32 PM
  • Bresol,

    Isto aqui pode te ajudar.

                string arquivo = @"c:\imagem.jpg";  
     
                string corpo = "<html><body><img src='imagem.jpg'><br><br>" +  
                              "<b>Algum texto do email...</b><br><br>" +  
                              "Mais alguma coisa.....<br></body></html>";  
     
                MailMessage message = new MailMessage("emailRemetente@algo.com.br""destinatario@algo.com.br");  
                message.Subject = "Contato";  
                message.Body = corpo;  
                message.IsBodyHtml = true;  
     
                Attachment attachment = new Attachment(arquivo);  
                message.Attachments.Add(attachment);  
     
                SmtpClient mailClient = new SmtpClient("smtp.algo.com.br");  
     
                mailClient.Send(message);  
     

    Já usei inúmeras vezes.

    Espero ter ajudado.
    Rafael Medeiros
    Tuesday, March 24, 2009 6:20 PM
  • QUase funcionando, no Outlook funciona blz, porem no OutlookExpress ou Thunderbird não, fica como um link quebrado.
    Será que é alguma configuração do cliente de email?

    Obrigado
    Bresol
    Thursday, March 26, 2009 7:33 PM
  • karo amigo .

    no thunderbird voce tem que colocar o seguinte no caminho da imagem  file///        ex:      string arquivo = @"file///c:\imagem.jpg";

    abraço

    Tuesday, April 24, 2012 6:42 PM