c# - asp.net SMTP发送邮件SSL协议465端口,邮箱服务器从域名换成ip就发送不了

查看:660
本文介绍了c# - asp.net SMTP发送邮件SSL协议465端口,邮箱服务器从域名换成ip就发送不了的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

发送邮件,用smtpclient发送发现不支持ssl的465端口,改用CDO.Message可以发送,服务器地址使用域名可以发送成功,但把服务器地址换成IP地址就报与服务器的传输连接失败,但用outlook、foxmail这些邮件客户端用IP地址和域名都可以发送,各位有没有碰到过的,怎么解决?谢谢大家了
`

            CDO.Message oMsg = new CDO.Message();                            
            Configuration conf = new ConfigurationClass();
            conf.Fields[CdoConfiguration.cdoSendUsingMethod].Value = CdoSendUsing.cdoSendUsingPort;
            conf.Fields[CdoConfiguration.cdoSMTPAuthenticate].Value = CdoProtocolsAuthentication.cdoBasic;
            conf.Fields[CdoConfiguration.cdoSMTPUseSSL].Value = true;
            conf.Fields[CdoConfiguration.cdoSMTPServer].Value = this.Host;   
            conf.Fields[CdoConfiguration.cdoSMTPServerPort].Value = this.Port;
            conf.Fields[CdoConfiguration.cdoSendEmailAddress].Value = "<" + this.From + ">";
            conf.Fields[CdoConfiguration.cdoSendUserName].Value = this.From;
            conf.Fields[CdoConfiguration.cdoSendPassword].Value = this.Password;
            conf.Fields.Update();
            oMsg.Configuration = conf;
            oMsg.HTMLBody = this.Body;
            oMsg.Subject = this.Subject;
            oMsg.From = this.From;
            oMsg.To = this.To;
            oMsg.Send();`

解决方案

把自己找的资料整合如下:
.net framework下的SmtpClient不支持SSL的465端口,换成587端口可用不过我没试(详情见此)。CDO.Message和MailMessage可以发送但是如果SSL证书不可信的时候发送不成功,我把域名换成IP地址发送不成功估计就是这个原因,目前没找到解决方法。
.net core下NuGet安装MailKit可以发送,不过证书不可信时也要报错,要加下面一句设置证书可信才能发送成功。

var client = new SmtpClient();
client.ServerCertificateValidationCallback = (s, c, h, e) => true;

这篇关于c# - asp.net SMTP发送邮件SSL协议465端口,邮箱服务器从域名换成ip就发送不了的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆