1
-
2
1
import smtplib
3
2
from email .mime .text import MIMEText
4
3
from email .header import Header
5
4
import requests
6
5
from bs4 import BeautifulSoup
7
6
import prettytable as pt
8
7
8
+
9
9
def get_Data (url ):
10
10
data_list = []
11
11
response = requests .get (url )
@@ -17,53 +17,67 @@ def get_Data(url):
17
17
list = soup .find_all ('ul' , class_ = 'weather-columns' )
18
18
for item in list :
19
19
data_list .append (item .get_text ())
20
- print ("列表数据:" ,data_list )
20
+ print ("列表数据:" , data_list )
21
21
a = 1
22
- tb = pt .PrettyTable () # 创建PrettyTable对象
23
- tb .field_names = ["日期" ,"天气" ,"详情" ]
22
+ tb = pt .PrettyTable () # 创建PrettyTable对象
23
+ tb .field_names = ["日期" , "天气" , "详情" ]
24
24
for item in data_list :
25
25
# print(a)
26
26
if a != 1 :
27
- tb .add_row ([item .strip ().split ()[0 ]+ item .strip ().split ()[1 ],item .strip ().split ()[2 ],item .strip ().split ()[3 ]])
28
- else : print (item .strip ())
29
- a += 1
27
+ tb .add_row (
28
+ [item .strip ().split ()[0 ] + item .strip ().split ()[1 ], item .strip ().split ()[2 ], item .strip ().split ()[3 ]])
29
+ else :
30
+ print (item .strip ())
31
+ a += 1
30
32
print (tb )
31
33
return tb
32
34
33
35
34
-
35
- def send_mail (msg ,receiver ):
36
+ def send_mail (msg , receiver_list ):
36
37
# 收件人
37
- receiver = receiver
38
- mail_title = '小姐姐,请查收今天以及往后15天的天气预报,愿你三冬暖,春不寒'
39
- mail_body = str (msg )
40
- # 创建一个实例
41
- message = MIMEText (mail_body , 'plain' , 'utf-8' ) # 邮件正文
42
- # (plain表示mail_body的内容直接显示,也可以用text,则mail_body的内容在正文中以文本的形式显示,需要下载)
43
- message ['From' ] = sender # 邮件的发件人
44
- message ['To' ] = receiver # 邮件的收件人
45
- message ['Subject' ] = Header (mail_title , 'utf-8' ) # 邮件主题
46
-
47
- smtp = smtplib .SMTP_SSL ("smtp.qq.com" , 465 ) # 创建发送邮件连接
48
- smtp .connect (smtpserver ) # 连接发送邮件的服务器
49
- smtp .login (username , password ) # 登录服务器
50
- smtp .sendmail (sender , receiver , message .as_string ()) # 填入邮件的相关信息并发送
38
+ # receiver = receiver
39
+ # 循环获取多个接收人
40
+ for receiver in receiver_list :
41
+ mail_title = '小姐姐,请查收今天以及往后15天的天气预报,愿你三冬暖,春不寒'
42
+ mail_body = str (msg )
43
+ # 创建一个实例
44
+ message = MIMEText (mail_body , 'plain' , 'utf-8' ) # 邮件正文
45
+ # (plain表示mail_body的内容直接显示,也可以用text,则mail_body的内容在正文中以文本的形式显示,需要下载)
46
+ message ['From' ] = sender # 邮件的发件人
47
+ message ['To' ] = receiver # 邮件的收件人
48
+ message ['Subject' ] = Header (mail_title , 'utf-8' ) # 邮件主题
51
49
52
- smtp .quit ()
50
+ try :
51
+ smtp = smtplib .SMTP_SSL ("smtp.qq.com" , 465 ) # 创建发送邮件连接
52
+ smtp .connect (smtpserver ) # 连接发送邮件的服务器
53
+ smtp .login (username , password ) # 登录服务器
54
+ smtp .sendmail (sender , receiver , message .as_string ()) # 填入邮件的相关信息并发送
53
55
56
+ smtp .quit () # 关闭连接
57
+ print ("邮件发送成功, 接收人: " , end = receiver )
58
+ print ()
59
+ except smtplib .SMTPException :
60
+ print ("Error: 邮件发送失败" )
54
61
55
62
56
63
if __name__ == '__main__' :
57
- sender = 'xxx @qq.com'
64
+ sender = '2746824385 @qq.com'
58
65
# 发件人邮箱的SMTP服务器(即sender的SMTP服务器)
59
66
smtpserver = 'smtp.qq.com'
60
67
# 发件人邮箱的用户名和授权码(不是登陆邮箱的密码)
61
- username = 'xxxxxx '
68
+ username = '2746824385@qq.com '
62
69
# 邮箱授权码
63
- password = 'xxxxx'
64
- url1 = 'https://tianqi.so.com/weather/'
65
- url_list = ['url1' ,'url1' ]
66
- receiver_list = 'xxx@qq.com'
67
- tb = get_Data (url1 ) #获得每一个用户的数据
68
- send_mail (tb ,receiver_list ) #发送邮件
69
- #
70
+ password = 'wfdxhpmdppggdgdh'
71
+ # url1 = 'https://tianqi.so.com/weather/' #默认北京
72
+ # url1 = 'https://tianqi.so.com/weather/101270106' #成都
73
+ url1 = 'https://tianqi.so.com/weather/101260103' # 贵阳花溪
74
+ # url1 = 'https://tianqi.so.com/weather/101260112' #贵阳观山湖
75
+ # url1 = 'https://tianqi.so.com/weather/101260709' #毕节七星关
76
+ # url1 = 'https://tianqi.so.com/weather/101260215' #遵义
77
+ url_list = ['url1' , 'url1' ]
78
+ # receiver_list = '3402519020@qq.com' #nj
79
+ # receiver_list = ['1806459002@qq.com', '2991759263@qq.com']
80
+ receiver_list = ['1987908986@qq.com' , '2991759263@qq.com' ] # sy
81
+ # receiver_list = '2296452014@qq.com' #ll
82
+ tb = get_Data (url1 ) # 获得每一个用户的数据
83
+ send_mail (tb , receiver_list ) # 发送邮件
0 commit comments