当前位置: 首页 > news >正文

C#实战 - C#实现发送邮件的三种方法

作者:逍遥Sean
简介:一个主修Java的Web网站\游戏服务器后端开发者
主页:https://blog.csdn.net/Ureliable
觉得博主文章不错的话,可以三连支持一下~ 如有疑问和建议,请私信或评论留言!

前言
当使用 C# 编程语言发送邮件时,可以利用不同的方法来实现。本文将介绍三种常用的方法:使用SMTP客户端库、使用.NET Framework内置类和使用第三方库。我们将详细讨论每种方法的优缺点以及如何实现。

C# 实现发送邮件的三种方法

      • 方法一:使用SMTP客户端库
        • 步骤:
        • 优点和缺点:
      • 方法二:使用.NET Framework内置类
        • 步骤:
        • 优点和缺点:
      • 方法三:使用第三方库
        • 步骤:
        • 优点和缺点:
      • 结论

方法一:使用SMTP客户端库

SMTP(简单邮件传输协议)是发送电子邮件的标准协议,可以使用 C# 中的 SMTP 客户端库来发送邮件。

步骤:
  1. 安装SMTP客户端库

    通常使用 System.Net.Mail 命名空间中的 SmtpClient 类来发送邮件。确保你的项目引用了正确的命名空间。

  2. 编写发送邮件的代码

    using System;
    using System.Net;
    using System.Net.Mail;class Program
    {static void Main(string[] args){// 发件人的邮箱地址和密码string from = "your_email@gmail.com";string password = "your_password";// 创建一个电子邮件消息MailMessage message = new MailMessage();message.From = new MailAddress(from);message.To.Add("recipient@example.com"); // 收件人邮箱地址message.Subject = "邮件主题";message.Body = "这是一封测试邮件。";// 设置SMTP服务器地址和端口SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);smtp.EnableSsl = true; // 启用SSL加密smtp.Credentials = new NetworkCredential(from, password);try{smtp.Send(message);Console.WriteLine("邮件发送成功!");}catch (Exception ex){Console.WriteLine("邮件发送失败:" + ex.Message);}}
    }
    

    注意:使用 Gmail 作为 SMTP 服务器时,需要启用“低安全性应用程序访问权限”。

优点和缺点:
  • 优点

    • 简单直接,使用 .NET 标准库自带的功能。
    • 可以定制邮件的各种属性,如附件、优先级等。
  • 缺点

    • 不支持高级特性,如HTML邮件、模板邮件等。

方法二:使用.NET Framework内置类

.NET Framework 提供了 System.Net.Mail 命名空间,内置了发送邮件所需的类和方法。

步骤:
  1. 使用 MailMessageSmtpClient

    using System;
    using System.Net;
    using System.Net.Mail;class Program
    {static void Main(string[] args){// 发件人的邮箱地址和密码string from = "your_email@gmail.com";string password = "your_password";// 创建一个电子邮件消息MailMessage message = new MailMessage();message.From = new MailAddress(from);message.To.Add("recipient@example.com"); // 收件人邮箱地址message.Subject = "邮件主题";message.Body = "这是一封测试邮件。";// 设置SMTP服务器地址和端口SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);smtp.EnableSsl = true; // 启用SSL加密smtp.Credentials = new NetworkCredential(from, password);try{smtp.Send(message);Console.WriteLine("邮件发送成功!");}catch (Exception ex){Console.WriteLine("邮件发送失败:" + ex.Message);}}
    }
    

    这段代码与使用SMTP客户端库的方法非常相似,主要区别在于使用了.NET Framework 内置的类。

优点和缺点:
  • 优点

    • 使用.NET Framework 自带的类,稳定可靠。
    • 集成度高,适合简单的邮件发送需求。
  • 缺点

    • 功能较为基础,不支持复杂的邮件处理和高级特性。

方法三:使用第三方库

除了.NET Framework自带的功能外,还可以使用第三方库来发送邮件,如MailKitMimeKit等。这些库通常提供更多的功能和更灵活的选项。

步骤:
  1. 安装第三方库

    通过NuGet安装MailKit库:

    Install-Package MailKit
    
  2. 编写发送邮件的代码

    using System;
    using MimeKit;
    using MailKit.Net.Smtp;class Program
    {static void Main(string[] args){// 创建一个MimeMessage对象MimeMessage message = new MimeMessage();message.From.Add(new MailboxAddress("发件人", "your_email@gmail.com"));message.To.Add(new MailboxAddress("收件人", "recipient@example.com"));message.Subject = "邮件主题";// 构建邮件正文BodyBuilder bodyBuilder = new BodyBuilder();bodyBuilder.TextBody = "这是一封测试邮件。";message.Body = bodyBuilder.ToMessageBody();// 设置SMTP客户端using (SmtpClient client = new SmtpClient()){client.Connect("smtp.gmail.com", 587, false); // 连接到SMTP服务器client.Authenticate("your_email@gmail.com", "your_password"); // 使用发件人邮箱地址和密码认证client.Send(message); // 发送邮件client.Disconnect(true); // 断开连接}Console.WriteLine("邮件发送成功!");}
    }
    
优点和缺点:
  • 优点

    • 支持更多高级特性,如HTML邮件、附件、多收件人、邮件模板等。
    • 提供更好的错误处理和调试功能。
  • 缺点

    • 需要额外安装和学习第三方库的使用方法。
    • 对于简单的邮件发送,可能显得过于复杂。

结论

以上是使用 C# 实现发送邮件的三种常见方法:使用SMTP客户端库、使用.NET Framework内置类和使用第三方库。选择合适的方法取决于项目的需求和复杂性。对于简单的邮件发送,建议使用.NET Framework 自带的类;对于需要更多高级特性和灵活性的项目,可以考虑使用第三方库。希望本文能够帮助你选择和实现适合的邮件发送方法!

相关文章:

C#实战 - C#实现发送邮件的三种方法

作者:逍遥Sean 简介:一个主修Java的Web网站\游戏服务器后端开发者 主页:https://blog.csdn.net/Ureliable 觉得博主文章不错的话,可以三连支持一下~ 如有疑问和建议,请私信或评论留言! 前言 当使用 C# 编程…...

数模原理精解【5】

文章目录 二元分布满足要求边际分布条件概率例子1例子2 损失函数概率分布期望值例 参考文献 二元分布 满足要求 连续情况下, φ ( x , y ) \varphi (x,y) φ(x,y)为随机变量 X 、 Y X、Y X、Y的联合概率分布(二元分布),如果以下条件满足: …...

C语言篇——使用运算符将16进制数据反转

比如&#xff1a;将一个16进制0xFD&#xff0c;即11111101&#xff0c;反向&#xff0c;输出10111111&#xff0c;即0xBF。 #include <stdio.h>unsigned char reverseBits(unsigned char num) {unsigned char reverse_num 0;int i;for (i 0; i < 8; i) {if ((num &…...

2025年和2024CFA一级SchweserKaplan Notes 全集 (内附分享链接)

CFA一级notes百度网盘下载 2024年和2025年 CFA一级考纲已经正式发布&#xff0c;相比与老考纲&#xff0c;新考纲变化实在不算小。 2024年和2025年 CFA一级notes完整版全 https://drive.uc.cn/s/6394c0b6b1a54?public1 2024年和2025年 cfa二级notes完整版全 https://driv…...

B树的实现:代码示例与解析

B树的实现&#xff1a;代码示例与解析 引言 B树是一种自平衡的树数据结构&#xff0c;广泛应用于文件系统和数据库系统中。它是一种多路搜索树&#xff0c;旨在保持数据有序并允许高效的查找、插入和删除操作。本文将深入探讨B树的实现&#xff0c;提供完整的代码示例和详细的…...

HCIA总结

一、情景再现&#xff1a;ISP网络为学校提供了DNS服务&#xff0c;所以&#xff0c;DNS服务器驻留在ISP网络内&#xff0c;而不再学校网络内。DHCP服务器运行在学校网络的路由器上 小明拿了一台电脑&#xff0c;通过网线&#xff0c;接入到校园网内部。其目的是为了访问谷歌网站…...

软件测试_接口测试面试题

接口测试是软件测试中的重要环节&#xff0c;它主要验证系统不同模块之间的通信和数据交互是否正常。在软件开发过程中&#xff0c;各个模块之间的接口是实现功能的关键要素&#xff0c;因此对接口进行全面而准确的测试是确保系统稳定性和可靠性的关键步骤。 接口测试的核心目…...

C++初阶学习第五弹——类与对象(下)

类与对象&#xff08;上&#xff09;&#xff1a;C初阶学习第三弹——类与对象&#xff08;上&#xff09;-CSDN博客 类和对象&#xff08;中&#xff09;&#xff1a;C初阶学习第四弹——类与对象&#xff08;中&#xff09;-CSDN博客 一.赋值运算符重载 1.1 运算符重载 C为…...

最低工资标准数据(2001-2023年不等)、省市县,整理好的面板数据(excel格式)

时间范围&#xff1a;2001-2022年 具体内容&#xff1a;一&#xff1a;最低工资数据标准时间&#xff1a;2012-2021包含指标&#xff1a; 省份城市/区县小时最低工资标准&#xff08;非全日制&#xff09;月最低工资标准实施日期 样例数据&#xff1a; 二&#xff1a;各省最低…...

计算机毕业设计选题推荐-戏曲文化体验系统-Java/Python项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…...

【深度学习】CosyVoice,论文

CosyVoice_v1.pdf 文章目录 CosyVoice: A Scalable Multilingual Zero-shot Text-to-speech Synthesizer based on Supervised Semantic Tokens摘要1 引言2 CosyVoice: 使用监督语义标记的可扩展TTS模型2.1 用于语音的监督语义标记2.2 用于TTS的大型语言模型2.3 最优传输条件流…...

PHP8.3.9安装记录,Phpmyadmin访问提示缺少mysqli

ubuntu 22.0.4 腾讯云主机 下载好依赖 sudo apt update sudo apt install -y build-essential libxml2-dev libssl-dev libcurl4-openssl-dev pkg-config libbz2-dev libreadline-dev libicu-dev libsqlite3-dev libwebp-dev 下载php8.3.9安装包 nullhttps://www.php.net/d…...

[译] 深入浅出Rust基金会

本篇是对 RustConf 2023中的Rust Foundation: Demystified这一视频的翻译与整理, 过程中为符合中文惯用表达有适当删改, 版权归原作者所有. 大家好,我是Sage Griffin,我的代词是they/them。我今天来这里是要谈谈Rust基金会。 要了解基金会实际做什么,我们需要理解美国国内税收…...

Postman:API开发与测试的强大伴侣

在当今的数字化时代&#xff0c;API&#xff08;应用程序编程接口&#xff09;已成为不同软件系统之间通信的桥梁&#xff0c;它们如同数字世界的“翻译官”&#xff0c;使得数据和服务能够在不同的平台和应用程序之间无缝流动。然而&#xff0c;API的开发、测试和维护并非易事…...

Web应用的视界革命:WebKit支持屏幕方向API的深度解析

Web应用的视界革命&#xff1a;WebKit支持屏幕方向API的深度解析 在现代Web应用开发中&#xff0c;屏幕方向的适应性是一个重要的考虑因素。屏幕方向API&#xff08;Screen Orientation API&#xff09;提供了一种方法&#xff0c;允许Web应用知道并响应屏幕的方向变化&#x…...

【前端】一文带你了解 CSS

文章目录 1. CSS 是什么2. CSS 引入方式2.1 内部样式2.2 外部样式2.3 内联样式 3. CSS 常见选择器3.1 基础选择器3.1.1 标签选择器3.1.2 类选择器3.1.3 id 选择器3.1.4 通配符选择器 3.2 复合选择器3.2.1 后代选择器 4. CSS 常用属性4.1 字体相关4.2 文本相关4.3 背景相关4.4 设…...

IT服务运营管理中的关键考核指标

IT服务运营过程中常见的关键考核指标体现在人员、技术、资源、过程、质量等要素中&#xff0c;下面把常见的考核项目、计算方式、考核周期罗列如下&#xff0c;本考核指标主要用于对IT服务运营单位或部门的考核。 IT服务运营管理关键考核指标 要素考核项目计算方式常见考核周期…...

复习C语言从源文件.C到二进制.bin或可执行文件.exe文件的流程

...

如何恢复硬盘里删除的数据?硬盘数据恢复真的可靠吗?2024最新解答!

在日常的计算机使用中&#xff0c;我们时常会不小心删除硬盘中的重要数据&#xff0c;这时候&#xff0c;数据恢复就显得尤为重要。本文将介绍几种恢复硬盘里删除数据的方法&#xff0c;并探讨硬盘数据恢复的可靠性&#xff0c;提供2024年的最新解答。 一、什么是电脑硬盘&…...

Android Studio的新界面,怎么切换回老界面

将勾选的 Enable new UI 取消掉即可...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)

引言 工欲善其事&#xff0c;必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后&#xff0c;我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集&#xff0c;就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008&#xff1a;是version产品的大版本。 R006&#xff1a;是release产品特性版本。 C009&#xff1a;是通用版 B0014&#xff1a;是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存&#xff1a;1GB 以上 硬盘&#xf…...

elementUI点击浏览table所选行数据查看文档

项目场景&#xff1a; table按照要求特定的数据变成按钮可以点击 解决方案&#xff1a; <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...