25端口是什么端口服务?如果没开启25端口怎么发邮件?

80次阅读
没有评论

共计 4501 个字符,预计需要花费 12 分钟才能阅读完成。

25 端口是什么端口服务?25 端口为 SMTP(Simple Mail Transfer Protocol,简单邮件传输协议) 服务器所开放,主要用于发送邮件。25 端口被很多木马程序所开放,比如 Ajan、Antigen、Email Password Sender、ProMail、trojan、Tapiras、Terminator、WinPC、WinSpy 等等。拿 WinSpy 来说,通过开放 25 端口,可以监视计算机正在运行的所有窗口和模块。

为什么很多服务器或邮件服务商都禁 25 端口?

25 是邮件专用端口,很少服务器开设了邮件服务,所以都关闭了,更为主要原因是因为 25 端口通常为 SMTP 协议,很多商家都用来做为邮件群发,所以阿里云都默认禁用 25 端口,无法使用 TCP 25 端口连接外部地址。

就连腾讯云也于 2017 年 9 月 10 日后对云主机 25 端口进行了限制 ,所以使用邮件发送一般我们可以使用企业邮件,直接用腾讯云企业邮箱免费版或阿里云企业邮件发送邮件即可!

如果服务商没开启 25 端口怎么发邮件?

服务器的安全组有没有开放 25,如果没开启 25 端口可以用其它端口发送邮件,比如:465 端口,所以不建议使用 25 端口发邮件。

推荐使用 465 端口发送邮件 ,PHP 的有一个 PHPMailer 扩展,可以使用 composer 加载一下!

本着服务器安全的原则,云服务器上的端口非必要的服务就不要开启。因此,如果用户有邮件传送需求,可以开启 25 端口,没有的话最好禁用。

阿里云喜欢用安全组屏蔽端口,于是我就赶紧去配置了安全规则。进站出站都配置了,结果还是不行,然后索性把防火墙也关了,依旧不行。经过一番折腾,发现阿里自带屏蔽 25 端口。简直尴尬,后来找了阿里的一些规则文档,发现需要申请开通屏蔽端口。但是经过咨询了阿里工作人员,发现现在已经不开放 25 端口,因为什么《互联网信息服务管理办法》、《中国互联网协会反垃圾邮件规范》均对垃圾邮件进行说明与管理规范。让我考虑 SSL 加密 SMTP 通过 465 端口进行发件。然后试了一波,发现 465 发送不了 QQ 邮件,尝试了网上说的 587 端口竟然发送成功了

System.Net.Mail 空间的代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

public static bool SendTheMail(string strto, string subj, string bodys)

{

SmtpClient
_smtpClient = 
new SmtpClient();

_smtpClient.EnableSsl
true;

_smtpClient.UseDefaultCredentials
false;

_smtpClient.DeliveryMethod
= SmtpDeliveryMethod.Network;

_smtpClient.Host
"smtp.qq.com";

_smtpClient.Port
= 587;

_smtpClient.Credentials
new System.Net.NetworkCredential("aaa@qq.com""666");

// 密码不是 QQ 密码,是 qq 账户设置里面的 POP3/SMTP 服务生成的 key

MailMessage
_mailMessage = 
new MailMessage("aaa@qq.com""888@yeah.net");

_mailMessage.Subject
= subj;
// 主题 

_mailMessage.Body
= bodys;
// 内容

_mailMessage.BodyEncoding
= Encoding.Default;
// 正文编码 

_mailMessage.IsBodyHtml
true;// 设置为 HTML 格式 

_mailMessage.Priority
= MailPriority.High;
// 优先级 

try

{

_smtpClient.Send(_mailMessage);

Console.WriteLine("发送成功");

return true;

}

catch (Exception
e)

{

Console.WriteLine("发送失败");

throw e;

}

}


还有一种方法:

这个方式是官方给的,主要是通过 System.Web.Mail.MailMessage 来实现发送,大家把这个方法放到自己的项目里面调用就好

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

///
<summary>

///
通过 System.Web.Mail.MailMessage 去发送,可以不被阿里云限制 25 端口的使用

///
暂时一般都用 465 端口

///
</summary>

///
<param name="smtpserver">SMTP 服务, 譬如:smtp.126.com</param>

///
<param name="userName"> 发件箱 </param>

///
<param name="pwd"> 密码 </param>

///
<param name="nickName"> 昵称 </param>

///
<param name="strfrom"> 发件箱 </param>

///
<param name="strto"> 收件箱 </param>

///
<param name="MessageSubject"> 主题 </param>

///
<param name="MessageBody"> 内容 </param>

///
<param name="SUpFile"> 附件 </param>

///
<param name="port"> 端口 </param>

///
<param name="enablessl">SSL 加密 </param>

///
<returns></returns>

public static bool SendWebEmail(string smtpserver, string userName, string pwd, string nickName, string strfrom, string strto,

    string MessageSubject, string MessageBody, string SUpFile, int port, int enablessl
= 0)

{

    System.Web.Mail.MailMessage
mmsg = 
new System.Web.Mail.MailMessage();

    // 邮件主题

    mmsg.Subject
= MessageSubject;

    mmsg.BodyFormat
= System.Web.Mail.MailFormat.Html;

    // 邮件正文

    mmsg.Body
= MessageBody;

    // 正文编码

    mmsg.BodyEncoding
= Encoding.UTF8;

    // 优先级

    mmsg.Priority
= System.Web.Mail.MailPriority.High;

    System.Web.Mail.MailAttachment
data = 
null;

    if (SUpFile
!= 
"")

    {

        SUpFile
= HttpContext.Current.Server.MapPath(SUpFile);
// 获得附件在本地地址

        System.Web.Mail.MailAttachment
attachment = 
new System.Web.Mail.MailAttachment(SUpFile); //create
the attachment

        mmsg.Attachments.Add(attachment); //add
the attachment

    }

    // 发件者邮箱地址

    mmsg.From
string.Format("\"{0}\"<{1}>",nickName,
strfrom);

    // 收件人收箱地址

    mmsg.To
= strto;

    mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate""1");

    // 用户名

    mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername",
userName);

    // 密码

    mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword",
pwd);

    // 端口

    mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport",
port);

    // 使用 SSL

    mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl",
(enablessl == 1 ? 
"true" "false"));

    //Smtp 服务器

    System.Web.Mail.SmtpMail.SmtpServer
= smtpserver;

    try

    {

        System.Web.Mail.SmtpMail.Send(mmsg);

    }

    catch (Exception
ex)

    {

        LogHelper.Error(ex.ToString());

        return false;

    }

    return true;

}

自己亲测试过可以用!

下面我们介绍下服务器常用的端口说明:

21:FTP,FTP 服务器所开放的端口,用于上传、下载。

22:SSH,22 端口就是 SSH 端口,用于通过命令行模式远程连接 Linux 系统服务器。

80:HTTP,用于网站服务例如 IIS、Apache、Nginx 等提供对外访问。

110:POP3,110 端口是为 POP3(邮件协议 3) 服务开放的。

443:HTTPS,网页浏览端口,能提供加密和通过安全端口传输的另一种 HTTP。

3306:MySQL,3306 端口,是 MySQL 数据库的默认端口,用于 MySQL 对外提供服务。

3389:Windows 远程桌面服务,3389 端口是 Windows 2000(2003) Server 远程桌面的服务端口,可以通过这个端口,用“远程桌面”连接工具来连接到云主机。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-06-14发表,共计4501字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)