PYTHON 获取邮件发送时间

PYTHON 获取邮件发送时间

今天想用python管理126邮箱, 结果发现了时间转换问题,记录一下.

首先, 获取邮件时间

msg.get(“Date”)
‘24 Aug 2021 21:09:41 -0400’

本来挺简单的, 调用time.strptime() 就行。

匹配 ‘Aug ’ 可以用链接里说的%b, 最开始没看到, 找了好半天。

%b 本地简化的月份名称

问题是 最后的这个‘ -0400’ 出现了问题, 调查得知这是时区。北京时区是东八区,领先UTC八个小时,在电子邮件信头的Date域记为+0800 参见 :世界协调时间(UTC)与中国标准时间,这个计算还挺好玩。

time.strptime() 里只说了

%Z 当前时区的名称

但是匹配出错, 最后改成了 %z, 至少能用了。链接里没说,这里提一下。

最后,可以简单的解决如下

time.strptime(msg.get(“Date”),’%d %b %Y %H:%M:%S %z’)

结果显示

time.struct_time(tm_year=2021, tm_mon=8, tm_mday=24, tm_hour=21, tm_min=9, tm_sec=41, tm_wday=1, tm_yday=236, tm_isdst=-1)

对 tm_isdst 比较好奇,查了一下是表示是否是夏令时, -0400 时区本就表示纽约的夏令时。
参见 python tm_isdst = -1, 0, 1 datetime 的说明

又碰到了烦人的东西,出现了

Tue, 24 Aug 2021 09:17:00 +0800 (CST)
Mon, 23 Aug 2021 09:35:26 +0000 (UTC)
Wed, 28 Jul 2021 00:51:23 +0000 (GMT)

这种格式的, 目前思路先判断下有没有, 有的话删掉。

  • UTC :(Universal Time Coordinated)协调世界时,又称世界统一时间、世界标准时间、国际协调时间。
  • GMT:(Greenwich Mean Time) 格林尼治标准时间,有多种,UTC是其中一种。
  • CST 可以为如下4个不同的时区的缩写(惊呆,这是啥操作):
    1. 美国中部时间:Central Standard Time (USA) UT-6:00
    2. 澳大利亚中部时间:Central Standard Time (Australia) UT+9:30
    3. 中国标准时间:China Standard Time UT+8:00
    4. 古巴标准时间:Cuba Standard Time UT-4:00
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了实现Python的录像邮件发送功能,您可以按照以下步骤进行操作: 1. 导入所需的库:您需要导入`time`、`cv2`、`smtplib`、`MIMEImage`、`MIMEText`和`MIMEMultipart`库。 2. 调用摄像头并保存图像:使用`cv2.VideoCapture`函数调用您的摄像头。在循环中,使用`cap.read()`读取摄像头的每一帧图像,然后使用`cv2.imshow()`显示图像。通过按下空格键,使用`cv2.imwrite()`将当前帧保存为图像文件。 3. 构造邮件内容:使用`MIMEImage`和`MIMEText`类构造邮件的内容。将保存的图像作为附件添加到邮件中,并设置邮件的文本内容。 4. 发送邮件:使用`smtplib.SMTP()`函数连接到SMTP服务器,并使用`login()`函数登录到您的邮箱。然后,使用`sendmail()`函数将邮件发送到指定的邮箱地址。最后,使用`quit()`函数断开与SMTP服务器的连接。 下面是一个示例代码,可以帮助您实现这个功能: ```python import time import cv2 from email.mime.image import MIMEImage from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart import smtplib def send_email(msg): smtp = smtplib.SMTP() smtp.connect('smtp.163.com', port=25) # 请根据您的邮箱设置选择合适的SMTP服务器和端口号 smtp.login('sender@example.com', 'password') # 请替换为您的发件人邮箱和密码 smtp.sendmail('sender@example.com', 'receiver@example.com', msg.as_string()) # 请替换为您的发件人邮箱和收件人邮箱 smtp.quit() def capture_and_send(): cap = cv2.VideoCapture(0) # 请根据您的摄像头索引进行调整 while True: ret, frame = cap.read() cv2.imshow('Camera', frame) if cv2.waitKey(1) & 0xFF == ord('q'): break elif cv2.waitKey(1) & 0xFF == ord('s'): cv2.imwrite('image.jpg', frame) break cap.release() cv2.destroyAllWindows() msg = MIMEMultipart() msg.attach(MIMEText('Please see the attached image.')) with open('image.jpg', 'rb') as f: img = MIMEImage(f.read()) img.add_header('Content-Disposition', 'attachment', filename='image.jpg') msg.attach(img) send_email(msg) if __name__ == '__main__': capture_and_send() ``` 请注意,在上述代码中,您需要将以下内容替换为您自己的信息: - SMTP服务器和端口号 - 发件人邮箱和密码 - 收件人邮箱 - 摄像头索引(如果有多个摄像头) 您可以根据需要对代码进行调整和改进,以适应您的具体要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值