C#使用MailAddress类发送html格式邮件的实例代码

下面我将详细讲解如何使用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技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • JS动态加载脚本并执行回调操作

    JS动态加载脚本并执行回调操作是一种常见的前端开发技巧,可以提高网站的性能和用户体验。下面我将为大家详细讲解这个过程的完整攻略。 首先,我们需要了解两个关键技术:动态创建script标签和回调函数。通过动态创建script标签,我们可以在不刷新页面的情况下,在当前页面中加载外部的.js脚本文件。而回调函数则是在这个外部脚本加载完毕后执行的函数,可以让我们在脚…

    JavaScript 2023年5月27日
    00
  • js 实现ajax发送步骤过程详解

    关于JS实现AJAX发送步骤过程的详解,可以从以下几个方面来说明: 一、AJAX请求的基本流程 在进行AJAX操作之前,我们需要先创建一个 XMLHttpRequest 对象。该对象主要用于在后台向服务器发出HTTP请求。 然后,设置 XMLHttpRequest 对象的一些属性,如请求类型、请求地址、传递的数据等。在设置完这些属性后,我们需要调用 XMLH…

    JavaScript 2023年6月11日
    00
  • defer属性导致引用JQuery的页面报“浏览器无法打开网站xxx,操作被中止”错误的解决方法

    当我们在HTML页面中引入JQuery时,可以给<script>标签添加一个defer属性,来告诉浏览器在文档解析完成后再加载并执行该JS文件。但是,如果在使用defer属性时,JS文件中存在依赖JQuery的代码,就会导致页面在加载时出现错误。 这里提供两种解决方法: 方法一:将defer移除或替换为async 解决问题的一种方法是将<s…

    JavaScript 2023年6月10日
    00
  • 了不起的11个JavaScript代码重构最佳实践小结

    人们经常会遇到重构旧的Javascript代码的问题,这个过程是为了将过时或低效的代码解决掉,提高代码的可维护性、可读性和可扩展性。在这篇文章中,我们将讨论11个JavaScript代码重构最佳实践的小结,可以帮助你在Javascript项目中写出更好的代码。 1.封装函数 首先,一个好的实践就是封装函数。函数封装是将代码组织成模块化的基本方式,它可以使代码…

    JavaScript 2023年5月28日
    00
  • js数组去重常见的方法汇总(7种)

    下面我将详细讲解“js数组去重常见的方法汇总(7种)”。 一、引言 在JavaScript的实际开发中,经常会遇到需要对数组进行去重操作的情况。而JavaScript提供了多种方法来进行数组去重操作,下面将详细介绍七种常见的方法。 二、使用Set Set是ES6新引入的一种集合数据类型,它可以存储任意类型的唯一值。使用Set可以很方便地实现数组去重,只需要将…

    JavaScript 2023年5月27日
    00
  • Javascript迭代、递推、穷举、递归常用算法实例讲解

    Javascript 迭代、递推、穷举、递归常用算法实例讲解 在Javascript编程中,经常需要使用迭代、递推、穷举、递归等算法来解决问题。下面将分别介绍这几种算法,并结合示例说明。 迭代算法 迭代算法顾名思义就是一种重复执行某种操作的算法,通常采用循环结构实现。迭代算法的最大优点就是效率高,但需要注意边界条件的控制。 下面是一个求阶乘的迭代算法示例: …

    JavaScript 2023年5月27日
    00
  • JavaScript编码小技巧分享

    JavaScript编码小技巧分享 概述 JavaScript是一门常用的脚本编程语言,用于网页前端开发。面对日益复杂的开发需求,编写高效、稳定、易于维护的JavaScript代码显得尤为重要。本文将分享一些实用的JavaScript编码小技巧,帮助你提高开发效率、提升代码质量。 小技巧一:避免使用全局变量 在JavaScript中,全局变量具有全局作用域,…

    JavaScript 2023年5月20日
    00
  • js实现导航栏上下动画效果

    JS实现导航栏上下动画效果攻略 1. 确定导航栏样式 首先,我们需要确定导航栏的样式,通常包括容器样式、菜单样式和链接样式。可以使用CSS给导航栏添加样式。 .navbar { background-color: #fff; color: #333; display: flex; justify-content: space-between; align-i…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部