C# 实现发送邮件功能(SMTP)

简介: 通过SMTP协议实现邮件发送,支持文本与附件,需配置邮箱SMTP信息(如QQ邮箱授权码)。示例代码展示C#中如何使用SmtpClient发送邮件,适用于QQ、163、Gmail等主流邮箱服务。

通过 SMTP 协议发送邮件,支持文本内容、附件,需配置邮箱 SMTP 服务器信息。

案例:邮件发送工具

using System.Net;
using System.Net.Mail;
public class EmailSender
{
    // 发送邮件(支持附件)
    public static bool SendEmail(string smtpServer, int smtpPort, string username, string password, 
                                 string toEmail, string subject, string body, string[] attachments = null)
    {
        try
        {
            // 创建邮件消息
            MailMessage mail = new MailMessage();
            mail.From = new MailAddress(username); // 发件人邮箱
            mail.To.Add(toEmail); // 收件人邮箱
            mail.Subject = subject; // 邮件主题
            mail.Body = body; // 邮件内容
            mail.IsBodyHtml = false; // 是否为HTML格式
            // 添加附件
            if (attachments != null && attachments.Length > 0)
            {
                foreach (string filePath in attachments)
                {
                    if (File.Exists(filePath))
                    {
                        mail.Attachments.Add(new Attachment(filePath));
                    }
                    else
                    {
                        Console.WriteLine($"附件不存在:{filePath}");
                    }
                }
            }
            // 配置SMTP客户端
            SmtpClient smtpClient = new SmtpClient(smtpServer, smtpPort);
            smtpClient.Credentials = new NetworkCredential(username, password); // 邮箱账号密码(或授权码)
            smtpClient.EnableSsl = true; // 启用SSL加密(多数SMTP服务器要求)
            smtpClient.Timeout = 5000; // 超时时间
            // 发送邮件
            smtpClient.Send(mail);
            Console.WriteLine("邮件发送成功!");
            return true;
        }
        catch (Exception ex)
        {
            Console.WriteLine($"邮件发送失败:{ex.Message}");
            return false;
        }
    }
    public static void Main(string[] args)
    {
        // 配置SMTP信息(以QQ邮箱为例)
        string smtpServer = "smtp.qq.com";
        int smtpPort = 587;
        string username = "your-qq-email@qq.com"; // 你的QQ邮箱
        string password = "your-authorization-code"; // QQ邮箱授权码(不是登录密码)
        string toEmail = "recipient@example.com"; // 收件人邮箱
        string subject = "C# 邮件发送测试";
        string body = "这是使用C# SMTP发送的测试邮件!";
        string[] attachments = new string[] { @"C:\Temp\test.txt" }; // 附件路径(可选)
        // 发送邮件
        SendEmail(smtpServer, smtpPort, username, password, toEmail, subject, body, attachments);
    }
}

注意:

  • QQ 邮箱需开启 SMTP 服务并获取授权码(设置→账户→开启 POP3/SMTP 服务);
  • 其他邮箱(如 163、Gmail)需对应配置 SMTP 服务器和端口。
相关文章
|
应用服务中间件 网络安全 nginx
手把手教你使用 Docker 部署 Nginx 教程
本文详解Nginx核心功能与Docker部署优势,涵盖镜像拉取、容器化部署(快速、挂载、Compose)、HTTPS配置及常见问题处理,助力高效搭建稳定Web服务。
4699 4
|
9月前
|
人工智能 Linux API
[大模型实战 01] 本地大模型初体验:Ollama 部署与 Python 调用指南
大模型实战系列第一篇。拒绝晦涩理论,直接上手!我会带着各位友人们零基础安装 Ollama,利用国内 ModelScope 极速下载模型,详解服务端口配置与 Python 脚本调用,涵盖显存计算与常见避坑指南。
[大模型实战 01] 本地大模型初体验:Ollama 部署与 Python 调用指南
|
9月前
|
机器学习/深度学习 人工智能 自然语言处理
除夕夜,国产顶流压轴上线,QWEN3.5多模态开源!
加我进AI讨论学习群,公众号右下角“联系方式” 文末有老金的 **开源知识库地址·全免费** --- ![Image](https://ucc.alicdn.com/pic/developer-ecology/p3shvhj26rigq_682da514f2d84d68857b797ebe2fbced.jpg) 除夕夜,老金我刚咬了一口韭菜鸡蛋饺子。 手机"叮"的一声,弹出个通知。 老金我瞄
|
10月前
|
JSON API C#
C# 实现简单的 HTTP 请求工具(GET/POST)
HTTP请求工具用于调用第三方API,支持GET和POST方法,实现数据获取与提交。示例代码展示通过HttpClient发送异步POST请求,处理响应并解析JSON结果,适用于高效集成外部服务。
|
C# 数据安全/隐私保护
C#使用 MailKit 收发邮件
【10月更文挑战第15天】在C#中使用MailKit库可轻松实现邮件的发送与接收。首先需通过NuGet包管理器安装MailKit,并编写代码设置发件人、收件人、邮件主题及正文,连接邮件服务器并认证后即可发送邮件。接收邮件时,同样需连接服务器并认证,然后打开收件箱遍历读取邮件信息。整个过程需根据实际邮件服务器配置相应参数。
1155 4
|
开发框架 前端开发 JavaScript
在Winform开发中,我们使用的几种下拉列表展示字典数据的方式
在Winform开发中,我们使用的几种下拉列表展示字典数据的方式
.NET Framework 3.5离线安装包合集下载
本文介绍了如何获取和安装.NET Framework运行库离线合集包。用户可通过提供的链接下载安装包,安装过程简单,按提示逐步操作即可完成。安装时可选择所需版本,工具会自动适配架构,无需手动判断,方便高效。
8173 0