释放双眼,带上耳机,听听看~!
脚本在本地发送没问题,但是同样的系统环境,在阿里云上就是发送不出去
报错信息只能看出 是连接的问题
原因
可能是阿里云 把 你使用的那个端口封了
网上找到的解决办法:
修改连接部分代码
-
换端口号
-
换成ssl方式连接(这个不知到是不是原因)
1
2
3 1smtplib.SMTP_SSL(mail_host, 465)
2
3
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
65
66
67 1# _*_coding:utf-8 _*_
2#邮件服务封装
3
4import smtplib
5from email.mime.text import MIMEText
6from email.utils import formataddr
7
8
9# 邮件预警系统相关信息
10MAIL_CONFIG = {
11 'sender_email':'***', #发送预警邮件的邮箱账号
12 'sender_password':'***', #邮箱授权码
13 'receive_email':'*******@qq.com', #要接收邮件的地址
14 'mail_title':'salve端-异常预警', #邮件标题
15}
16
17
18class EmailHandler(object):
19
20 def __init__(self,sender_email,sender_password, type = 0):
21 """
22 :param sender_email:str 发送人邮箱地址(用户名)
23 :param sender_password:str 发送人在QQ或163申请的授权码
24 :param type:int 1 为QQ邮箱 0 为163邮箱
25 """
26 self.__163 = {'smtp': 'smtp.163.com', 'port': 465}
27 self.__QQ = {'smtp':'smtp.qq.com','port':465} # 阿里云把 25 端口屏蔽了
28 self.sender_email = sender_email
29 self.sender_password = sender_password
30
31 if type == 0:
32 self.server=smtplib.SMTP_SSL(self.__163['smtp'],self.__163['port'])
33 self.server.login (self.sender_email,self.sender_password)
34 elif type == 1:
35 self.server=smtplib.SMTP_SSL(self.__QQ['smtp'],self.__QQ['port'])
36 self.server.login (self.sender_email,self.sender_password)
37
38
39 def send_mail(self,To,subject,content):
40 """
41 :param To:str 接收人邮箱地址
42 :param subject:str 邮件标题
43 :param content:str 邮件内容
44 :return:bool True 成功 False 失败
45 """
46 try:
47 msg = MIMEText(content,'plain','utf-8')
48 msg['From'] = formataddr(['淘宝爬虫异常报警系统',self.sender_email])
49 msg['To'] = formataddr(['',To])
50 msg['Subject'] = subject
51
52 self.server.sendmail(self.sender_email,To,msg.as_string())
53 print("【%s】邮件发送成功"%subject)
54 return True
55 except Exception as e:
56 print("【%s】邮件发送失败,请检查信息:%s"%(subject,e))
57 return False
58
59
60emailer = EmailHandler(MAIL_CONFIG['sender_email'], MAIL_CONFIG['sender_password'])
61
62
63
64if __name__ == '__main__':
65 emailer.send_mail(MAIL_CONFIG['receive_email'],MAIL_CONFIG['mail_title'], "恭喜你被阿里巴巴录取了,hhh")
66
67