如何使用C#发送带有图片的HTML电子邮件

在现代的网络通信中,电子邮件仍然是一个重要的工具。有时候,不仅需要发送纯文本邮件,还需要发送包含图片或其他多媒体内容的HTML邮件。本文将介绍如何使用C#编程语言发送带有图片的HTML电子邮件。

准备工作

在开始之前,请确保有一个可以发送邮件的SMTP服务器。本文以Gmail为例,但可以替换为自己的SMTP服务器信息。

创建SMTPClient对象

首先,需要创建一个SMTPClient对象,它负责与SMTP服务器进行通信。SMTPClient类位于System.Net.Mail命名空间中。需要指定服务器的主机名、端口、用户名、密码以及是否启用SSL加密。

static SmtpClient GetSmtpClient(string host, int port, string user, string password, bool enableSsl) { SmtpClient smtpClient = new SmtpClient(); smtpClient.Host = host; smtpClient.Port = port; NetworkCredential cred = new NetworkCredential(user, password); smtpClient.EnableSsl = enableSsl; smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; smtpClient.UseDefaultCredentials = false; smtpClient.Timeout = 5000; smtpClient.Credentials = cred; return smtpClient; }

在上面的代码中,定义了一个名为GetSmtpClient的方法,它接收SMTP服务器的主机名、端口、用户名、密码和是否启用SSL作为参数,并返回一个配置好的SMTPClient对象。

创建MailMessage对象

接下来,需要创建一个MailMessage对象,它表示要发送的邮件。为了发送HTML格式的邮件,需要使用AlternateView类来包含HTML内容,以及LinkedResource类来包含邮件中的图片等资源。

static void Main(string[] args) { SmtpClient smtpClient = GetSmtpClient("smtp.gmail.com", 587, "GmailUserName@gmail.com", "password", true); MailMessage mail = new MailMessage(); mail.From = new MailAddress("GmailUserName@gmail.com"); mail.To.Add("AddressTo@hotmail.com"); mail.Subject = "Test"; string htmlBody = "" + Environment.NewLine; mail.IsBodyHtml = true; mail.Body = htmlBody; AlternateView htmlview = AlternateView.CreateAlternateViewFromString(htmlBody, null, "text/html"); LinkedResource imageResourceEs = new LinkedResource("photo.jpg"); imageResourceEs.ContentId = "photo"; imageResourceEs.TransferEncoding = System.Net.Mime.TransferEncoding.Base64; htmlview.LinkedResources.Add(imageResourceEs); mail.AlternateViews.Add(htmlview); try { smtpClient.Send(mail); } catch (Exception t) { Console.WriteLine(t.Message); } }

在这段代码中,首先创建了一个SMTPClient对象,然后创建了一个MailMessage对象,并设置了发件人、收件人、邮件主题和邮件正文。邮件正文是一个HTML字符串,其中包含了一个图片标签,图片的src属性设置为"cid:photo",这表示图片是一个嵌入式资源。

添加图片资源

为了将图片添加到邮件中,使用了LinkedResource类。需要为每个LinkedResource设置一个ContentId,这个ID在邮件正文中通过"cid:"前缀引用。

在创建LinkedResource对象时,指定了图片的路径,并将其ContentId设置为"photo"。然后,将这个资源添加到邮件的AlternateView中。

发送邮件

最后,使用SMTPClient对象的Send方法发送邮件。如果在发送过程中遇到任何异常,将捕获这些异常并打印出错误信息。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485