邮件发送时间怎么修改 python_使用python通过电子邮件发送日期时间
我试图使用python脚本解析电子邮件的日期时间。
在我打开邮件时,邮件日期值如下所示...
1
2
3
4from: abcd@xyz.com
to: def@xyz.com
date: Tue, Aug 28, 2012 at 1:19 PM
subject: Subject of that mail
我正在使用代码
1
2
3
4
5
6
7mail = email.message_from_string(str1)
#to = re.sub('','',mail["To"])
to = parseaddr(mail.get('To'))[1]
sender = parseaddr(mail.get('From'))[1]
cc_is = parseaddr(mail.get('Cc'))[1]
date = mail["Date"]
print date
使用python解析的相同邮件日期时间的输出如下所示,具有时间偏移。
1Tue, 28 Aug 2012 02:49:13 -0500
我在哪里实际上是希望的
1Tue, Aug 28, 2012 at 1:19 PM
我对这两个价值观的关系感到很困惑。
任何人都可以帮我弄明白我需要同时进入邮件详细信息。
时区!乐趣。:-)
stackoverflow.com/questions/1790795/…
查看GMail中的电子邮件时,会在显示发送电子邮件的日期和时间时使用您的本地时区。解析"Tue,2012年8月28日02:49:13 -0500",然后更新到您当地的时区,并以GMail特定的方式格式化。
解析和格式化stdlib方式
email.utils模块包含一个parsedate_tz()功能,专门处理带有时区偏移的电子邮件标头。
它返回与time.struct_time兼容的元组,但添加了时区偏移量。附加的mktime_tz()函数将该元组转换为偏移值(自UNIX纪元以来的秒数)。然后可以轻松地将该值转换为datetime.datetime()类型对象。
同一模块还具有formatdate()功能,可将UNIX纪元时间戳转换为与电子邮件兼容的日期字符串:
1
2
3
4
5
6
7>>> from email.utils import parsedate_tz, mktime_tz, formatdate
>>> import time
>>> date = 'Tue, 28 Aug 2012 02:49:13 -0500'
>>> tt = parsedate_tz(date)
>>> timestamp = mktime_tz(tt)
>>> print formatdate(timestamp)
Tue, 28 Aug 2012 07:49:13 -0000
现在我们有一个适合外发电子邮件的格式化日期。要将其打印为我的本地时区(由我的计算机确定),您需要将localtime标志设置为True:
1
2>>> print formatdate(timestamp, True)
Tue, 28 Aug 2012 08:49:13 +0100
使用更好的工具进行解析和格式化
请注意,当我们尝试处理时区时,事情变得毛茸茸,并且formatdate()函数没有给你任何选项来格式化一些不同的东西(比如GMail),也不会让你选择不同的时区来工作用。
输入外部python-dateutil模块;它有一个解析函数,可以处理任何事情,并正确支持时区
1
2
3
4>>> import dateutil.parser
>>> dt = dateutil.parser.parse(date)
>>> dt
datetime.datetime(2012, 8, 28, 2, 49, 13, tzinfo=tzoffset(None, -18000))
parse()函数返回一个datetime.datetime()实例,这使得格式化更容易。现在我们可以使用.strftime()函数将其输出为您的电子邮件客户端:
1
2>>> print dt.strftime('%a, %b %d, %Y at %I:%M %p')
Tue, Aug 28, 2012 at 02:49 AM
当然,那仍然在当地时区;将其转换为您的时区,使用.astimezone()方法,使用新的tzone对象。 python-dateutil包对我们来说有些方便。
以下是如何在本地时区(到您的机器)打印它:
1
2
3>>> import dateutil.tz
>>> print dt.astimezone(dateutil.tz.tzlocal()).strftime('%a, %b %d, %Y at %I:%M %p')
Tue, Aug 28, 2012 at 09:49 AM
或者使用特定的时区代替:
1
2>>> print dt.astimezone(dateutil.tz.tzstr('Asia/Kolkata')).strftime('%a, %b %d, %Y at %I:%M %p')
Tue, Aug 28, 2012 at 07:49 AM
实际上我要求输出我可以捕获的解析邮件...比如CC,TO或SENDER .....你引导我格式化那个日期时间字符串......我很舒服。
我刚刚再次更新了我的问题。
对,你对我认为的时区感到困惑;电子邮件日期被解析为一个时区,显示在另一个时区。这通常不是问题。
请注意,您的问题远非明确;目前尚不清楚您在哪里看到价值观和预期。
@Martijin:现在好吗?实际上我无法得到字符串"Tue,2012年8月28日下午1:19"..当我在浏览器中使用我的gmail acc打开它时,我可以在邮件中看到。
2012年8月28日星期二13:19:21在亚洲/加尔各答转换到2012年8月28日星期二02:49:21 GMT-5 ...所以这是我的最终答案..谢谢@Martijin的帮助。
给出了很长的更新
有parsedate_tz和mktime_tz,即你不需要手工解析UTC偏移量
@ J.F.Sebastian:谢谢;不知道我当时错过了那些。在我发布这个函数之后,这些函数并没有被添加..: - /
你只能使用stdlib来做到这一点:
1
2
3
4>>> from email.utils import parsedate_tz, mktime_tz, formatdate
>>> ts = mktime_tz(parsedate_tz('Tue, 28 Aug 2012 02:49:13 -0500'))
>>> formatdate(ts, localtime=True) # assuming Asia/Kolkata is the local timezone
'Tue, 28 Aug 2012 13:19:13 +0530'
如果您想使用PM格式数小时:
1
2
3>>> from datetime import datetime
>>> datetime.fromtimestamp(ts).strftime('%a, %b %d, %Y at %I:%M %p')
'Tue, Aug 28, 2012 at 01:19 PM'
JF Sebastian只是一个错字而不是日期时间他需要datetime.datetime示例应该是datetime.datetime.fromtimestamp(ts).strftime('%a,%b%d,%Y at%I:%M%p' )
@Dung:代码按原样运行。看看进口线。
此外,如果您希望日期格式与mysql日期时间格式匹配,则为:>>> datetime.fromtimestamp(ts).strftime('%y-%m-%d%H:%M:%S')
@Dung:再次,代码按原样运行。它产生OP明确要求的时间格式。看看这个问题。
可以选择以下代码
1
2
3
4start = f.find('date:') + 5 # +5 is to exclude 'date'+':' i.e.(4+1=5)
end = f.find('subject:', start) # parse from date to subject
date_time = f[start:end]
print date_time #it will print"Tue, Aug 28, 2012 at 1:19 PM"
邮件发送时间怎么修改 python_使用python通过电子邮件发送日期时间相关推荐
- Python将字符串转换为日期时间
In this tutorial, we'll see how to convert string to datetime in python. 在本教程中,我们将看到如何在python中将字符串转换 ...
- Python处理ISO 8601日期时间
文章目录 一.ISO 8601日期时间 1. 简介 2. 格式 3. 时区划分 二.Python处理ISO 8601日期时间 1. 将 ISO 8601 转化为 UTC 标准日期时间 / 本地时间 2 ...
- Python中的对日期时间的处理
我们可以通过学习在Python中对日期时间的处理,可以在快速的完成工作,比如: 将日期时间作为日志信息的内容输入 计算某一个功能的执行时间 用日期命名一个文件的名称 记录或者展示文件的发布或修改时间 ...
- python自学时间-Python中基本的日期时间处理的学习教程
Python程序能用很多方式处理日期和时间.转换日期格式是一个常见的例行琐事.Python有一个 time 和 calendar 模组可以帮忙. 什么是Tick? 时间间隔是以秒为单位的浮点小数. 每 ...
- Python 的6个日期时间库
曾几何时,我们中的一个人(Lacey)盯了一个多小时的python文档中描述日期和时间格式化字符串的表格.当我试图编写从 API 中将日期时间字符串转换为Python datetime对象时,我很难理 ...
- Python—6.1、日期时间
文档目录 1.time模块 时间元组 格式化符号 日期转换 日历模块 2.datetime模块 2.1.日期时区 2.2.当前时间 2.3.常用操作 2.4.时间加减 3.dateutil模块 1.t ...
- java发送gmail_如何在Gmail中轻松通过电子邮件发送人群
java发送gmail Mailing lists are an old tool in the email arsenal, but their implementation in Gmail is ...
- java精准查询mysql时间_在mysql查询中查找与指定日期时间最接近的日期时间
我试图在mysql数据库中找到一个datetime值,它与我指定的日期时间最接近,我遇到了一些麻烦 . 以下伪代码是我想要实现的: SELECT one FROM table WHERE dateti ...
- php 日期时间 取日期,从PHP中的文本中提取日期,时间和日期范围
我正在构建一个本地事件日历,它采用RSS提要和网站抓取并从中提取事件日期. 我之前已经问过如何从PHP here中的文本中提取日期,并在MarcDefiant时获得了一个很好的答案: function ...
最新文章
- 高精度垃圾分类模型开发与硬件集成
- HTML5----CSS显示半个字符
- 3142:[HNOI2013]数列 - BZOJ
- linux I/O--I/O多路复用--详解(四)
- spring cloud 2.3.x 注册中心eureka 配置
- M理论能否成为解释一切的“万有理论”?
- 互联网晚报 | 3月1日 星期二 |​ 2022年苹果可能推出三款Apple Watch;“国家中小学智慧教育平台”投入试运行...
- python语音开发库-各种 Python 库/模块/工具
- Angular CLI 生成项目时css less scss样式使用说明
- 叉积求点到平面距离_求一个点到曲线或折线的最短距离?
- lIUNX如何加载U盘,光盘
- 洛谷OJ P3368 【模板】树状数组 2
- stm32f4串口烧录[flymcu]
- edius多机位多轨编辑
- matlab canon,Canonical state-space realization
- 实现一个直播视频app源码的邀请码功能
- localhost访问不了的解决方法
- 基于javaweb小说评价下载网站管理系统 ssm框架
- pikachu——验证码绕过(on client)python脚本解法
- 什么是一网统管?终于有人讲明白了