System.Net.Mail.SmtpClient一般发送如果启用了ssl则他会先从25端口去建立握手,一般邮件服务器都会禁用25端口,因此会发送报错,远程服务器无响应,连接超时
推荐用web方式发送邮件,这样成功率很高,需要引用C#的程序集组件System.Web
参考代码:
public static void SendEmail()
//发件人
const string sendAddress = "xxxxxgg@petrochina.com.cn";
//发件人密码
const string sendPassword = "123456";
//收件人
const string receiveAddress = "kkkmmmm@petrochina.com.cn";
System.Web.Mail.MailMessage mail = new System.Web.Mail.MailMessage();
mail.From = sendAddress;
mail.To = receiveAddress;
mail.Subject = "whl测试发送邮件2-26-1";
mail.BodyFormat = System.Web.Mail.MailFormat.Html;
mail.Body = "whl发送的测试邮件" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1"); //basic authentication
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", sendAddress); //set your username here 发件人邮箱
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", sendPassword); //set your password here 发件人邮箱密码
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", 465);//发送端口号
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", "true");//是否启用ssl
//需要引用组件System.Web
System.Web.Mail.SmtpMail.SmtpServer = "msg.petrochina.com.cn";
System.Web.Mail.SmtpMail.Send(mail);
Console.WriteLine("发送邮件成功");
catch (Exception ex)
var exg = ex.InnerException ?? ex;
string msg = exg.ToString();
Console.WriteLine(msg);
https://blog.csdn.net/molu474305148/article/details/99713389
https://www.cnblogs.com/tsql/p/9078163.html
System.Net.Mail.SmtpClient一般发送如果启用了ssl则他会先从25端口去建立握手,一般邮件服务器都会禁用25端口,因此会发送报错,远程服务器无响应,连接超时推荐用web方式发送邮件,这样成功率很高,需要引用C#的程序集组件System.Web参考代码: public static void SendEmail() { ...
1.EazyE
mail邮件
发送类库
Net 类库自带了邮件
发送功能。笔者对该类库,从
使用的角度进行了二次封装,nuget上可搜索EazyE
mail,注入容器时通过委托来获得邮箱服务器的配置地址以及
发送地址直接调用send方法即可。
容器注入代码。这里定义的委托,每次
发送之前可以去数据库拿邮箱配置数据跟
发送账户,笔者自己用的时候是通过Redis缓存 存取数据,因为像断网断电这种可能是批量出现的,需要批量
发送告警邮件,所以放Redis里,然后Redis通过rdb功能设置每秒每个键变化就持久化的策略,没毛病。
services.AddE
mailKit(() =>
今天在测试邮件功能的时候,发现明明在本地发邮件功能可以正常使用的,但是放到了阿里云服务器上,就发送失败。报错信息如下:System.Net.WebException: 无法连接到远程服务器 ---> System.Net.Sockets.SocketException: 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
想到阿里云喜欢用安全组屏蔽端口,于是我就赶紧去配置了安全规则。进站出站都配置了,结果还是不行,然后索性把防火墙也关了,依旧不行。经过一番折腾,发现阿里自带屏蔽25端口。简直尴尬,后来找了阿里的一些规则文档,发现需要申请开通屏蔽端口。但是经过咨询了阿里工作人员,发现现在已经不开放25端口。通过与客服联系,写了以下代码,仅供参考,亲测成功!
“{“success”:false,”message”:”错误System
.Net.
Mail.
SmtpException: Failure sending
mail. —> System
.Net.
WebException: The remote name could not be resolved: ‘
smtp.163.com’
邮件
发送相关端口
首先说下邮件
发送的端口:25/465/587
25端口是为
SMTP协议服务开放的,是这三个端口中最老的一个。25端口也称为消息中继端
1、问题现象
通过System.Net.Mail.SmtpClient使用SSL/TLS协议发送邮件失败并报错
System.Net.Mail.SmtpException: Failure sending mail
详细报错信息:
System.Net.Mail.SmtpException: Failure sending mail.
---> System.IO.IOExc...
采用以下代码
System.Web.Mail.MailMessage mail = new System.Web.Mail.MailMessage(,2);
mail.To = "收件人邮箱";
mail.From = "发件人邮箱";
mail.Subject = "subject";
mail.BodyFormat = System.Web.Mail.MailFormat.H
从网上搜了一下,有用的结果不多,有说是Web.Mail过时,要改用system.net.mail等等。
后来跟踪代码,发现是进行到验证的步骤时出的问题,于是尝试去掉“@域名”,真的可以了。
那为什么不提示用户名错误呢,通过
本地测试发送邮件,网上代码一大片,就先不介绍了;关于购买阿里云服务上进行发送邮件的,我们的坑有很多需要注意,因为阿里云对25端口进行屏蔽,我们只能选择994,网上网易企业邮箱的ssl端口是994,发送邮件的代码:
发送的问题包括:
1、System.Web.HttpException (0x80004005): 与服务器的传输连接失败。
---> System.Reflection.TargetInvocationException: 调用的目标发生了异常。 ---> System....
//本文使用的是qq邮件,发送邮箱记得要把POP3/SMTP服务开启, 密码要是POP3/SMTP等服务的授权码
private Boolean Mailbox(string name, string content)
MailMessage message = new MailMessage();
//设置发件人,发件人需要与...
默认使用EnableSsl=false本地可以发送邮件,传到服务器上就不行,查找原因是阿里云封掉了25端口,必须使用非25端口才能发送,没办法换ssl协议。
端口选择注意
接收邮件服务器:imap.qq.com,使用SSL,端口号993
发送邮件服务器:smtp.qq.com,使用SSL,端口号465或587
对于ssl/tls加密,使用465端口
对于starttls 一般使用587端口
换了587端口各种不行,查了资料才发现SmtpClient只支持STARTTLS加密,网易的163刚好不支持
经过查阅资料发现原因是主题里面你的字符串中有一些特殊字符导致出错。去掉改类字符即可成功。
我出现的错误原因是主题中有回车符"\r\n",解决方法是把“\r\n”替换成其他的比如空格即可。
zhuti = zhuti.Replace("\r", " ");
zhuti = zhuti.Rep...
tortoisegit常见错误Disconnected no supported authentication methods available(server sent: publickey)
49003