C# SMTP 邮件发送傻瓜操作

这篇具有很好参考价值的文章主要介绍了C# SMTP 邮件发送傻瓜操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 

/// <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;
 }文章来源地址https://www.toymoban.com/news/detail-803187.html

到了这里,关于C# SMTP 邮件发送傻瓜操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python 学习笔记(5)——SMTP 使用QQ邮箱发送邮件

    目录 发送邮件 1、准备工作: 2、发送纯文本信息内容: 3、发送 HTML 格式的内容: 4、发送带附件的邮件: 5、群发(一个邮件,发给多个人):         以下都 以 QQ邮箱 为发送方举例;   1、准备工作:          使用 QQ邮箱发送邮件,需要到 “ 设置 ”=“ 账号 ”

    2024年02月09日
    浏览(52)
  • SMTP邮件发送图片-如何在github中存储图片并访问

    之前写了一篇文章 Go:实现SMTP邮件发送订阅功能(包含163邮箱、163企业邮箱、谷歌gmail邮箱),实现了通过邮箱服务来发送邮件,但都是文字内容,要是想实现邮件发送图片,就需要将图片放到公网可访问的服务器,这里用了骚操作。 实现邮件群发功能,来发送项目的周报及

    2024年02月06日
    浏览(46)
  • java SMTP邮件发送,修复SSL下465端口Could not connect to SMTP

    起因:开发邮件发送系统时,使用25端口能够正常发送邮件,启用SSL使用465端口时,发送邮件报Could not connect to SMTP host: smtp.qiye.aliyun.com, port: 465的错误。 由于25端口可以正常发送邮件,所以可以保证账号和网络是通的,那么可能就出在465出站权限或者服务器环境问题。 经运维

    2024年02月02日
    浏览(45)
  • c++实现smtp发送邮件,支持ssl的465端口发送,支持附件、一次发送多人、抄送等

    c++实现smtp发送邮件,支持ssl的465端口发送,支持附件、一次发送多人、抄送等。 这里只使用了openssl库(用来支持ssl的465端口),其他部分是原生c++,支持在win/linux运行。 网上很多都是原始的支持25端口,明文发送,这里介绍一下ssl思路 使用sockect编程和ssl,使用SMTP协议。 使

    2024年02月08日
    浏览(99)
  • 网工应用层:电子邮件Email、SMTP协议与使用Telnet发送电子邮件

    参考资料: https://www.bilibili.com/video/BV1c4411d7jb?p=72vd_source=e66dd25b0246f28e772d75f11c80f03c 湖科大的高军老师做的计算机网络课,去年选修的计网全靠高老师,生动,举例丰富,配套实验课,无废话纯干货,单推一波! 电子邮件(E-mail)是一种用电子手段提供信息交换的通信方式,是

    2024年02月14日
    浏览(93)
  • 一、Postfix[安装与配置、smtp认证、Python发送邮件以及防垃圾邮件方法、使用腾讯云邮件服务]

    Debian 11 apt install postfix 解释:搭建真实的邮件服务器需要在DNS提供商那里配置下面的dns 配置A记录 mail.www.com - 1.x.x.x 配置MX记录 www.com - mail.www.com 解释:按照上面的配置通常邮件格式就是 admin@www.com 其通过www.com的MX记录找到mail.www.com再通过其A记录来找到对应服务器完成通讯 解

    2024年02月15日
    浏览(52)
  • 基于 ESP32 通过 SMTP 服务器 来发送电子邮件信息

    电子邮件在全球范围内被用作数字通信的重要组成部分。电子邮件主要用于官方通信目的,因为它最方便、成本效益高、保存记录、覆盖全球且环保。电子邮件是一种非常快捷的通信方式,只是您需要稳定的互联网连接。 在这个项目中,我们将使用ESP32开发板发送电子邮件(

    2024年02月07日
    浏览(86)
  • Go:实现SMTP邮件发送订阅功能(包含163邮箱、163企业邮箱、谷歌gmail邮箱)

    需求很简单,就是用户输入自己的邮箱后,使用官方邮箱给用户发送替邮件模版 邮件模版类似如下图发来的欢迎加入的模版 这里我们使用html格式存储模版,上图源码如下 选择好官方邮箱来开启smtp服务,这里我测试验证了163邮箱、163企业邮箱、谷歌gmail邮箱和腾讯企业邮箱(

    2024年02月08日
    浏览(73)
  • QQ 邮箱使用 SMTP 发送邮件报错:550 The From header is missing or invalid

    QQ 邮箱使用 SMTP 发送邮件报错: 550 The From header is missing or invalid : 源码( pthon 3.12 ) 看到 QQ 邮箱对 header 中的 from 有合法性校验,我们的字段格式符合要求,怀疑是字符编码问题。 通过打印封装的 message 查看我们的 From 字段乱码,去掉 utf-8 编码。 再次测试,正常发送邮件

    2024年04月16日
    浏览(85)
  • 使用SpringBoot + JavaMailSender 发送邮件报错 Mail server connection failed;Could not connect to SMTP host

    在 application.yml 中将邮件配置为 SSL 连接 yml 如果你使用的是 properties 文件,应该修改为: properties 推荐一个 yml、properties 文件在线转换的网站  在线yaml转properties-在线properties转yaml-ToYaml.com   来源:https://www.cnblogs.com/songjilong/p/12577010.html

    2024年02月04日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包