C# SMTP 邮件发送傻瓜操作

该代码片段展示了如何在C#中通过SMTP协议发送电子邮件,包括验证邮件配置、设置收件人和抄送、添加附件,并处理可能的异常。
摘要由CSDN通过智能技术生成

 

/// <summary>
 /// 发送邮件的方法
 /// </summary>
 public OperateResult<int> SendMail(MailModel mails)
 {
     var resultData = new OperateResult<int>();
     if (mails.to == null || !mails.to.Any())
     {
         resultData.Status = OperateStatus.Failure;
         resultData.Description = "收件人地址不能为空";
         return resultData;
     }
     var mailConfig = App.GetConfig<MailConfigOptions>("applicationsettings:mailConfig");
     if (mailConfig == null)
     {
         resultData.Status = OperateStatus.Failure;
         resultData.Description = "邮件配置信息无效";
         return resultData;
     }
     //将发件人邮箱带入MailAddress中初始化
     MailAddress mailAddress = new MailAddress("邮件地址");
     //创建Email的Message对象
     MailMessage mailMessage = new MailMessage();

     //判断收件人数组中是否有数据
     if (mails.to != null && mails.to.Any())
     {
         //循环添加收件人地址
         foreach (var item in mails.to)
         {
             if (!string.IsNullOrEmpty(item) && item.IsEmail())
                 mailMessage.To.Add(item.ToString());
         }
     }
     if (mailMessage.To.Count <= 0)
     {
         resultData.Status = OperateStatus.Failure;
         resultData.Description = "收件人地址无效";
         return resultData;
     }

     //判断抄送地址数组是否有数据
     if (mails.cc != null && mails.cc.Any())
     {
         //循环添加抄送地址
         foreach (var item in mails.cc)
         {
             if (!string.IsNullOrEmpty(item) && item.IsEmail())
                 mailMessage.CC.Add(item.ToString());
         }
     }
     //发件人邮箱
     mailMessage.From = mailAddress;
     //标题
     mailMessage.Subject = mails.title;
     //编码
     mailMessage.SubjectEncoding = Encoding.UTF8;
     //正文
     mailMessage.Body = mails.body;
     //正文编码
     mailMessage.BodyEncoding = Encoding.Default;
     //邮件优先级
     mailMessage.Priority = MailPriority.High;
     //正文是否是html格式
     mailMessage.IsBodyHtml = mails.isHtml;

     #region 添加附件
     if (mails.files != null && mails.files.Any())
     {
         //取得Web根目录和内容根目录的物理路径
         string webRootPath = App.WebHostEnvironment.WebRootPath;
         foreach (var fileItem in mails.files)
         {
             路径拼接
             //webRootPath = _hostingEnvironment.WebRootPath + "\\" + "upload-file" + "\\" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + Path.GetFileNameWithoutExtension(item.FileName) + Path.GetExtension(item.FileName).ToLower();
             创建文件流
             //using (var FileStream = new FileStream(webRootPath, FileMode.Create))
             //{
             拷贝文件流
             //await item.CopyToAsync(FileStream);
             释放缓存
             //FileStream.Flush();
             //}
             //再根据路径打开文件,得到文件流
             //FileStream fileStream = File.OpenWrite(filePath);
             //using (fileStream)
             //{
             //    Attachment attachment = new Attachment(fileStream, filePath);
             //    mailMessage.Attachments.Add(attachment);
             //}
             try
             {
                 string pathUrl = $"{webRootPath}/{fileItem.FilePath}/{fileItem.FileObjectName}";
                 Attachment attachment = new Attachment(new FileStream(pathUrl, FileMode.Open), fileItem.FileOriginName, "text/plain");
                 mailMessage.Attachments.Add(attachment);
             }
             catch (Exception ex)
             {

             }

             //using (Stream stream = new FileStream(filePath, FileMode.Open))
             //{
             //    mailMessage.Attachments.Add(new Attachment(stream, Path.GetFileName(filePath), "text/plain"));
             //}                 
             //添加至附件中
             //mailMessage.Attachments.Add(new Attachment(stream, item.FileName));                  
             //mailMessage.Attachments.Add(new Attachment(item.OpenReadStream(),item.FileName));
         }
     }
     #endregion

     try
     {
         //实例化一个Smtp客户端
         SmtpClient smtp = new SmtpClient(ip地址, 端口号);
         //将发件人的邮件地址和客户端授权码带入以验证发件人身份
         //smtp.Credentials = new System.Net.NetworkCredential(邮件地址, SMTP服务授权码);
         //指定SMTP邮件服务器
         //smtp.Host = GetMailHost(邮件地址);
         smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
         smtp.Credentials = new System.Net.NetworkCredential(邮件地址, SMTP服务授权码); //邮箱账号  密码
         smtp.Timeout = 6000;  //6秒超时

         //邮件发送到SMTP服务器
         smtp.Send(mailMessage);

         resultData.Status = OperateStatus.Success;
         resultData.Data = 1;
     }
     catch (Exception ex)
     {
         resultData.Status = OperateStatus.Failure;
         resultData.Description = "邮件发送异常!" + ex.Message;
     }
     return resultData;
 }

  • 17
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沪上百卉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值