如何在Perl中优雅地以RFC822格式打印日期的分支?,但Windows具体.
在Windows上:
C:\> perl -MPOSIX
print strftime('%z', localtime()),"\n";
产量:
Central Daylight Time
我在期待:
-0500
任何人都会在Linux系统上.如何在Windows上获得"-0500"?
更新:
这样做真的很糟糕吗?(假设我不允许安装DateTime或以任何方式打包它)
C:\> perl -MPOSIX
sub tzoffset {
my $t = time();
my $utc = mktime(gmtime($t));
my $local = mktime(localtime($t));
return ($local - $utc);
}
sub zformat {
my ($tzoffset) = @_;
my $z = '';
if ($tzoffset < 0) {
$z .= '-';
$tzoffset *= -1;
}
my $hours = floor($tzoffset / 60 / 60);
my $minutes = $tzoffset - $hours …Run Code Online (Sandbox Code Playgroud) Python 的email模块非常适合解析头文件。但是,To:header 可以有多个接收者,也可能有多个To:header。那么如何拆分每个电子邮件地址呢?我不能在逗号上拆分,因为可以引用逗号。有没有办法做到这一点?
演示代码:
msg="""To: user1@company1.com, "User Two" <user2@company2.com", "Three, User <user3@company3.com>
From: anotheruser@user.com
Subject: This is a subject
This is the message.
"""
import email
msg822 = email.message_from_string(msg)
for to in msg822.get_all("To"):
print("To:",to)
Run Code Online (Sandbox Code Playgroud)
电流输出:
$ python x.py
To: user1@company1.com, "User Two" <user2@company2.com", "Three, User <user3@company3.com>
$
Run Code Online (Sandbox Code Playgroud) 根据我的理解mbox,Python 3.6 标准库中的类生成类型为 的旧式消息对象email.message.Message。
email.message.EmailMessage3.4/3.6 中引入的较新类提供了对消息内容的更轻松访问(通过get_content()和get_body())。如何email.message.Message将从mbox迭代器获得的对象转换为email.message.EmailMessage对象?
我该如何强制该Time.rfc2822功能吐出+0000?
Ruby让我很容易地解析RFC2822格式化时间:
require 'time'
time = Time.parse('14 Aug 2009 09:28:32 +0000')
puts time
=> "2009-08-14 05:28:32 -0400"
Run Code Online (Sandbox Code Playgroud)
但是显示时间呢?请注意,它解析的时间是本地时间。不用担心,我可以使用以下命令将其转换为UTC时间gmtime:
puts time.gmtime
=> "2009-08-14 09:28:32 UTC"
Run Code Online (Sandbox Code Playgroud)
然后,我可以将其放回RFC2822格式:
puts time.gmtime.rfc2822
=> "Fri, 14 Aug 2009 09:28:32 -0000"
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不是我想要的。请注意,+0000现在是-0000。根据RFC2822,这是因为:
格式“ +0000”应用于表示世界标准时间。尽管“ -0000”也表示世界标准时间,但它用于指示时间是在可能位于世界标准时间以外的本地时区的系统上生成的,因此指示日期时间不包含有关当地时间的信息。区。
太好了- +0000除了猴子修补rfc2822功能,我该如何强制?
将xs:dateTime格式化为RFC 822的正确方法是什么?
我需要类似rfc822.AddressList的内容来将电子邮件的“ TO”标头字段的内容解析为单个地址。由于不建议使用rfc822支持电子邮件软件包,因此我在该处查找了类似的内容,但找不到任何东西。有人知道我应该用什么吗?
谢谢!
是root@[127.1]一个语法上有效的电子邮件地址?
为什么?为什么不?
在我重新发明轮子并编写自己的解析器之前,我想我应该看看是否有其他可用的东西。我偶然发现imap_rfc822_parse_headers(),这似乎正是我想要的。不幸的是,IMAP 扩展在我的环境中不可用。
我在网上和 Stack Overflow 上看到了很多替代方案。不幸的是,它们都是为电子邮件而构建的,并且做的事情超出了我的需要......经常解析整个电子邮件并以特殊方式处理标头。我只想简单地将这些标头解析为有用的对象或数组。
是否有可用的直接 PHP 版本imap_rfc822_parse_headers(),或者类似的东西可以解析这样的数据?如果没有,我会自己写。
robot-id: abcdatos
robot-name: ABCdatos BotLink
robot-from: no
robot-useragent: ABCdatos BotLink/1.0.2 (test links)
robot-language: basic
robot-description: This robot is used to verify availability of the ABCdatos
directory entries (http://www.abcdatos.com), checking
HTTP HEAD. Robot runs twice a week. Under HTTP 5xx
error responses or unable to connect, it repeats
verification some hours later, verifiying if that was a
temporary situation.
robot-history: This …Run Code Online (Sandbox Code Playgroud) 附件上的Content-ID标头必须是表单local-part "@" domain.Gmail的Content-ID中没有内容@.这是一个真正的错误,还是我误读了规范?
当我尝试重新发送从Gmail发送的附有内联图片的电子邮件时,我发现了这个问题.我的邮件程序(SwiftMailer)声称Content-ID无效.
这是我正在使用的电子邮件.我是通过在Gmail中插入内嵌图像并通过电子邮件发送给自己来创建的.
以下是规范的相关部分(据我所知):
Content-ID Header Field
In constructing a high-level user agent, it may be desirable to allow
one body to make reference to another. Accordingly, bodies may be
labelled using the "Content-ID" header field, which is syntactically
identical to the "Message-ID" header field:
id := "Content-ID" ":" msg-id
Run Code Online (Sandbox Code Playgroud)
msg-id = "<" addr-spec ">" ; Unique message id
addr-spec = local-part "@" …Run Code Online (Sandbox Code Playgroud) 我希望加密某些在加密邮件中发送的邮件标头 (Subject和Reply-To)。我正在使用整个 MIME(包括标头)并成功对其进行加密。我可以成功地将此 S/MIME 加密邮件发送到我的邮件客户端 (Thunderbird)。它将成功解密并验证为已签名。
但是,我的邮件客户端不使用在内部加密 MIME 中发送的任何标头。
根据RFC-5751,我应该将我的邮件包装在一条message/rfc822消息中,但我不知道如何实现这一点。
以下是我正在创建的消息示例。
我的第一个问题是,我创建的最后一个 MIMEmessage/rfc822是否结构正确?这可能是邮件客户端的问题吗?我可以对Reply-To标题进行事件加密吗?
如果我能得到一个mesage/rfc822封装消息的例子,那将非常有帮助。
要加密的邮件
这将成功生成已签名的接收邮件,并且邮件客户端正确解释了Subject/Reply-To标头。
Content-Type: multipart/signed; protocol="application/pkcs7-signature";
micalg=sha256; boundary="--_NmP-d017e0e3556f7bbc-Part_1"
From: sender@domain.com
Sender: senderdomain.com
To: recipient@domain.com
Reply-To: keepsecret@domain.com
Subject: A Secret Subject
Message-ID: <400b1383-362b-eed7-0719-6b2a2e231143>
Date: Mon, 24 Feb 2020 15:59:19 +0000
MIME-Version: 1.0
----_NmP-d017e0e3556f7bbc-Part_1
Content-Type: text/plain
Content-Transfer-Encoding: 7bit
My Message that will be encrypted
----_NmP-d017e0e3556f7bbc-Part_1
Content-Type: application/pkcs7-signature; name=smime.p7s
Content-Transfer-Encoding: base64
Content-Disposition: …Run Code Online (Sandbox Code Playgroud)