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

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.xdnf.cn/news/12620.html

相关文章:

  • Android实现点击Notification通知栏,跳转指定activity页面
  • 华为云Flexus+DeepSeek征文|体验华为云ModelArts快速搭建Dify-LLM应用开发平台并创建自己的自定义聊天助手
  • MATLAB-电偶极子所产出的电磁场仿真
  • 黑马点评【基于redis实现共享session登录】
  • 六、Sqoop 导出
  • 自适应长度惩罚强化学习的高效推理
  • [学习]扩频码测距原理、实现与精度分析(仿真代码)
  • 使用Python和Scikit-Learn实现机器学习模型调优
  • gis geoserver 地图发布
  • 单片机的低功耗模式
  • AI Agent 架构设计:ReAct 与 Self-Ask 模式对比与分析
  • bat批量去掉本文件夹中的文件扩展名
  • Python 函数全攻略:函数进阶(生成器、闭包、内置函数、装饰器、推导式)
  • 6.6并发编程
  • 引起MySQL CPU 使用率过高常见因素和解决方案
  • Svelte 核心语法详解:Vue/React 开发者如何快速上手?
  • LeetCode刷题 -- 542. 【01 矩阵】最短距离更新算法实现(双向DP)
  • 粤龙庄新文化解释:龙腾南粤,酱蕴山河
  • 计算机网络第2章(下):物理层传输介质与核心设备全面解析
  • 手机号段数据库与网络安全应用
  • Java应用Flink CDC监听MySQL数据变动内容输出到控制台
  • 家政小程序开发——AI+IoT技术融合,打造“智慧家政”新物种
  • 腾讯 ovCompose 跨平台框架发布,几年后还会有人用吗?
  • VScode 使用 git 提交数据到指定库的完整指南
  • TensorFlow深度学习实战(20)——自组织映射详解
  • 【Java开发日记】说一说 SpringBoot 中 CommandLineRunner
  • PyTorch 中contiguous函数使用详解和代码演示
  • 第4章——springboot自动配置
  • LabVIEW音频测试分析
  • ​React Hooks 的闭包陷阱问题