代码之家  ›  专栏  ›  技术社区  ›  joe

如何使用Perl提取SMTP信封和标头?

  •  -1
  • joe  · 技术社区  · 17 年前

    什么是SMTP信封和SMTP标头,它们之间的关系是什么?如何使用Perl提取它们?

    4 回复  |  直到 17 年前
        1
  •  4
  •   blowdart    17 年前

    SMTP标头是在发出DATA命令后发送的标头行的集合。

    你如何找到它们取决于你是如何/从哪里得到信息的,我们需要更多的线索来尝试回答这个问题。

        2
  •  4
  •   AnthonyWJones    17 年前

    SMTP邮件包含一组标题,如From、To、CC、Subject和一系列其他内容。

    例如,MicrosoftsSMTP服务器将邮件放入其放置文件夹时,会将X-Sender和一系列X-Receiver头添加到邮件顶部。每个邮箱将有一个X-Receiver,该邮箱与放置文件夹的域相匹配。

    另一个示例是SMTP服务器在从另一个SMTP服务器接收邮件时添加一个Receive:header。此标题提供了交换的各种详细信息。因此,tinternet上的大多数电子邮件一旦到达最终目的地,都会有一系列的接收头,指示邮件到达的SMTP服务器跳数。通常,当邮件最终移动到POP3邮箱时,服务器会删除X-Sender和X-Receiver头。

    访问标题

    name : value CR-LF)。

    同样,在windows平台上,可以使用基于CDOSYS.dll COM的对象集访问消息头和正文部分的主要集合。我不知道在其他平台上你会怎么做。然而,根据信封标题,标题格式是非常直接的,它访问身体部位需要更具创造性的编码。

        3
  •  1
  •   Jim Dennis    17 年前

    “信封”指提供给MTA的信息(通常是最新或最终目的地MTA)。发送方在SMTP连接中的DATA指令后包含一组标头(与邮件正文之间用一个空行隔开…但如果特别认为RFC是CR/LF对,请仔细检查RFC)。请注意,本地MTA可能会添加附加标头,甚至可能在存储或转发邮件之前修改某些标头。

    某些MTA配置为添加X-Envelope-to:和/或X-Envelope-From:标头。其中一些仍然会过滤这些头的内容(例如,防止盲拷贝泄漏)。(塞纳里奥:最初的MUA有一个BCC:line目录,可以在邮件上复制一些人,他们的名字都出现在CC:headers中;对于每个收件人域(MX结果),MTA只会对主机收到的地址子集发出RCPT to:,如果相应的结果正确的话(它自己的集线器、smarthost或任何针对目标的有效MX)--因此,任何相互共享MX的收件人子集都会在MTA生成的X-Envelope-To:Header中发现泄漏,而MTA对该细节的处理很马虎)。

    另外,并非因为行中的信封只包含SMTP交换中HELO From:或EHLO From:指令提供的主机/域名。例如,它不能用作回复的返回地址。

        4
  •  1
  •   AndyG    9 年前

    有关Perl电子邮件相关内容,请查看 Perl Email Project .