标签: rfc822

如何解析DateTime并将其转换为RFC 822日期时间格式?

如何将DateTime结构转换为其等效的RFC 822日期时间格式的字符串表示形式,并将此字符串表示形式解析回.NET中的DateTime结构?RFC-822日期时间格式用于许多规范,例如RSS联合格式.

.net rss datetime rfc822

38
推荐指数
2
解决办法
4万
查看次数

如何使用Python获取电子邮件的文本内容?

鉴于Python 2.6中的RFC822消息,我如何获得正确的文本/纯文本内容部分?基本上,我想要的算法是这样的:

message = email.message_from_string(raw_message)
if has_mime_part(message, "text/plain"):
    mime_part = get_mime_part(message, "text/plain")
    text_content = decode_mime_part(mime_part)
elif has_mime_part(message, "text/html"):
    mime_part = get_mime_part(message, "text/html")
    html = decode_mime_part(mime_part)
    text_content = render_html_to_plaintext(html)
else:
    # fallback
    text_content = str(message)
return text_content
Run Code Online (Sandbox Code Playgroud)

这些事,我get_mime_parthas_mime_part拍下来,但我不太清楚如何从MIME部分解码的文本.我可以使用编码文本get_payload(),但如果我尝试使用方法的decode参数get_payload()(请参阅doc),当我在text/plain部分调用它时会出现错误:

File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/
email/message.py", line 189, in get_payload
    raise TypeError('Expected list, got %s' % type(self._payload))
TypeError: Expected list, got <type 'str'>
Run Code Online (Sandbox Code Playgroud)

另外,我不知道如何使用HTML并尽可能地将其呈现为文本.

python email mime rfc822

36
推荐指数
1
解决办法
5万
查看次数

MIME和内容类型之间有区别吗?

在使用f12工具时,即,当我请求网页时,响应标头具有内容类型.这也可以称为MIME类型吗?或者有区别吗?

mime smtp http smime rfc822

22
推荐指数
2
解决办法
9260
查看次数

18
推荐指数
3
解决办法
1万
查看次数

如何将RFC822转换为python datetime对象?

我知道如何以相反的方式做到这一点...它将是:

>>> dt.rfc822()
'Sun, 09 Mar 1997 13:45:00 -0500'
Run Code Online (Sandbox Code Playgroud)

python rfc822

17
推荐指数
2
解决办法
8310
查看次数

MIME RFC"Content-Type"参数混淆?不清楚RFC规范

我正在尝试为multipart/relatedC++/Qt 实现一个基本的MIME解析器.

到目前为止,我一直在为头文件编写一些基本的解析器代码,我正在阅读RFC以了解如何尽可能接近规范来完成所有操作.不幸的是,RFC中有一部分让我感到困惑:

来自RFC882第3.1.1节:

每个标题字段可以被视为ASCII字符的单个逻辑行,包括字段名称和字段主体.为方便起见,该概念实体的场体部分可以分成多线表示; 这被称为"折叠".一般规则是,只要存在线性白空间(不仅仅是LWSP-chars),就可以替换地插入紧接着一个LWSP-char的CRLF.因此,单行

好吧,所以我简单地解析一个头字段,如果一个CRLF跟随线性空格,我只是以有用的方式连接它们以产生一个标题行.我们继续......

来自RFC2045第5.1节:

在RFC 822的Augmented BNF表示法中,Content-Type头字段值定义如下:

 content := "Content-Type" ":" type "/" subtype
            *(";" parameter)
            ; Matching of media type and subtype
            ; is ALWAYS case-insensitive.
Run Code Online (Sandbox Code Playgroud)

[...]

 parameter := attribute "=" value

 attribute := token
              ; Matching of attributes
              ; is ALWAYS case-insensitive.

 value := token / quoted-string

 token := 1*<any (US-ASCII) CHAR except SPACE, CTLs,
             or tspecials>
Run Code Online (Sandbox Code Playgroud)

好的.所以,如果您想要指定Content-Type带参数的标头,只需这样做:

Content-Type: multipart/related; foo=bar; something=else
Run Code Online (Sandbox Code Playgroud)

...并且相同标题的折叠版本看起来像这样:

Content-Type: multipart/related;
    foo=bar; …
Run Code Online (Sandbox Code Playgroud)

mime specifications rfc rfc822

17
推荐指数
1
解决办法
6078
查看次数

为什么电子邮件需要信封,"信封"是什么意思?

信封与smtp中的电子邮件之间的确切区别是什么?

为什么协议需要信封?在蜗牛邮件中,信件不需要包含地址,邮递员看不到(至少这是您想要相信的),所以所有路由完全基于信封,这对我来说很清楚.

但是在电子邮件中,字母本身是可解析的,并且包含诸如From:和To:之类的标题.为什么这还不足以路由电子邮件?为什么我们需要一个信封?

信封和电子邮件本身之间的分歧是什么意思?这是否一定意味着有人试图对系统进行游戏,或者在某些情况下(在什么情况下?),它们之间存在差异是合法的.

您的澄清非常受欢迎.

困惑的电子邮件接收器.

security email smtp rfc822

16
推荐指数
3
解决办法
2万
查看次数

是否有"无回复"电子邮件标题?

我经常看到自动电子邮件后缀有一条消息

亚马逊:

*请注意:此电子邮件是从无法接收传入电子邮件的地址发送的.如果您需要再次就此问题与我们联系,请使用上面的链接.

推特:

请不要回复这个信息; 它是从一个不受监控的电子邮件地址发送的.此消息是与您使用Twitter相关的服务电子邮件.

Google Checkout:

需要帮忙?访问Google Checkout帮助中心.请不要回复这个信息.

直接在此警告下方,Gmail会向我显示回复输入字段.在我看来,应该有一些标题可以附加到这样的自动电子邮件,告诉收件人的电子邮件客户端不允许回复.

有这样的标题吗?如果没有,控制电子邮件格式的团体是否曾经讨论过它?

email rfc822 rfc2822 rfc5322

11
推荐指数
2
解决办法
1万
查看次数

RFC822时区解析Java

我有一个JS日期,由Dojo转换为RFC822格式.函数调用--dojo.date.toRfc3339(jsDate)生成以下日期 - 2007-02-26T20:15:00 + 02:00.

我有一个应用程序使用Java日期SimpleDateFormat来解析上面生成的日期.由于时区,我在解析此日期格式时遇到问题.我试图使用

YYYY-MM-DD'T'hh:MM:SSZ

这失败了,因为时区的'Z'不期望':'字符.有谁知道如何指定一个模式来处理带有':'的RFC822日期?

修订:

感谢您正确解释我想要做的事情:)我想说的是日期是在RFC3339中生成的,我需要RFC822.看起来我将不得不重写JavaScript.我希望我不必这样做,并且可以指定日期格式模式而不必修改任何Java代码,因为日期格式只是注入到应用程序的Spring bean中.

只是为了完整性,有没有办法在日期格式表达式中指定忽略序列中的字符(不进行字符串操作/替换)?在这种情况下,我会说忽略任何':'或者只是忽略所有时区?

java date iso8601 rfc3339 rfc822

8
推荐指数
1
解决办法
1万
查看次数

在.NET中序列化MailMessage对象的优雅方法

我目前正在考虑在C#中序列化一个MailMessage对象,虽然网上有一些示例的变体,但它们会序列化为二进制,这种点错过了IMO点.

我的方法是,我想将MailMessage序列化为RFC2822 eml字符串,下面的代码就是我提出的.

    public string SerializeEmail(MailMessageArgs e)
    {
        string rfc822eml = "";
        Guid g = Guid.NewGuid();
        lock (g.ToString())
        {
            System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(@"C:\tmpspool");
            di.CreateSubdirectory(g.ToString());
            string spoolDir = @"C:\tmpspool\" + g.ToString();
            SmtpClient Client = new SmtpClient("localhost");
            Client.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;
            Client.PickupDirectoryLocation = spoolDir;
            Client.Send(e.mailObj);
            var files = from file in Directory.EnumerateFiles(spoolDir)
                       select file;
            string serializedEml = files.First();
            rfc822eml = File.ReadAllText(serializedEml);
            File.Delete(serializedEml);
            Directory.Delete(spoolDir);
        }

        return rfc822eml;
    }
Run Code Online (Sandbox Code Playgroud)

它非常讨厌,但确实有效.理想情况下,我会创建一个新的SMTPClient并添加一个Serialize函数,该函数将自动返回rfc822字符串,而不会访问文件系统.

由于我似乎无法使用Visual Studio跟踪SMTPClient.Send函数,因此这种"理想"的处理方式有点棘手.

我已经通过在Peter Huber的POP3MimeClient和POP3MailClient类中添加一些小的更改来整理RFC消息的反序列化,这样我就可以将HDD上的文件或字符串反序列化为MailMessage.

对我唠叨的是,我真的应该能够使用流序列化MailMessaage并将流写入我选择的字符串 - 或 - 文件而不是绕过房子创建基于GUID的文件夹,如上面的代码所做的那样并将文件内容读回字符串...

关于如何使这更优雅的任何指示将非常感激.

谢谢.

c# serialization rfc822 mailmessage rfc2822

8
推荐指数
1
解决办法
7765
查看次数