88 lines
2.6 KiB
Python
88 lines
2.6 KiB
Python
|
import imaplib
|
|||
|
import smtplib
|
|||
|
import email
|
|||
|
from email.header import decode_header
|
|||
|
from email.mime.text import MIMEText
|
|||
|
from imapclient import IMAPClient
|
|||
|
|
|||
|
def send_email(subject, body, to_email):
|
|||
|
# 这个函数名为send_email,它接受三个参数:
|
|||
|
# subject(邮件主题)、body(邮件内容)和to_email(收件人的电子邮件地址)。
|
|||
|
from_email = 'yizeguo1@126.com'
|
|||
|
|
|||
|
mail_pass = 'CHRIZKWQSRWYLBOL'# 126授权码
|
|||
|
# mail_pass = 'pwvzuqbiysqshgha'# qq授权码
|
|||
|
|
|||
|
msg = MIMEText(body)
|
|||
|
msg['Subject'] = subject
|
|||
|
msg['From'] = from_email
|
|||
|
msg['To'] = to_email
|
|||
|
|
|||
|
server = smtplib.SMTP('smtp.126.com', 25)
|
|||
|
# server = smtplib.SMTP('smtp.qq.com', 465)
|
|||
|
server.starttls()
|
|||
|
server.login(from_email, mail_pass)
|
|||
|
server.sendmail(from_email, to_email, msg.as_string())
|
|||
|
server.quit()
|
|||
|
|
|||
|
|
|||
|
def get_latest_email_body(to_email):
|
|||
|
# 连接到126邮箱的IMAP服务器
|
|||
|
mail = IMAPClient("imap.126.com")
|
|||
|
|
|||
|
from_email = 'yizeguo1@126.com'
|
|||
|
mail_pass = 'CHRIZKWQSRWYLBOL'# 126授权码
|
|||
|
mail.login(from_email, mail_pass)
|
|||
|
mail.id_({"name": "IMAPClient", "version": "2.1.0"})
|
|||
|
|
|||
|
# mail.list_folders()
|
|||
|
print(mail.list_folders())
|
|||
|
# 选择收件箱
|
|||
|
messages = mail.select_folder(folder="inbox", readonly=True)
|
|||
|
|
|||
|
# 搜索发件人为指定邮箱的所有邮件
|
|||
|
messages = mail.search(None, f'(FROM "{to_email}")')
|
|||
|
|
|||
|
# 获取邮件ID列表
|
|||
|
mail_ids = messages[0].split()
|
|||
|
if not mail_ids:
|
|||
|
print("No emails found.")
|
|||
|
return None
|
|||
|
|
|||
|
# 获取最新一封邮件的ID
|
|||
|
latest_email_id = mail_ids[-1]
|
|||
|
|
|||
|
# 获取最新一封邮件的数据
|
|||
|
status, msg_data = mail.fetch(latest_email_id, "(RFC822)")
|
|||
|
|
|||
|
for response_part in msg_data:
|
|||
|
if isinstance(response_part, tuple):
|
|||
|
# 解析邮件
|
|||
|
msg = email.message_from_bytes(response_part[1])
|
|||
|
|
|||
|
# 获取纯文本邮件正文
|
|||
|
if msg.get_content_type() == "text/plain":
|
|||
|
body = msg.get_payload(decode=True).decode()
|
|||
|
print("Body:", body)
|
|||
|
return body
|
|||
|
|
|||
|
# 关闭连接并登出
|
|||
|
mail.close()
|
|||
|
mail.logout()
|
|||
|
return None
|
|||
|
|
|||
|
|
|||
|
if __name__ == "__main__":
|
|||
|
|
|||
|
# send_email("测试", 'test', "guoyize2209@163.com")
|
|||
|
# id_info = {
|
|||
|
# 'name': 'myname',
|
|||
|
# 'version': '1.0.0',
|
|||
|
# 'vendor': 'myclient',
|
|||
|
# 'support-email': 'yizeguo1@126.com'
|
|||
|
# }
|
|||
|
body = get_latest_email_body("guoyize2209@163.com")
|
|||
|
if body:
|
|||
|
print("Latest email body:", body)
|
|||
|
else:
|
|||
|
print("No plain text email found.")
|