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

C#:发送一封带有附件的邮件

参阅:C#基于SMTP的邮件发送

以下是使用C#发送带附件邮件的示例代码。该程序使用System.Net.Mail命名空间,支持SMTP协议发送邮件:

// SendEmail.cs
using System;
using System.Net;
using System.Net.Mail;
using System.IO;class EmailSender
{static void Main(){// 配置SMTP服务器信息(以QQ邮箱为例)string smtpServer = "smtp.qq.com";int smtpPort = 587;  // QQ邮箱使用587端口bool enableSsl = true;// 发件人邮箱和密码(使用授权码而非登录密码)string fromEmail = "your_email@qq.com";string password = "your_authorization_code"; // 在邮箱设置中生成的授权码// 收件人邮箱string toEmail = "recipient@example.com";try{// 创建邮件对象using (MailMessage mail = new MailMessage()){mail.From = new MailAddress(fromEmail);mail.To.Add(toEmail);mail.Subject = "测试带附件的邮件";mail.Body = "这是一封通过C#发送的测试邮件,包含附件。";mail.IsBodyHtml = false;  // 纯文本邮件// 添加附件(修改为实际文件绝对路径)string filePath = @"C:\test\example.pdf";if (File.Exists(filePath)){Attachment attachment = new Attachment(filePath);mail.Attachments.Add(attachment);}else{Console.WriteLine("文件不存在: "+ filePath);return;}// 配置SMTP客户端using (SmtpClient smtpClient = new SmtpClient(smtpServer, smtpPort)){smtpClient.Credentials = new NetworkCredential(fromEmail, password);smtpClient.EnableSsl = enableSsl;// 发送邮件smtpClient.Send(mail);}}Console.WriteLine("邮件发送成功!");}catch (Exception ex){Console.WriteLine("发送失败: "+ ex.Message);}}
}

where csc
C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe
编译 csc SendEmail.cs
运行 SendEmail.exe

使用说明:

  1. 邮箱配置

    • your_email@qq.com替换为你的发件邮箱
    • your_authorization_code替换为邮箱的[SMTP授权码](非登录密码)
    • 常见邮箱SMTP设置:
      邮箱服务SMTP服务器端口SSL
      QQsmtp.qq.com587
      163smtp.163.com465/994
      Gmailsmtp.gmail.com587
  2. 附件设置

    • 修改filePath变量为本地文件的真实路径
    • 支持添加多个附件(重复Attachments.Add即可)
  3. 安全提示

    • 不要在代码中明文存储密码,建议使用环境变量或配置文件
    • 首次使用需在邮箱设置中开启SMTP服务:
      • QQ邮箱:设置 → 账户 → POP3/SMTP服务 → 开启
      • 163邮箱:设置 → POP3/SMTP/IMAP → 开启SMTP

常见问题解决:

  1. 认证失败

    • 确认使用授权码而非邮箱密码
    • 检查是否开启SMTP服务
  2. 超时错误

    • 关闭防火墙/杀毒软件
    • 尝试更换端口(587/465/25)
  3. 附件大小限制

    • 普通邮箱附件上限通常为20-50MB
    • 大文件建议使用云存储分享链接

注意:Gmail可能需要额外步骤(允许安全性较低的应用访问)或使用OAuth2认证,具体请参考各邮箱服务商的开发者文档。

http://www.dtcms.com/a/237071.html

相关文章:

  • SQL Server 日期时间类型全解析:从精确存储到灵活转换
  • 表单设计器拖拽对象时添加属性
  • C#合并CAN ASC文件:实现与优化
  • 在Ubuntu上使用 dd 工具制作U盘启动盘
  • Go 语言实现高性能 EventBus 事件总线系统(含网络通信、微服务、并发异步实战)
  • 腾讯开源视频生成工具 HunyuanVideo-Avatar,上传一张图+一段音频,就能让图中的人物、动物甚至虚拟角色“活”过来,开口说话、唱歌、演相声!
  • Git 使用完全指南:从入门到协作开发
  • Puppeteer API
  • 河南建筑安全员B证考试最新精选题
  • 36、stringstream
  • cv2.stereoRectify中R1, R2, P1, P2, Q中每一个分量的物理意义
  • 塔能智慧照明系统“夜间巡检”功能上线!问题路灯自动报警
  • 【Latex】Windows/Ubuntu 绘制 eps 矢量图通用方法(drawio),支持插入 Latex 数学公式
  • 浅谈 React Suspense
  • java复习 04
  • 如何彻底删除windows10自带的美式键盘
  • LVGL对显示接口的要求
  • 【KiCad】立创封装导入KiCad
  • 深度解析:Spring Boot 配置加载顺序、优先级与 bootstrap 上下文
  • MySQL 8.0 绿色版安装和配置过程
  • 设计模式-观察着模式
  • 能 ping 通网址,但是网页打不开
  • Mybatis-Plus的Iservice接口
  • 台式机电脑CPU天梯图2025年6月份更新:CPU选购指南及推荐
  • 生物发酵展同期举办2025中国合成生物学与生物制造创新发展论坛
  • 16-Oracle 23 ai-JSON-Relational Duality-知识准备
  • Golang——10、日志处理和正则处理
  • 黄柏基因组-小檗碱生物合成的趋同进化-文献精读142
  • HTML面试整理
  • JUC并发编程(四)常见模式