当前位置: 首页 > 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认证,具体请参考各邮箱服务商的开发者文档。

相关文章:

  • 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 绿色版安装和配置过程
  • 赤峰市做网站建设的公司/百度推广工作怎么样
  • 凡科做的网站/优化的含义
  • 新买的服务器怎么做网站/seo基础培训机构
  • 电影网站怎么做不犯法/做网页设计的软件
  • 做拼货商城网站/成品网站1688入口网页版
  • 东莞企业网站制/搜索优化的培训免费咨询