Nagarjuna Reddy
Nagarjuna Reddy

Reputation: 4195

ASP.Net : Send email with Images embedded in Rich Text HTML body

Sending a mail along with embedded image & HTML Text using asp.net.

I have tried like this:

 public ActionResult Contact(tblCredential data)
            {
                string emailAddress = data.UserName;
                string password = data.Password;
                if (!string.IsNullOrEmpty(emailAddress))
                {

                    //Send email to consultancy
                    string htmlText = "<img src='R:/MVC@2/EmailWithHtmlBody/EmailWithHtmlBody/images/message.jpg'></img>
<h1>Thank you</h1>";

                    string from = "******@gmail.com";   // Your Mail-id here emailAddress
                    string @touser = emailAddress;  // To Mail-id
                    MailMessage mail = new MailMessage(from, touser);
                    {
                        mail.Subject = emailAddress + " sent a message";
                        mail.Body = htmlText;
                        mail.IsBodyHtml = true;

                        SmtpClient smtp = new SmtpClient { Host = "smtp.gmail.com", EnableSsl = true };
                        NetworkCredential networkCredential = new NetworkCredential(from, "*****");    //Your Password here..
                        smtp.UseDefaultCredentials = false;
                        smtp.Credentials = networkCredential;
                        smtp.Port = 587;
                        smtp.Send(mail);

                    }
                }
                return RedirectToAction("Index");
            }

Email is sent but HTML code is not working. In the mail it is showing HTML tags. Help me.

Upvotes: 1

Views: 2514

Answers (2)

er_jack
er_jack

Reputation: 112

Try this template.

It helps to use smtp.port=25

  try 
  { 
           MailMessage msg = new MailMessage ();
           MailAddress fromAdd = new MailAddress("[email protected]");
           msg.[To].Add("[email protected]");
           msg.Subject = "Choose Session Members";
           msg.From = fromAdd;
           msg .IsBodyHtml = true;
           msg.Priority = MailPriority.Normal;
           msg .BodyEncoding = Encoding.Default;
           msg.Body = "<center><table><tr><td><h1>Your Message</h1><br/><br/></td></tr>";
           msg.Body = msg.Body + "</table></center>";
           SmtpClient smtpClient = new SmtpClient ("smtp.yourserver.com", "25");
           smtpClient.EnableSsl = true;
           smtpClient.UseDefaultCredentials = false;
           smtpClient.Credentials = new System.Net.NetworkCredential("[email protected]", "password");
           smtpClient .DeliveryMethod = SmtpDeliveryMethod.Network;
           smtpClient.Send(msg);
           smtpClient.Dispose();
        }

Upvotes: 0

The Conspiracy
The Conspiracy

Reputation: 3973

In your code you are setting mail.IsBodyHtml = true; first, then mail.IsBodyHtml = false; again. Obviously, this won't work.

Btw: You cannot embed an image using the local path. The recipient will not have your image on his local machine. Embed it using inline embedding (Base64 Encoding) like it is shown here: https://sendgrid.com/blog/embedding-images-emails-facts/

<img alt="My Image" src="data:image/jpeg;base64,/9j/4S/+RXhpZgAATU0AKgAAAAgACAESAAMAENkDZ5u8/61a+X...more encoding" />

Upvotes: 3

Related Questions