python">import smtplib
import time
from email. mime. text import MIMEText
import requests
from lxml import etree
import datetime
from requests. exceptions import RequestException
sender_maile = ''
sender_pass = ''
boy_name = ''
girl_name = ''
receiver_mail = ''
special_day = '2023-10-11'
province = 'guangxi'
city = 'jiangnan-district'
title = ''
header = { 'Referer' : 'https://tianqi.moji.com/weather/china/guangxi' , 'User-Agent' : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"
}
session = requests. session( )
def get_day ( ) : d1 = datetime. datetime. strptime( special_day, '%Y-%m-%d' ) d2 = datetime. datetime. strptime( datetime. datetime. now( ) . strftime( '%Y-%m-%d' ) , '%Y-%m-%d' ) delta = d2 - d1return delta. days
def get_chp ( ) : url = "https://api.lovelive.tools/api/SweetNothings" try : resp = requests. get( url= url, verify= True ) return resp. textexcept RequestException: return "获取土味情话失败"
def get_weathertip ( ) : try : url = f'https://tianqi.moji.com/weather/china/ { province} / { city} ' resp = session. get( url= url, headers= header, verify= False ) html = etree. HTML( resp. text) em = html. xpath( '/html/body/div[4]/div[1]/div[4]/em/text()' ) [ 0 ] return emexcept : return "获取天气提醒失败"
def get_weather ( ) : try : url = f'https://tianqi.moji.com/weather/china/ { province} / { city} ' resp = session. get( url= url, headers= header, verify= False ) html = '' htmls = etree. HTML( resp. text) ul = htmls. xpath( '/html/body/div[5]/div[1]/div[1]/ul' ) for lis in ul: day = lis. xpath( './li[1]/a/text()' ) [ 0 ] src = lis. xpath( './li[2]/span/img/@src' ) [ 0 ] temperature = lis. xpath( './li[3]/text()' ) [ 0 ] air = lis. xpath( './li[5]/strong/text()' ) [ 0 ] . strip( ) color = str ( lis. xpath( './li[5]/strong/@class' ) [ 0 ] ) color = { 'level_1' : '#8fc31f' , 'level_2' : '#d7af0e' , 'level_3' : '#f39800' , 'level_4' : '#e2361a' , 'level_5' : '#5f52a0' , 'level_6' : '#631541' } . get( color, '#000000' ) html += f"""<div style="display: flex;margin-top:5px;height: 30px;line-height: 30px;justify-content: space-around;align-items: center;"><span style="width:15%; text-align:center;"> { day} </span><div style="width:10%; text-align:center;"><img style="height:26px;vertical-align:middle;" src=' { src} ' alt=""></div><span style="width:25%; text-align:center;"> { temperature} </span><div style="width:35%; "><span style="display:inline-block;padding:0 8px;line-height:25px;color: { color} ; border-radius:15px; text-align:center;"> { air} </span></div></div>""" return htmlexcept : return "获取天气失败"
def get_image ( ) : url = "http://wufazhuce.com/" try : resp = requests. get( url= url) html = etree. HTML( resp. text) img_url = html. xpath( '//*[@id="carousel-one"]/div/div[1]/a/img/@src' ) [ 0 ] return img_urlexcept : return "https://example.com/default-image.jpg"
def get_today ( ) : i = datetime. datetime. now( ) date = f" { i. year} / { i. month} / { i. day} " return date
mail_content = f"""<!DOCTYPE html>
<html>
<head><meta charset="UTF-8">
</head>
<body style="margin:0;padding:0;"><div style="width:100%; margin: 40px auto;font-size:20px; color:#5f5e5e;text-align:center"><span>今天是我们在一起的第</span><span style="font-size:24px;color:rgb(221, 73, 73)"> { get_day( ) } </span><span>天</span></div><div style="width:100%; margin: 0 auto;color:#5f5e5e;text-align:center"><span style="display:block;color:#676767;font-size:20px"> { get_chp( ) } </span><br><span style="display:block;color:#676767;font-size:20px"> { get_weathertip( ) } </span><span style="display:block;margin-top:15px;color:#676767;font-size:15px">近期天气预报</span> { get_weather( ) } </div><div style="text-align:center;margin:35px 0;"><span style="display:block;margin-top:55px;color:#676767;font-size:15px"> { boy_name} ❤️ { girl_name} </span><span style="display:block;margin-top:25px;font-size:22px; color:#9d9d9d;"> { get_today( ) } </span><img src=' { get_image( ) } ' style="width:100%;margin-top:10px;" alt=""></div>
</body>
</html>"""
def send_mail ( ) : try : maile_obj = smtplib. SMTP_SSL( 'smtp.qq.com' , 465 ) maile_obj. login( sender_maile, sender_pass) msg = MIMEText( mail_content, _subtype= 'html' , _charset= 'utf-8' ) msg[ 'Subject' ] = titlemsg[ 'From' ] = f" { boy_name} < { sender_maile} >" msg[ 'To' ] = f" { girl_name} < { receiver_mail} >" maile_obj. sendmail( sender_maile, receiver_mail, msg. as_string( ) ) maile_obj. quit( ) print ( "发送成功!" ) except smtplib. SMTPException as e: print ( "邮件发送失败:" , e) if __name__ == '__main__' : send_mail( ) print ( "当前时间:" , datetime. datetime. now( ) )