下面我将详细讲解如何使用C#的MailAddress类发送HTML格式邮件。
1. 准备工作
在开始之前,你需要安装SMTP的环境,同时确保你的邮箱账号的SMTP邮件发送权限已经开启。
2. 添加引用
在C#项目中引用System.Net.Mail, System.Net和System.Text命名空间
using System.Net.Mail;
using System.Net;
using System.Text;
3. 发送HTML格式邮件的代码
创建一个MailMessage实例,并在其中设置邮件标题和内容,包括设置HTML格式和编码方式等。
MailMessage mail = new MailMessage();
mail.From = new MailAddress("发送者邮箱");
mail.To.Add("接收者邮箱");
mail.CC.Add("抄送者邮箱");
mail.Subject = "邮件标题";
mail.Body = "<html><body><h1>Hello, World!</h1>This is HTML email!</body></html>";
mail.IsBodyHtml = true; // 设置邮件格式可以是Html
mail.BodyEncoding = Encoding.UTF8; //(可选)设置内容编码方式
mail.SubjectEncoding = Encoding.UTF8; //(可选)设置标题编码方式
4. 连接SMTP服务器并发送邮件
根据SMTP的环境连接SMTP服务并使用SMTP服务发送邮件。
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.服务商.com";
smtp.Port = 25; // (可选)设置SMTP端口号
smtp.UseDefaultCredentials = false; //是否使用系统默认凭证
smtp.Credentials = new NetworkCredential("发送者地址", "发送者密码");
smtp.EnableSsl = true; //(可选)是否启用SSL
try
{
smtp.Send(mail);
Console.WriteLine("邮件已经发送成功!");
} catch(Exception e) {
Console.WriteLine("发送邮件时出现了异常,请检查:", e.ToString());
}
示例说明
示例1:发送带附件的HTML邮件
MailMessage mail = new MailMessage();
mail.From = new MailAddress("发送者邮箱");
mail.To.Add("接收者邮箱");
mail.CC.Add("抄送者邮箱");
mail.Subject = "邮件标题";
mail.Body = "<html><body><h1>Hello, World!</h1>This is HTML email!</body></html>";
mail.IsBodyHtml = true; // 设置邮件格式可以是Html
mail.BodyEncoding = Encoding.UTF8; //(可选)设置内容编码方式
mail.SubjectEncoding = Encoding.UTF8; //(可选)设置标题编码方式
Attachment attachment = new Attachment("附件的路径");
mail.Attachments.Add(attachment);
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.服务商.com";
smtp.Port = 25; // (可选)设置SMTP端口号
smtp.UseDefaultCredentials = false; //是否使用系统默认凭证
smtp.Credentials = new NetworkCredential("发送者地址", "发送者密码");
smtp.EnableSsl = true; //(可选)是否启用SSL
try
{
smtp.Send(mail);
Console.WriteLine("带附件的HTML邮件已经发送成功!");
} catch(Exception e) {
Console.WriteLine("发送邮件时出现了异常,请检查:", e.ToString());
}
示例2:使用SmtpClient的SendAsync方法发送邮件
MailMessage mail = new MailMessage();
mail.From = new MailAddress("发送者邮箱");
mail.To.Add("接收者邮箱");
mail.CC.Add("抄送者邮箱");
mail.Subject = "邮件标题";
mail.Body = "<html><body><h1>Hello, World!</h1>This is HTML email!</body></html>";
mail.IsBodyHtml = true; // 设置邮件格式可以是Html
mail.BodyEncoding = Encoding.UTF8; //(可选)设置内容编码方式
mail.SubjectEncoding = Encoding.UTF8; //(可选)设置标题编码方式
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.服务商.com";
smtp.Port = 25; // (可选)设置SMTP端口号
smtp.UseDefaultCredentials = false; //是否使用系统默认凭证
smtp.Credentials = new NetworkCredential("发送者地址", "发送者密码");
smtp.EnableSsl = true; //(可选)是否启用SSL
smtp.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback);
try
{
// 发送邮件但不影响应用程序的执行,应用程序继续执行后面的代码,直到完成邮件发送或出现异常
smtp.SendAsync(mail, "");
} catch(Exception e) {
Console.WriteLine("发送邮件时出现了异常,请检查:", e.ToString());
}
private static void SendCompletedCallback(object sender, AsyncCompletedEventArgs e)
{
if (e.Cancelled)
{
Console.WriteLine("邮件发送被取消了...");
}
if (e.Error != null)
{
Console.WriteLine("发送邮件时出现异常:", e.Error.ToString());
}
else
{
Console.WriteLine("带附件的HTML邮件已经发送成功!");
}
//释放资源
MailMessage mail = e.UserState as MailMessage;
if (mail != null)
{
mail.Dispose();
}
SmtpClient client = sender as SmtpClient;
if (client != null)
{
client.Dispose();
}
}
希望以上例子对你有所帮助。在实际应用中,还需根据自身需求进行调试和改进。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#使用MailAddress类发送html格式邮件的实例代码 - Python技术站