任何人都可以建议一个将RFC 822格式的日期字符串转换为TDateTime的Delphi库吗?
例如2011年10月24日13:54:55 -0000
我想这可能是因为服务器返回的格式略有不同而容易出错,因此经过试验和测试的例程会很好.
使用自定义短日期格式sting,可以使用内置的StrToDateTime例程来实现吗?
注意:我正在使用Delphi 2010
查看 的date手册页,我找不到转换为 rfc822 的标准方法(例如:从 unix 时间戳)。我简要地浏览了规范,但我对主题的了解不够,无法获得正确的格式。有没有一种简单的方法可以使用标准 Linux 终端工具转换为 rfc822?
我正在尝试使用PHP发送和阅读电子邮件。到目前为止,我发现我必须使用函数来编码特殊字符mb_encode_mimeheader(),但是不必编码空格。
我还发现,地址栏中的括号不起作用:(http://stackoverflow.com/questions/11989915/is-there-an-error-in-phps-imap-fetch-overview-function-when -reading-headers-w)。例如,PHP无法访问header-section From: Admin [] <user@mail.tld>,但可以读取header-section From: "Admin []" <user@mail.tld>。
因此,显然括号在邮件标题中具有特殊含义(至少对于PHP)。是有什么在Mailheader特殊字符,什么北京时间它们的意义,并在那里做他们需要进行编码/报价?
例如,尽管主题也是标头的一部分,但PHP的主题中的括号没有问题。
看来引号可以帮助我解决该问题(http://tools.ietf.org/html/rfc5322#section-3.2.4-我仍然不是100%确定这是PHP的问题还是不正确的邮件头)。但是如何使用引号,以及引号会转义什么呢?
在http://tools.ietf.org/html/rfc5322#section-3.2.4中说:
包含除原子中允许的字符以外的字符的字符串可以用带引号的字符串格式表示,该字符用引号(DQUOTE,ASCII值34)包围。
因此,我现在应该自己“转义/引用”每个字符
From: Admin "[""]" <user@mail.tld>
Run Code Online (Sandbox Code Playgroud)
还是一起引用所有内容好吗?
From: "Admin []" <user@mail.tld>
Run Code Online (Sandbox Code Playgroud)
但是,如果其他控制序列用引号引起来,会发生什么情况?例如ÄÖÜ,我的String中有特殊字符,这些特殊字符编码为=?UTF-8?B?w4PChMODwpbDg8Kc?=。因此,根据RFC,“带引号和编码的”字符串是否还可以?
From: "Admin [=?UTF-8?B?w4PChMODwpbDg8Kc?=]" <user@mail.tld>
Run Code Online (Sandbox Code Playgroud) 有没有人知道Python模块会将RFC 822时间戳转换为Python中的人类可读格式(如Twitter所做的那样)?
我找到了解析时间,这似乎是相反的.
我必须对电子邮件地址(RFC 822)进行正则表达式,并且我想知道本地部分和域中允许使用哪些字符。
T找到了这个http://tools.ietf.org/html/rfc822#section-6.1,但我没有看到它说出哪些是有效字符。
是一封具有不同字符编码的电子邮件,它的标题和正文有效吗?用例:在处理电子邮件时,我应该单独检查它的标题的字符编码,还是检查它的正文是否足够?有人可以指导我如何解决这个问题吗?提前致谢!
我从C#中的DateTime对象上获取了一些ToString()调用返回的垃圾数据,我担心在用它调整一段时间后我会感到难过.
该函数应该格式化日期以符合RFC 822(根据RSS规范的要求),看起来像:
public static string FormatPubDate(DateTime pubDate)
{
string _rfc822Format = "ddd, dd MMM yyyy HH:mm:ss";
string _tmp = pubDate.ToUniversalTime().ToString(_rfc822Format);
return pubDate.ToString(_tmp + " UT");
}
Run Code Online (Sandbox Code Playgroud)
从我能阅读的DateTime ToString()文档中我应该得到它.
但是,对于某些日期,它会产生垃圾:
Console.WriteLine(FormatPubDate(new DateTime(2008, 12, 16, 13, 44, 33)));
Console.WriteLine(FormatPubDate(new DateTime(2008, 12, 17, 13, 44, 33)));
Console.WriteLine(FormatPubDate(new DateTime(2009, 3, 18, 4, 17, 20)));
Console.WriteLine(FormatPubDate(new DateTime(2009, 4, 30, 10, 44, 33)));
Run Code Online (Sandbox Code Playgroud)
产量:
Tue, 16 Dec 2008 19:44:33 UT
We17, 17 Dec 2008 19:44:33 UT
We18, 18 3ar 2009 09:17:20 UT
T10u, 30 Apr …Run Code Online (Sandbox Code Playgroud) 我正在使用PHP创建RSS源,并使用PHP的构建DATE_RFC822格式设置日期:
<lastBuildDate>' . date(DATE_RFC822, strtotime($posts['date'])) . '</lastBuildDate>
Run Code Online (Sandbox Code Playgroud)
结果如下:
<lastBuildDate>Tue, 01 Oct 13 10:10:00 +0200</lastBuildDate>
Run Code Online (Sandbox Code Playgroud)
当我现在尝试验证它时,它会通过,但建议如下:
有问题的RFC 822日期时间值:Tue,01 Oct 13 10:10:00 +0200
其中包含此页面上的更多信息:有问题的RFC 822日期时间值:
指定的值必须符合RFC822定义的日期和时间规范,但年份应该表示为四位数.
如何将年份更新为四位数值?
我试图阅读我的电子邮件 python 版本 3.6.9 和 pip3 版本 9.0.1。当我运行以下脚本时,它返回如下所示的错误。我尝试使用 pip 和 pip3 安装 rfc822。你能帮我解决这个问题吗?
非常感谢埃里克
错误
Traceback (most recent call last):
File "/home/webapp/git/RA Functions/test.py", line 3, in <module>
import rfc822
ModuleNotFoundError: No module named 'rfc822'
Run Code Online (Sandbox Code Playgroud)
代码
import poplib
import string, random
import rfc822
from io import StringIO
def readMail():
SERVER = "pop.gmail.com"
USER = "myemail@gmail.com"
PASSWORD = "mypassword"
# connect to server
server = poplib.POP3(SERVER)
# login
server.user(USER)
server.pass_(PASSWORD)
# list items on server
resp, items, octets = server.list()
for i …Run Code Online (Sandbox Code Playgroud)