• C# 发送邮件问题


     阿里云服务25端口不开放解决方案

    要用System.Web.Mail,之所以不行,是因为System.Net.Mail,中SmtpClient只支持Explicit SSL但是不支持Implicit SSL,而扩展SSl的SMTP会话是起于未加密的通道即加密的25端口,然后使用SSL切换到安全通信465,如果你的服务器禁用25,扩展ssl开始都没办法开始。所以发不出去,所以用SmtpClient行不通,而已改用System.Web.Mail。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Web.Mail;
    
    namespace Demo
    {
        /// <summary>
        /// 要用System.Web.Mail,之所以不行,是因为System.Net.Mail,中SmtpClient只支持Explicit SSL但是不支持Implicit SSL,而扩展SSl的SMTP会话是起于未加密的通道即加密的25端口,然后使用SSL切换到安全通信465,如果你的服务器禁用25,扩展ssl开始都没办法开始。所以发不出去,所以用SmtpClient行不通,而已改用System.Web.Mail。 
        /// MailToolSSL mail = new MailToolSSL("smtp.163.com", "password", "", "*****@163.com");
        /// mail.CreateMail("1596782257@qq.com", "", "", "测试主题", "内容--人生得意须尽欢", "HTML", true);
        /// mail.SendMail();
        /// </summary>
        public class MailToolSSL
        {
            public MailMessage _MailMessage;
    
            public int _SenderPort = 465; //端口
            public string _SenderServerHost; //smtp.163.com
            public string _SenderPassword; //密码
            public string _SenderUsername; //
            public string _SenderMail; //*****@163.com
            public bool _EnableSsl = true; //SSL
    
            public MailToolSSL(string SenderServerHost, string SenderPassword, string SenderUsername, string SenderMail)
            {
                this._SenderServerHost = SenderServerHost;
                this._SenderPassword = SenderPassword;
                this._SenderUsername = SenderUsername;
                this._SenderMail = SenderMail;
            }
    
            /// <summary>
            /// 创建Mail
            /// </summary>
            /// <param name="recipient">收件人</param>
            /// <param name="cc">CC</param>
            /// <param name="bcc">BCC</param>
            /// <param name="subject">标题</param>
            /// <param name="content">内容</param>
            /// <param name="format">格式</param>
            /// <param name="sslEnable"></param>
            public ReturnResults CreateMail(string recipient, string cc, string bcc, string subject, string content, string format, bool sslEnable)
            {
                try
                {
                    _MailMessage = new MailMessage();
                    _MailMessage.To=recipient;
                    _MailMessage.From = _SenderMail;
                    if (!string.IsNullOrEmpty(cc))
                        _MailMessage.Cc = cc;
                    if (!string.IsNullOrEmpty(bcc))
                        _MailMessage.Bcc = bcc;
                    _MailMessage.Subject = subject;
                    _MailMessage.Body = content;
                    if (format.ToUpper().Equals("HTML"))
                        _MailMessage.BodyFormat = System.Web.Mail.MailFormat.Html;
                    else
                        _MailMessage.BodyFormat = System.Web.Mail.MailFormat.Text;
                        _MailMessage.BodyEncoding = System.Text.Encoding.UTF8;
                    _MailMessage.Priority = MailPriority.Normal;
                    _EnableSsl = sslEnable;
                    return ReturnResults.Success("Mail创建成功");
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                    return ReturnResults.Error("Create Mail 异常" + ex.ToString());
                }           
            }
    
            public ReturnResults SendMail()
            {
                try
                {
                    if (_MailMessage != null)
                    {
                        _MailMessage.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1"); //身份验证  
                        _MailMessage.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", _MailMessage.From); //邮箱登录账号  
                        _MailMessage.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", _SenderPassword); //登录密码  
                        _MailMessage.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", 465);//端口  
                        _MailMessage.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", "true");//SSL加密  
                        System.Web.Mail.SmtpMail.SmtpServer = _SenderServerHost; //smtp.163.com
                        System.Web.Mail.SmtpMail.Send(_MailMessage);
                        return ReturnResults.Success("Mail发送成功");
                    }
                    return ReturnResults.Error("创建的Mail为空 ,检查CreateMail 方法");
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                    return ReturnResults.Error("Mail发送异常" + ex.ToString());
                }
            }
            public class ReturnResults
            {
                public bool state { get; set; }
                public string msg { get; set; }
                private ReturnResults(bool _state, string _msg)
                {
                    this.state = _state;
                    this.msg = _msg;
                }
    
                public static ReturnResults Success(String msg)
                {
                    return new ReturnResults(true, msg);
                }
                public static ReturnResults Error(String msg)
                {
                    return new ReturnResults(false, msg);
                }
    
                public static ReturnResults Anything(bool state, String msg)
                {
                    return new ReturnResults(state, msg);
                }
            }
        }
    }
  • 相关阅读:
    Exp4 恶意代码分析
    实验一 密码引擎4国䀄算法交叉测试(选做)
    我 邀请 C++ 吧 吧主 @cqwrteur 加入 开源项目 ILBC
    协程 的 主要作用 是 让 单核 GC 变成 单线程 GC
    测量 绝对速度 的 方法
    数学吧 《这个谬论应该怎么反驳》
    民科吧 的 @湿芋 出了 一题 u = x y^2 z
    rdkafka模块
    使用相似矩阵对伴奏和人声进行划分 MUSIC/VOICE SEPARATION USING THE SIMILARITY MATRIX
    ByteTrack论文精读
  • 原文地址:https://www.cnblogs.com/xfweb/p/15709774.html
Copyright © 2020-2023  润新知