阿里云服务器不能发邮件禁用 25 端口的三种解决方法

阿里云服务器不能发邮件禁用 25 端口的三种解决方法

注:这篇用的语言貌似不是java,java版的看这篇:https://blog.csdn.net/TianXieZuoMaiKong/article/details/80894143

分享使人快乐,遇到的坑通过博文分享给大家,总结解决办法使更多的人节省宝贵的时间去干其他的事,于是我决定写下了这篇博文;

阿里云发送 SMTP 邮件失败 阿里云服务器不能发邮件解决方法 ,第三种方法是可以不用 25 端口,配置 465 端口阿里云发送邮件是成功的,现在阿里云 25 端口管理的很严要申请通过****难度太大,我申请成功过,也申请失败过,最近后面申请的都失败了,我后面就直接用第三种方法配置 465 端口就可以用

第一种方法:

公司最近上了一台阿里云服务器,我部署完系统后发现邮件发送不了,啊,怎么会发不了邮件呢?于是找原因发现是阿里云服务器把邮件的默认 25 端口给禁用掉了为的是不让邮件泛滥,

好吧,于是我想怎么去解封 25 端口,找了下官方的资料,看懂了但是没有找到对应的菜单在哪里,那个 25 端口解封功能隐藏的太深,费了好大个功能终于是找到了,上个图,说下菜单的是如何点击到 25 端口解封功能的,以下是解封的步骤:

img

第一步:鼠标移上右上角贵司 阿里云账号【南京 XXXX】 上, 这个账号就在 【简体中文】功能左边第一个;

第二步:点击【安全管控】;

第三步:点击 【25 端口解封】

第四步:点击【25 端口解封申请】

第五步:填写申请的 IP 和对应的邮箱域名,这里注意的是 服务器 IP 一定要是 阿里云账号下的服务器,域名的话,不同供应商不同的域名, 客户是自己买的阿里云邮箱,邮箱域名是:mail.zhsiwei.com 配置是成功,qq 邮箱可以填写 mail.qq.com 就是用 qq 邮箱去发送邮件,qq 的大家可以去试试这个域名对不,smtp.qq.com 配置申请不成功,126 邮箱,雅虎邮箱,这里就不一一罗列,可以去对应的邮箱里面找下就好,切记这个邮箱域名很重要配置不好审核就通不过。

img

第六步:填写申请表单

img

第七步:填写之后确定后就静静的等待阿里云客服审核一般最多 7 个工作日就好了

第二种方法:

方法来源:https://blog.csdn.net/u013571196/article/details/78376343

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

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

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 来实现发送,大家把这个方法放到自己的项目里面调用就好

/// 
/// 通过System.Web.Mail.MailMessage去发送,可以不被阿里云限制25端口的使用
/// 暂时一般都用465端口
/// 
/// SMTP服务,譬如:smtp.126.com
/// 发件箱
/// 密码
/// 昵称
/// 发件箱
/// 收件箱
/// 主题
/// 内容
/// 附件
/// 端口
/// SSL加密
/// 
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);
    //密码 不是邮箱登陆密码 而是邮箱设置POP3/SMTP 时生成的第三方客户端授权码
    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;
}

阿里云发送 SMTP 邮件失败,阿里云服务器不能发送邮件,其中注意的是填写的密码不是邮箱登陆密码 而是邮箱设置 POP3/SMTP 时生成的第三方客户端授权码,

*自己亲测试过可以用希望对大家有帮助*

https://help.aliyun.com/knowledge_detail/60692.html

posted @ 2020-05-21 00:08  别再闹了  阅读(803)  评论(0)    收藏  举报