c# 发送SMTP邮件

一.写在前面

   之前很早就想实现以下如果发邮件的问题。因为很多软件或者网站的注册都需要使用到邮箱注册和密码找回。然后不知道是参数格式不对还是什么原因,一直发送不成功。表示很捉急。如今又重新拾起来了。虽然中间出了点岔子,把电脑给玩坏了。dns解析域名有问题了导致无法上网了。不过现在一切恢复如初。并且发邮件的功能也很好的实现了。现在与大家分享。

二.代码片段
/// <summary>
        /// 发送邮件
        /// </summary>
        /// <param name="Dep_Email">收件人邮箱格式:"收件人姓名1<1992113422@qq.com>;收件人姓名2<4342343@qq.com>"</param>
        /// <param name="Mis_Name">"邮件主题"</param>
        /// <param name="Mis_Describe">邮件内容</param>
        /// <param name="File_Path">附件名(含路径)</param>
        /// <param name="appendinfo">对附件的说明</param>
        /// <returns></returns>
        public static string MailSending(string Dep_Email, string Subject, string Mis_Describe, string FileName,string appendinfo="")
        {
            string MailUser = ConfigurationManager.AppSettings["MailUser"].ToString();//发件人的邮箱地址;如:7234@qq.com
            string MailName = ConfigurationManager.AppSettings["MailName"].ToString();//发件人名字
            string MailHost = ConfigurationManager.AppSettings["MailHost"].ToString();//邮件服务器名字;qq的话,为:smtp.qq.com
            string MailPwd = ConfigurationManager.AppSettings["MailPwd"].ToString();//为授权码(在qq邮箱首页里面开启smtp服务后,会生成授权码;
            MailAddress from = new MailAddress(MailUser, MailName);
            MailMessage mail = new MailMessage();
            mail.Subject = Subject;
            mail.From = from;
            try
            {
                string[] mailNames = (Dep_Email).Split(new char[]
			{
				';'
			});
                string[] array = mailNames;
                for (int i = 0; i < array.Length; i++)
                {
                    string name = array[i];
                    if (name != string.Empty)
                    {
                        string displayName;
                        string address;
                        if (name.IndexOf('<') > 0)
                        {
                            displayName = name.Substring(0, name.IndexOf('<'));
                            address = name.Substring(name.IndexOf('<') + 1).Replace('>', ' ');
                        }
                        else
                        {
                            displayName = string.Empty;
                            address = name.Substring(name.IndexOf('<') + 1).Replace('>', ' ');
                        }
                        mail.To.Add(new MailAddress(address, displayName));
                    }
                }
                mail.Body = Mis_Describe;
                mail.BodyEncoding = Encoding.UTF8;
                mail.IsBodyHtml = true;
                mail.Priority = MailPriority.Normal;
                 FileStream fs=null;
                 if (FileName != "")
                {
                    fs = new FileStream(FileName, FileMode.Open, FileAccess.Read);//如果不使用文件流,资源无法被释放

                    mail.Attachments.Add(new Attachment(fs, appendinfo));
                 
                    mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;
                }
                SmtpClient client = new SmtpClient();
               
                client.Host = MailHost;
                client.Port = 587;
                client.UseDefaultCredentials = false;
                client.EnableSsl = true;
                client.Credentials = new NetworkCredential(MailUser, MailPwd);
              
                client.DeliveryMethod = SmtpDeliveryMethod.Network;
                mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
                client.Send(mail);
                if(fs!=null)
                fs.Close();//关闭流,以便其他操作能够打开该文件资源
            }
            catch (SmtpFailedRecipientException ex)
            {
                string msg = "";
                msg += "=====================发送邮件失败============";
                if (!string.IsNullOrEmpty(ex.FailedRecipient))
                    msg += "\r\n" +"失败邮箱:" +ex.FailedRecipient;
                msg += "\r\n" + "Message:"+ex.Message;
                msg += "\r\n" + "Source:" + ex.Source;
                LogHelper log = new LogHelper("邮件日志");
                log.WriteLog(msg);
                return "失败啦!请查看日志!";
            }
            return mail.ToString();
        }
三.需要注意的地方

上面的代码基本上都已经被详细的注释了。按照格式输入参数应该是没有什么问题啦。不过呢,在使用上面的代码之前得做一个设置。就是我们得进入我们的qq邮箱首页,找到顶部的设置按钮,单击它,选择账户选项卡。然后下拉,找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务。将其所得服务都开启。开启完了后。下面有一个温馨提示:温馨提示:登录第三方客户端时,密码框请输入“授权码”进行验证生成授权码。

点击生成授权码。然后拿到授权码后,就得到了我们代码中的Mailpwd,所以这里不要想当然觉得是你的qq号的登陆密码。

四.一些步骤图如下:



230104_CzBF_1455020.png

230105_DNjM_1455020.png

230146_d0fD_1455020.png

230158_Coiy_1455020.png





祝你好运!不懂得加qq:739462304@qq.com


转载于:https://my.oschina.net/RabbitXiao/blog/648250

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值