Introduction
In this article I will explain how to send multiple emails with Inline Image. Before reading this article you must read my previous email related article because I have explained some basics part in my previous article and changed few of the code part in new one. The following are my previous articles.
Code
- protected void btn_sendemail_Click(object sender, EventArgs e)
- {
-
- string to = Txt_toaddress.Text;
- string from = "fromaddress email";
- string[] Multiple = to.Split(',');
- MailMessage message = new MailMessage();
- message.From = new MailAddress(from);
-
- foreach (string multiple_email in Multiple)
- {
- message.To.Add(new MailAddress(multiple_email));
- }
-
-
- string mailbody = Txt_Bodycontent.Text + "<br/><html><body><h1>Happy Coding</h1><br> <img src=\"cid:Email\" width='600' height='300'></body></html>";
- AlternateView AlternateView_Html = AlternateView.CreateAlternateViewFromString(mailbody, null, MediaTypeNames.Text.Html);
-
- LinkedResource Picture1 = new LinkedResource(Server.MapPath("Selfie.jpeg"), MediaTypeNames.Image.Jpeg);
- Picture1.ContentId = "Email";
- AlternateView_Html.LinkedResources.Add(Picture1);
- message.AlternateViews.Add(AlternateView_Html);
-
- message.Subject = Txt_Subject.Text;
- message.Body = mailbody;
- message.BodyEncoding = Encoding.UTF8;
- message.IsBodyHtml = true;
- SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
- System.Net.NetworkCredential basicCredential1 = new
- System.Net.NetworkCredential("fromaddress email", "fromaddress password");
- client.EnableSsl = true;
- client.UseDefaultCredentials = false;
- client.Credentials = basicCredential1;
- try
- {
- client.Send(message);
- }
-
- catch (Exception ex)
- {
- throw ex;
- }
- }
We must add the following namespace:
- using System.Net;
- using System.Net.Mail;
- using System.Text;
- using System.IO;
- using System.Net.Mime;
Multiple Email
The following code will help to split the Comma '"," separated email in the given textbox ( Txt_toaddress.Text ).
- string to = Txt_toaddress.Text;
- string from = "fromaddress email";
- string[] Multiple = to.Split(',');
- MailMessage message = new MailMessage();
- message.From = new MailAddress(from);
-
- foreach (string multiple_email in Multiple)
- {
- message.To.Add(new MailAddress(multiple_email));
- }
Inline Image Code
The following code will help to fetch the image and set into the inline of the email body.
- string mailbody = Txt_Bodycontent.Text + "<br/><html><body><h1>Happy Coding</h1><br><img src=\"cid:Email\" width='600' height='300'></body></html>";
- AlternateView AlternateView_Html = AlternateView.CreateAlternateViewFromString(mailbody, null, MediaTypeNames.Text.Html);
-
- LinkedResource Picture1 = new LinkedResource(Server.MapPath("Selfie.jpeg"), MediaTypeNames.Image.Jpeg);
- Picture1.ContentId = "Email";
- AlternateView_Html.LinkedResources.Add(Picture1);
- message.AlternateViews.Add(AlternateView_Html);
- message.Body = mailbody;
Important Notes
- Firstly, create one string that contain the html body with Inline image. In the above code "mailbody" is the string. It contains the html body.
- Create an AlternateView object for those supporting the HTML content.
- System.Net.Mime namespace contain the Image type and html format ( MediaTypeNames.Image.Jpeg & MediaTypeNames.Text.Html ).
- Create a LinkedResource object for the Inline image to send.
- Add a LinkedResource object to the AlternateView object.
- Check the correct Image location otherwise it will throw an error.
- Give same Image source id and LinkedResource ContentId.Like "<img src=\"cid:Email\" width='600' height='300'>" & Picture1.ContentId = "Email";
Design
Output
Common Error for sending an Email
Check the following reference to solve your 5.5.1 Authentication.
Reference: You can also see this in my blog:
Summary
We learned how to send multiple emails with Inline Image using ASP.NET and C#. I hope this article is useful for all .NET beginners.