电子邮件的邮件ID标题有多独特?如果我向两个人发送电子邮件,两者是否都有相同的消息ID?或者他们会不同?
(这假设没有人做任何有趣的事情.我知道垃圾邮件,所有的规则都在窗外......)
电子邮件标题区分大小写?
例如,Content-Type不同于Content-type?
根据RFC 5322,我没有看到任何关于区分大小写的内容.但是,我发现使用PEAR Mail_mime模块创建MIME消息时出现问题,而且所有内容都指向我们的SMTP服务器使用Content-type而MIME-version不是Content-Type和MIME-Version.我尝试使用另一台SMTP服务器(如GMail),但不幸的是我们的网络服务器非常紧密.
我正在尝试从电子邮件中检索日期.起初它很容易:
message = email.parser.Parser().parse(file)
date = message['Date']
print date
Run Code Online (Sandbox Code Playgroud)
我收到:
'Mon, 16 Nov 2009 13:32:02 +0100'
Run Code Online (Sandbox Code Playgroud)
但我需要一个不错的日期时间对象,所以我使用:
datetime.strptime('Mon, 16 Nov 2009 13:32:02 +0100', '%a, %d %b %Y %H:%M:%S %Z')
Run Code Online (Sandbox Code Playgroud)
提升了ValueError, since %Z isn't format for +0100.但我在文档中找不到适当的时区格式,只有这个%Z区域.有人可以帮助我吗?
我这可能是一个奇怪的问题,但我想我会继续问问.说,我通过特殊客户端使用IMAP SMTP 发送电子邮件.此客户端在发送电子邮件之前会向电子邮件中添加一些自定义标头.收件人收到此电子邮件并直接回复我(也可能是CC的一些人).
我的问题是:鉴于上面的例子,这些X-header是否会在线程中的所有新消息中持续存在?
我能想到的一件事是客户端会知道它发送的原始电子邮件.对此电子邮件的所有后续回复都将有一个"回复"标题,其值等于上一封电子邮件的"Message-Id".在看到客户端发送的原始邮件之前,我不明白为什么我无法抓取这些回复帖子,从而导出原始的自定义标头.
也许我在想这个.有什么建议?:)
我想改变Message-ID使用ActionMailer从Ruby on Rails v3应用程序发送的电子邮件的标题部分中的标题.
我在localhost上使用Sendmail进行邮件传递.
我在Sendmail或ActionMailer中配置它吗?
我在哪里配置它(如果它是ActionMailer):文件config/夹中的文件或app/mailers /文件夹中的文件?
德语变音符号(ä,ö,ü)和sz字符(ß)是否在电子邮件地址的本地部分有效?
例如,请使用此电子邮件地址: björn.nußbaum@trouble.org
RFC 5322非常清楚地说,不允许使用变音符号(以及其他国际字符).如果我看一下第3.4.1章,关于本地部分有如下内容:
local-part = dot-atom / quoted-string / obs-local-part
那是什么意思dot-atom?它在第3.2.3章中描述:嗯,长话短说:Printable US-ASCII characters not including specials
所以在整个RFC 5322中我看不到任何有关国际字符的内容.或者RFC 5322已经过时了?(RFC 822 - > RFC 2822 - > RFC 5322)
更新: 对我来说重点是:目前的标准是什么?允许或不允许国际字符? RFC 5322标记为DRAFT STANDARD.所以我认为这是最新的依赖来源,不是吗?
Efran提到,RFC 5336允许使用国际字符.但RFC 5336被标记为实验,所以这对我来说并不重要.
我经常看到自动电子邮件后缀有一条消息
*请注意:此电子邮件是从无法接收传入电子邮件的地址发送的.如果您需要再次就此问题与我们联系,请使用上面的链接.
请不要回复这个信息; 它是从一个不受监控的电子邮件地址发送的.此消息是与您使用Twitter相关的服务电子邮件.
需要帮忙?访问Google Checkout帮助中心.请不要回复这个信息.
直接在此警告下方,Gmail会向我显示回复输入字段.在我看来,应该有一些标题可以附加到这样的自动电子邮件,告诉收件人的电子邮件客户端不允许回复.
有这样的标题吗?如果没有,控制电子邮件格式的团体是否曾经讨论过它?
的RFC 5321,5322和6531有验证电子邮件地址复杂的规则.他们:
由于这些复杂的规则,根据RFC测试给定字符串是否是语法上有效的电子邮件地址不能仅使用正则表达式执行.
显然,主要电子邮件提供商不支持其中许多规则.
从历史上看,为电子邮件地址创建如此复杂的规则的动机是什么?在对电子邮件的起源维基百科的文章似乎意味着,从20世纪80年代早期的现代化标准旨在覆盖所有旧电子邮件十岁上下的系统用自己特定的标准和语法.
然而,标准,电子邮件提供商和电子邮件最终用户的实施者都对工作系统有既得利益,当规则不太晦涩并且可以轻松地转换为通过有限数量测试的软件时,这更容易实现,那么,为什么我们今天有一个如此复杂的标准,没有人完全使用它?
从历史上看,XML在很大程度上已被JSON取代,其成功部分归因于其语法的简单性.
RFC 5322的第3.6.2节将reply-to标头定义为:
reply-to = "Reply-To:" address-list CRLF
Run Code Online (Sandbox Code Playgroud)
凡地址列表是指在确定第3.4节.当展开ABNF语法时,我发现地址列表只能包含phrase ":" ";"(短语在3.2.5节中定义).因此,归结为您能够添加不包含任何实际电子邮件地址的回复标头.
RFC规定:
当存在"Reply-To:"字段时,它指示消息的作者建议发送回复的地址.
即使这只是一个建议,我可以建议某人回复我姓名但未指明的地址,这似乎很奇怪.
我在这里错过了什么吗?我该如何解释这样的建筑?
我最近遇到了一个我想用Python电子邮件模块解析的EML文件.在from标题中,有以下文字:
From: "=?utf-8?b?5b2t5Lul5Zu9L+esrOS6jOS6i+S4mumDqOmhueebrumDqC/nrKzkuozkuovkuJrp?=
=?utf-8?b?g6g=?=" <email@address.com>
Run Code Online (Sandbox Code Playgroud)
因此名称分为两部分.当我连接代码并手动解码为十六进制时,我得到以下结果,这是正确的UTF-8字符串:
e5 bd ad e4 bb a5 e5 9b bd 2f e7 ac ac e4 ba 8c e4 ba 8b e4 b8 9a e9 83 a8 e9 a1 b9 e7 9b ae e9 83 a8 2f e7 ac ac e4 ba 8c e4 ba 8b e4 b8 9a e9 83 a8
Run Code Online (Sandbox Code Playgroud)
但是,当我调用Python电子邮件解析器时parse,最后3个字节未正确解码.相反,当我读到它的值时message['from'],有代理人:
dce9:20:dc83:dca8
Run Code Online (Sandbox Code Playgroud)
因此,当我,例如,想要打印字符串,它最终结束
UnicodeEncodeError('utf-8', '???/????????/????\udce9\udc83\udca8', 17, 18, 'surrogates not allowed')
Run Code Online (Sandbox Code Playgroud)
当我将From标题中的2个编码部分加入一个时,看起来像这样:
From: "=?utf-8?b?5b2t5Lul5Zu9L+esrOS6jOS6i+S4mumDqOmhueebrumDqC/nrKzkuozkuovkuJrpg6g=?=" <email@address.com>
Run Code Online (Sandbox Code Playgroud)
该字符串由库正确解码,可以打印得很好.
这是Python电子邮件模块中的错误吗?EML标准是否允许双重编码值? …
如何根据RFC 5322检查由我的代码生成的电子邮件是否有效 ?
PHP函数是否filter_var('bob@example.com', FILTER_VALIDATE_EMAIL)使用标准RFC 5322验证电子邮件?
rfc5322 ×12
email ×9
header ×2
python ×2
actionmailer ×1
datetime ×1
filter-var ×1
format ×1
php ×1
python-3.x ×1
reply ×1
rfc2822 ×1
rfc822 ×1
timezone ×1
utf-8 ×1