分享使人快乐,遇到的坑通过博文分享给大家,总结解决办法使更多的人节省宝贵的时间去干其他的事,于是我决定写下了这篇博文;
阿里云发送SMTP邮件失败 阿里云服务器不能发邮件解决方法 ,第三种方法是可以不用25端口,配置465端口阿里云发送邮件是成功的,现在阿里云25端口管理的很严要申请通过难度太大,我申请成功过,也申请失败过,最近后面申请的都失败了,我后面就直接用第三种方法配置465端口就可以用
第一种方法:
公司最近上了一台阿里云服务器,我部署完系统后发现邮件发送不了,啊,怎么会发不了邮件呢?于是找原因发现是阿里云服务器把邮件的默认25端口给禁用掉了为的是不让邮件泛滥,
好吧,于是我想怎么去解封25端口,找了下官方的资料,看懂了但是没有找到对应的菜单在哪里,那个25端口解封功能隐藏的太深,费了好大个功能终于是找到了,上个图,说下菜单的是如何点击到25端口解封功能的,以下是解封的步骤:
第一步:鼠标移上右上角贵司 阿里云账号【南京XXXX】 上, 这个账号就在 【简体中文】功能左边第一个;
第二步:点击【安全管控】;
第三步:点击 【25端口解封】
第四步:点击【25端口解封申请】
第五步:填写申请的 IP和对应的邮箱域名,这里注意的是 服务器IP一定要是 阿里云账号下的服务器,域名的话,不同供应商不同的域名,客户是自己买的阿里云邮箱,邮箱域名是:mail.zhsiwei.com 配置是成功,qq邮箱可以填写 mail.qq.com就是用qq邮箱去发送邮件,qq的大家可以去试试这个域名对不,smtp.qq.com配置申请不成功,126邮箱,雅虎邮箱,这里就不一一罗列,可以去对应的邮箱里面找下就好,切记这个邮箱域名很重要配置不好审核就通不过。
第六步:填写申请表单
第七步:填写之后确定后就静静的等待阿里云客服审核一般最多7个工作日就好了
第二种方法:
方法来源:https://blog.csdn.net/u013571196/article/details/78376343
想到阿里云喜欢用安全组屏蔽端口,于是我就赶紧去配置了安全规则。进站出站都配置了,结果还是不行,然后索性把防火墙也关了,依旧不行。经过一番折腾,发现阿里自带屏蔽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);
//密码 不是邮箱登陆密码 而是邮箱设置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://www.cnblogs.com/axinno1/p/8303130.html