C# 发送邮件功能

c#,发送,邮件,功能 · 浏览次数 : 16

小编点评

**发送邮件的步骤:** 1. **定义实体类:** ```csharp public class SendEmailDTO { // ...其他属性和方法 } ``` 2. **创建邮件对象:** ```csharp // 创建一个新的 MimeMessage 对象 MimeMessage mime = new MimeMessage(); ``` 3. **设置邮件信息:** - 发件人邮箱 - 收件人邮箱 - 主题 - 消息内容 4. **添加邮件内容:** - 使用 `Add()` 方法添加邮件主体(文本或 HTML) - 使用 `Add()` 方法添加附件(可选) 5. **设置邮箱服务器信息:** - 服务器地址 - 端口 - 登陆凭证 6. **设置发送邮件授权码:** - 用于身份验证的凭证 7. **发送邮件:** ```csharp // 发送邮件 client.Send(mime); // 关闭连接 client.Dispose(); ``` **示例代码:** ```csharp // 定义实体类 public class SendEmailDTO { public string FromEmail { get; set; } public string ToEmail { get; set; } public string Subject { get; set; } public string Text { get; set; } } // 发送邮件 public static void Send(SendEmailDTO dto) { // 创建邮件对象 MimeMessage mime = new MimeMessage(); // 设置邮件信息 mime.From.Add(new MailboxAddress(dto.FromEmail, dto.FromEmail)); mime.To.Add(new MailboxAddress(dto.ToEmail, dto.ToEmail)); mime.Subject = dto.Subject; mime.Body = new TextPart(MimeKit.Text.TextFormat.Plain) { Text = dto.Text }; // 设置邮箱服务器信息 mime.Server = "smtp.163.com"; mime.Port = 465; // 设置发送邮件授权码 mime.Authentication.Mechanisms.Add(new SmtpAuthentication("your_email_address", "your_email_password")); // 发送邮件 using (SmtpClient client = new SmtpClient()) { client.Send(mime); } } ```

正文

以前官方自带一个smpt类可以发送邮件,现在好像弃用了。虽然仍然可以使用,但总归不如先学一下新的方法。遂采用了微软官方推荐的一个第三方库:MailKit  

还需引入另一个MimeKit库,用于创建消息。

我的发送邮件是扩展功能,所以是静态方法,所需的参数我将通过参数传递。遂定义一个email的实体类、

    public class SendEmailDTO
    {
        /// <summary>
        /// 发送人邮箱
        /// </summary>
        public string FromEmail { get; set; }

        /// <summary>
        /// 收件人邮箱
        /// </summary>
        public string ToEmail { get; set; }

        /// <summary>
        /// 发送人
        /// </summary>
        public string FromUserName { get; set; }

        /// <summary>
        /// 收件人
        /// </summary>
        public string ToUserName { get; set; }

        /// <summary>
        /// 主题
        /// </summary>

        public string Subject { get; set; }

        /// <summary>
        /// 消息
        /// </summary>
        public string Text { get; set; }

        /// <summary>
        /// 邮箱服务器
        /// </summary>

        public string Host { get; set; }

        /// <summary>
        /// 端口[465加密,25不加密]
        /// </summary>
        public int Port { get; set; }

        /// <summary>
        /// 发送邮箱授权码
        /// </summary>

        public string Code { get; set; }
    }
View Code

然后就是发送邮件的方法

        public static void Send(SendEmailDTO dto)
        {
            #region Mime消息体

            MimeMessage mime = new();
            //发送者邮箱
            mime.From.Add(new MailboxAddress(dto.FromUserName, dto.FromEmail));
            //接收者邮箱
            mime.To.Add(new MailboxAddress(dto.ToUserName, dto.ToEmail));
            //邮件主体
            mime.Subject = dto.Subject;
            //邮件消息的主体,可以html,目前只是txt
            mime.Body = new TextPart(MimeKit.Text.TextFormat.Plain)
            {
                Text = dto.Text
            };

            #endregion Mime消息体

            #region 发送

            //创建smtp实例: SmtpClient 是一个用于与 SMTP 服务器进行交互的类
            using SmtpClient client = new();
            //与smpt服务器建立连接
            client.Connect(dto.Host, dto.Port, dto.Port == 465);
            //使用提供的凭证进行身份验证
            client.Authenticate(dto.FromEmail, dto.Code);
            //发送信息
            client.Send(mime);
            //关闭连接
            client.Dispose();

            #endregion 发送
        }
View Code

调用也很方便

SendEmail.Send(new Model.EntityDTO.SendEmailDTO()
            {
                FromEmail = "163@163.com",
                FromUserName = "野原新之助",
                Host = "smtp.163.com",
                Port = 465,
                Subject = "打个招呼",
                Text = @"你赖东东 
                                不错嘛!",
                ToEmail = "qq@qq.com",
                ToUserName = "小王"
            });
View Code

 

与C# 发送邮件功能相似的内容:

C# 发送邮件功能

以前官方自带一个smpt类可以发送邮件,现在好像弃用了。虽然仍然可以使用,但总归不如先学一下新的方法。遂采用了微软官方推荐的一个第三方库:MailKit 还需引入另一个MimeKit库,用于创建消息。 我的发送邮件是扩展功能,所以是静态方法,所需的参数我将通过参数传递。遂定义一个email的实体类、

在C#中使用RabbitMQ做个简单的发送邮件小项目

在C#中使用RabbitMQ做个简单的发送邮件小项目 前言 好久没有做项目了,这次做一个发送邮件的小项目。发邮件是一个比较耗时的操作,之前在我的个人博客里面回复评论和友链申请是会通过发送邮件来通知对方的,不过当时只是简单的进行了异步操作。 那么这次来使用RabbitMQ去统一发送邮件,我的想法是通过

设计模式-C#实现简单工厂模式

前言 上一篇文章写了如何使用RabbitMQ做个简单的发送邮件项目,然后评论也是比较多,也是准备去学习一下如何确保RabbitMQ的消息可靠性,但是由于时间原因,先来说说设计模式中的简单工厂模式吧! 在了解简单工厂模式之前,我们要知道C#是一款面向对象的高级程序语言。它有3大特性,封装、继承、多态。

go NewTicker 得使用

转载请注明出处: 在 Go 语言中,time.NewTicker 函数用于创建一个周期性触发的定时器。它会返回一个 time.Ticker 类型的值,该值包含一个通道 C,定时器会每隔一段时间向通道 C 发送一个时间值。 NewTicker 函数的签名如下: func NewTicker(d Dur

C#事件

C#事件 概述 定义 类或对象可以通过事件向其他类或对象通知发生的相关事情。 发送(或引发)事件的类称为“发布者”,接收(或处理)事件的类称为“订阅者”。 事件是一种特殊的多播委托,是委托实例变量, 事件只能在类的内部定义,只能从声明它的类中进行调用。 外部只能订阅和取消订阅事件。 事件的组成部分

C++ LibCurl 库的使用方法

LibCurl是一个开源的免费的多协议数据传输开源库,该框架具备跨平台性,开源免费,并提供了包括`HTTP`、`FTP`、`SMTP`、`POP3`等协议的功能,使用`libcurl`可以方便地进行网络数据传输操作,如发送`HTTP`请求、下载文件、发送电子邮件等。它被广泛应用于各种网络应用开发中,特别是涉及到数据传输的场景。

NODEJS通过发送json数据查询目标服务,实现服务器状态监控,发现异常发送到微信群提醒

root@aea87fa6e6a2:/home/node# cat login2.js const request = require('request-promise'); const moment = require('moment'); const cron = require('node-c

华为云短信服务教你用C++实现Smgp协议

本文简单对SGIP协议进行了介绍,并尝试用C++实现协议栈,但实际商用发送短信往往更加复杂,可以选择华为云消息&短信服务通过HTTP协议接入。

【微信自动化】使用c#实现微信自动化

引言 上个月,在一个群里摸鱼划水空度日,看到了一个老哥分享的一个微信自动化的一个类库,便下载了他的Demo,其本意就是模拟鼠标来操作UI,实现UI自动化;然后自己在瞎琢磨研究,写了一个简单的例子,用来获取好友列表,获取聊天列表,以及最后一次接收或者发送消息的时间,以及最后一次聊天的内容,还有自动刷朋

如何优雅地退出程序

在Linux系统中执行操作时,进程可以通过发送和接收信号与其他进程进行通信。信号是用于通知进程发生特定事件或请求进程采取特定动作的软件中断。 以下是Linux系统中常见的一些信号及其含义: 1. **SIGINT (2)**:中断信号,通常由终端用户按下`Ctrl + C`发送给前台进程。该信号用于