MailKit发送邮件

发布时间 2023-03-24 14:57:39作者: 喜东东三三

MailKit发送邮件

第一步:

如果您在使用 .NET 应用程序中使用 client.Connect("smtp.example.com", 587, SecureSocketOptions.StartTls); 代码,并且看到 Visual Studio 编辑器中 Connect 方法上出现了红色波浪线,可能是因为该方法不存在于当前的上下文中,或者是未正确引用其依赖项。

Connect 方法通常是在使用 MailKitSystem.Net.Mail 等库发送电子邮件时使用的方法,这些库提供了发送电子邮件所需的方法和类。在使用这些库之前,您需要先在项目中引用相应的依赖项。如果您正在使用的是 .NET Core 或 .NET 5 及更高版本,则应使用 NuGet 包管理器或 .NET CLI 工具来安装这些依赖项。

例如,如果您正在使用 MailKit 库,则可以在 NuGet 包管理器控制台或命令行中运行以下命令来安装该库:

Install-Package MailKit

在此之前,需要在自己的邮箱账户上开启POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务获取授权码.

路径:拿qq邮箱举例:登录QQ邮箱>点击设置>下拉看见POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务==>开启服务

方法:

using MimeKit;
using MailKit.Security;
using MailKit.Net.Smtp;

public IActionResult Email(string email,string text,string body) 
        {
        
            #region 此代码是使用最原始的MailMessage和SmtpClient生成
            // 创建一个 MailMessage 实例
            //MailMessage mail = new MailMessage();
            //mail.From = new MailAddress("你的邮箱地址");
            //mail.To.Add(email);
            //mail.Subject = text;
            //mail.Body = body;
             ////var a = file;
            ////发送邮件
            //string fileName = file.FileName;
            //string filePath = System.IO.Path.GetFullPath(fileName);
            //Attachment attachment = new Attachment(filePath);
            //mail.Attachments.Add(attachment);
             //// 创建一个 SmtpClient 实例
            //SmtpClient smtpClient = new SmtpClient();
            //smtpClient.Host = "smtp.qq.com";
            //smtpClient.EnableSsl = true;
            //smtpClient.UseDefaultCredentials = false;
            //smtpClient.Credentials = new NetworkCredential("你的邮箱地址", "授权码");

            //// 发送邮件
            //smtpClient.Send(mail);
            //return Ok(mail);
            #endregion


			//此段代码使用MailKit
            var message = new MimeMessage();
            message.From.Add(new MailboxAddress("Sender Name", "你的邮箱"));
            message.To.Add(new MailboxAddress("Recipient Name", email));
            message.Subject = text;

            var builder = new BodyBuilder();
            builder.TextBody = body;

            message.Body = builder.ToMessageBody();

            using (var client = new MailKit.Net.Smtp.SmtpClient())
            {
                client.Connect("smtp.qq.com", 587, SecureSocketOptions.StartTls);
                client.Authenticate("你的邮箱地址", "授权码");
                client.Send(message);
                client.Disconnect(true);
            }

            Console.WriteLine("Email sent successfully.");
        return Ok();
    }