邮件发送相关端口

  首先说下邮件发送的端口:25/465/587

  25端口

  25端口是为SMTP协议服务开放的,是这三个端口中最老的一个。25端口也称为消息中继端口,因为这个端口经常被恶意利用,所以现在这个端口主要用于邮件服务器之间的消息转发,而且现在国内的云服务器如阿里云腾讯云等等都是默认禁用25端口的。

  465端口

  465端口是为SMTPS(SMTP-over-SSL)协议服务开放的,而SMTPS是SMTP协议基于SSL安全协议之上的一种变种协议,它继承了SSL安全协议的非对称加密的高度安全可靠性,可防止邮件泄露,SMTP与SMTPS的关系类似HTTP与HTTPS的关系。465端口并未被IETF认可,因此那些严格准招Internet标准的公司可能也没有认可,但是在国内环境被作为25端口的替代端口。

  587端口

  587端口是邮件客户端向邮件服务器提交消息的推荐端口,是STARTTLS协议的,属于TLS通讯协议,也称为消息提交端口。客户端通过587端口提交消息,然后服务器之间通过25端口转发,这是一个理想模式。

  

  问题

  如下面发邮件的代码  

    string host = "smtp.exmail.qq.com";//qq邮箱
int port = 25;//25 465 587
string from = "123456@qq.com";
string to = "456789@qq.com";
string userName = "123456@qq.com";
string password = "123456"; MailMessage message = new MailMessage();
message.From = new MailAddress(from);
message.To.Add(new MailAddress(to));
message.Body = "test body";
message.Subject = "test subject";
message.IsBodyHtml = true;
message.SubjectEncoding = Encoding.UTF8; SmtpClient client = new SmtpClient(host, port);
client.UseDefaultCredentials = true;
client.Credentials = new NetworkCredential(userName, password);
client.Send(message);

  上面发邮件使用的是System.Net.Mail,如果使用的本地环境,是可以发送邮件的,可如果部署到服务器上,特别是云服务器,可能邮件就发不出来了,这个很可能是因为25端口被禁用,所以需要开启服务器的25端口(阿里云腾讯云等25端口开启要申请),而网上推荐使用465端口,但是System.Net.Mail貌似不支持465端口,可能与上面说的465端口未被IETF认可有关吧。

  System.Net.Mail不支持465端口不表示465端口不可用,如果是.net framework,可以使用System.Web.Mail来使用465端口,如果是.net core,可以使用MailKit,不仅支持465,还支持25和587端口,可以使用nuget安装MailKit    

    string host = "smtp.exmail.qq.com";//qq邮箱
int port = 465;//25 465 587
string from = "123456@qq.com";
string to = "456789@qq.com";
string userName = "123456@qq.com";
string password = "123456"; var message = new MimeMessage();
message.From.Add(new MailboxAddress(from));
message.To.AddRange(new MailboxAddress[] { new MailboxAddress(to) });
message.Subject = "test subject";
var entity = new TextPart(TextFormat.Html)
{
Text = "test body"
};
SmtpClient client = new SmtpClient();
client.Connect(host, port, port == 465);//465端口是ssl端口
client.Authenticate(userName, password);
client.Send(message);
client.Disconnect(true);

  

C# 服务器发送邮件失败的更多相关文章

  1. 使用 spring封装的javamail linux服务器发送邮件失败解决

    原文参考:https://blog.csdn.net/a540891049/article/details/79385471 由于某些平台的linxu服务器为了安全起见 屏蔽了发送邮件的常用端口 25 ...

  2. 阿里云服务器发送邮件失败,25端口被禁用,采用ssl 方式 465端口发送

    /** * 邮件工具类 * User: NZG * Date: 2019/3/8 * Time: 12:25 **/ @Data @Component @Configuration @Configur ...

  3. JDK1.8导致发送邮件失败

    问题:本地JDK1.6测试可以发送邮件,但是linux上jdk1.8发送邮件失败.报错: Sending the email to the following server failed : smtp ...

  4. Linux SendMail发送邮件失败诊断案例(三)

    一Linux服务器突然发送不出邮件,检查了很多地方都没有发现异常,检查/var/log/maillog发现如下具体信息: Apr 12 00:36:04 mylinux sendmail[4685]: ...

  5. (转)解决jdk1.8中发送邮件失败(handshake_failure)问题

    解决jdk1.8中发送邮件失败(handshake_failure)问题 作者 zhisheng_tian 2016.08.12 22:44* 字数 1573 阅读 2818评论 6喜欢 9 暑假在家 ...

  6. Linux SendMail发送邮件失败诊断案例(四)

    最近又碰到一起Linux下SendMail发送邮件失败的案例,邮件发送后,邮箱收不到具体邮件, 查看日志/var/log/maillog 发现有"DSN: User unknown" ...

  7. C# 使用 SmtpClient.SendAsync 方法发送邮件失败,总是返回 Cancelled

    问题: 调用 SmtpClient.SendAsync,在 SendCompleted 的回调函数里面总是获取到 e.Cancelled 为 true. 后来测试了一下,相同的代码,只是把 SmtpC ...

  8. PHP用socket连接SMTP服务器发送邮件

    PHP用socket连接SMTP服务器发送邮件 PHP用socket连接SMTP服务器发送邮件学习实验记录: 分析与SMTP会话的一般流程 1. HELO XXX \r\n //XXX就是自己起个名字 ...

  9. Jenkins 邮件配置 || Jenkins 发送邮件失败,提示:Error sending to the following VALID addresses

    jenkins---系统管理---系统设置 在Jenkins URL下填写URL链接 在系统管理员邮件地址下填写发件邮箱,这将是以后发送邮件通知的发件人 如果下载了外部邮件通知 配置一下SMTP se ...

随机推荐

  1. mysql explain using filesort

    创建表,字段tid上无索引(mysql 5.7) CREATE TABLE `test` ( `tid` int(11) DEFAULT NULL, `tname` varchar(12) DEFAU ...

  2. ActiveRecord教程

    (一.ActiveRecord基础) ActiveRecord是Rails提供的一个对象关系映射(ORM)层,从这篇开始,我们来了解Active Record的一些基础内容,连接数据库,映射表,访问数 ...

  3. Centos 的常用命令总结

    设置静态IP和DNS vim /etc/sysconfig/network-scripts/ifcfg-[网卡名称] 修改 BOOTPROTO=static 添加 IPADDR=192.168.1.1 ...

  4. Mybatis通用Mapper介绍和使用

    Mybatis通用Mapper介绍与使用 前言 使用Mybatis的开发者,大多数都会遇到一个问题,就是要写大量的SQL在xml文件中,除了特殊的业务逻辑SQL之外,还有大量结构类似的增删改查SQL. ...

  5. C#获取Windows10屏幕的缩放比例

    现在1920x1080以上分辨率的高分屏电脑渐渐普及了.我们会在Windows的显示设置里看到缩放比例的设置.在Windows桌面客户端的开发中,有时会想要精确计算窗口的面积或位置.然而在默认情况下, ...

  6. 12月第二周bug总结

    1.bug总结 复制 别人的依赖和依赖指定类型 报错 解决:依赖还没加载完成,你就指定了版本型号,所以报错,所以先让他加载依赖,后指定该型号 eureka(优瑞卡) 注册服务 控制台没有显示出来的话 ...

  7. Nginx结构原理全解析

    目录 一.Nginx简单介绍 二.Nginx优势 IO多路复用epoll模型 轻量级 Nginx的基本功能 .Nginx应用场景 Nginx代理 三.Nginx的结构解析 进程操作 事件模型 事件处理 ...

  8. ciscn_2019_s_6

    例行检查 没有开启nx保护,考虑用shellcode来做这道题 程序放入ida查看 我们可以输入48个字符覆盖0使printf打印出bp的值 继续看这里,buf的大小实际上只有0x38的大小,但是re ...

  9. 什么是甘特图(Project)

    <Project2016 企业项目管理实践>张会斌 董方好 编著 名词解释:"甘特图(Gantt Chart)是一种图形化的项目活动及其他相关系统进度情况的水平方向的条状图.&q ...

  10. 小迪安全 Web安全 基础入门 - 第九天 信息打点 - CDN绕过篇&漏洞回链&接口探针&全网扫描&反向邮件

    一. CDN知识-工作原理及阻碍 (一)工作原理 1.概述:CDN的全称是Content Delivery Network,即内容分发网络.CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地 ...