C# 使用 MailKit 发送邮件(附demo)


介绍

MailKit 是一个开源的 C# 邮件处理库,用于在应用程序中发送和接收电子邮件。它提供了一个强大且易于使用的 API,支持多种邮件协议,包括 SMTP、POP3、和 IMAP。

特性与优势描述
多协议支持支持 SMTP、POP3、IMAP 等多种邮件协议。
异步操作使用异步编程模型,提高性能和响应性。
附件处理提供灵活的附件处理功能,支持添加、读取和保存邮件附件。
SSL/TLS 支持支持安全套接字层(SSL)和传输层安全性(TLS),确保邮件的安全传输。
容错处理提供容错处理机制,处理网络或协议错误,确保稳定的邮件通信。
丰富的 API提供丰富的 API,方便开发人员访问邮件的各个方面,包括主题、发件人、收件人等。
跨平台MailKit 是一个跨平台的邮件处理库,可在多个操作系统上运行,包括 Windows、Linux 和 macOS。

需要源码的留下邮箱,私信也会看,不过看的不勤,留言有通知。

安装包(依赖)

通过命令操作 NuGet 包管理器进行安装:

Install-Package MailKit -Version 2.15.0

通过管理 NuGet 程序包进行安装

在这里插入图片描述
在这里插入图片描述

案例

简单代码

以下是一个简单的示例,演示如何使用 MailKit 发送邮件:

using MailKit.Net.Smtp;
using MimeKit;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SMTPEmailDemo
{
    internal class Program
    {
        static void Main()
        {
            // 发件人邮箱和密码
            string senderEmail = "csdndaolizhe@163.com";
            string senderPassword = "AOKRBYUISXPAITAI";

            // 收件人邮箱
            string recipientEmail = "邮箱地址";//csdndaolizhe@163.com

            // 创建邮件对象
            var message = new MimeMessage();
            message.From.Add(new MailboxAddress("daolizhe", senderEmail));
            message.To.Add(new MailboxAddress("名字", recipientEmail));
            message.Subject = "主题";

            // 邮件正文
            var bodyBuilder = new BodyBuilder();
            bodyBuilder.TextBody = "邮件内容。";
            message.Body = bodyBuilder.ToMessageBody();

            // 配置SMTP客户端
            using (var client = new SmtpClient())
            {
                // 连接到SMTP服务器
                client.Connect("smtp.163.com", 25, false);

                // 使用邮箱和密码进行身份验证
                client.Authenticate(senderEmail, senderPassword);

                // 发送邮件
                client.Send(message);

                // 断开连接
                client.Disconnect(true);
            }
        }
    }
}

属性介绍:MailboxAddress

属性描述示例
Name邮箱地址的名称部分,通常是名字或昵称。“daolizhe”
Address邮箱地址的实际地址部分。“csdndaolizhe@163.com”

在这里插入图片描述

属性介绍:BodyBuilder

成员属性描述示例
TextBody用于设置纯文本正文的属性。bodyBuilder.TextBody = "邮件内容。";
HtmlBody用于设置HTML正文的属性。bodyBuilder.HtmlBody = "<p>邮件内容。</p>";
Attachments用于添加附件的集合属性。bodyBuilder.Attachments.Add(文件路径);

SMTP 服务器端口

SMTP服务器服务器地址端口规则
Gmailsmtp.gmail.com587(TLS加密)或465(SSL加密)需要使用Gmail帐户进行身份验证,通常需要启用“低安全性应用程序访问权限”。
Outlook/Office 365smtp.office365.com587需要使用Outlook或Office 365帐户进行身份验证。
163smtp.office365.com465(SSL加密) / 25需要使用163帐户进行身份验证。
自己托管的SMTP服务器取决于设置通常是25(未加密)、587(TLS加密)、465(SSL加密)中的一个需要使用合适的身份验证(例如,用户名和密码)。

在代码中对应的位置就是

SSL的案例:

// 配置SMTP客户端
using (var client = new SmtpClient())
{
    // 连接到SMTP服务器
    client.Connect("smtp.163.com", 465, true);

    // 使用邮箱和密码进行身份验证
    client.Authenticate(senderEmail, senderPassword);

    // 发送邮件
    client.Send(message);

    // 断开连接
    client.Disconnect(true);
}

非SSL:

// 配置SMTP客户端
using (var client = new SmtpClient())
{
    // 连接到SMTP服务器
    client.Connect("smtp.163.com", 25, false);

    // 使用邮箱和密码进行身份验证
    client.Authenticate(senderEmail, senderPassword);

    // 发送邮件
    client.Send(message);

    // 断开连接
    client.Disconnect(true);
}

介绍一下SMTP

特点和概念描述
SMTP(Simple Mail Transfer Protocol)用于在网络中传输电子邮件的标准协议。
电子邮件传输SMTP负责将电子邮件从发件人的邮件客户端传输到接收者的邮件服务器,然后再传递到接收者的邮件客户端。
端口SMTP服务器通常监听在端口25上,也可以使用端口587(Submission)和端口465(SMTPS)进行加密的SMTP通信。
发件人和收件人在SMTP通信中指定邮件的发件人和收件人,以确保邮件被正确地路由到目标。
命令和响应SMTP通信是基于命令和响应的。客户端向服务器发送SMTP命令,服务器返回响应,以便客户端了解操作的状态。
身份验证SMTP服务器通常要求用户进行身份验证,以防止滥用。常见的身份验证方法包括使用用户名和密码。
安全性为了提高安全性,可以使用TLS(Transport Layer Security)或SSL(Secure Sockets Layer)加密SMTP通信。
与POP3和IMAP的关系SMTP通常与POP3或IMAP一起使用。POP3和IMAP用于从服务器检索邮件,而SMTP用于发送邮件。
  • 23
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盗理者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值