Пустая строка в заголовках писем - PullRequest
0 голосов
/ 12 сентября 2011

Я хочу сделать pop3 клиент на PHP.У меня проблема, когда я получаю все сообщения (тело + заголовки), которые я хочу разделить заголовки и тело.Обычно после заголовков есть пустая строка, а затем - тело сообщения.Я понял, что в одном электронном письме в моем почтовом ящике есть заголовки с пустой строкой:

    Delivered-To: asd@gmail.com
Received: by 10.239.164.198 with SMTP id u6cs311361hbd;
        Thu, 25 Feb 2010 08:11:16 -0800 (PST)
Received: by 10.223.6.27 with SMTP id 27mr1385919fax.31.1267114275670;
        Thu, 25 Feb 2010 08:11:15 -0800 (PST)
Return-Path: <elsa@homelidays.emv2.net>
Received: from emailer112-138.emv2.net (emailer112-138.emv2.net [81.92.112.138])
        by mx.google.com with ESMTP id 24si15703136fxm.76.2010.02.25.08.11.12;
        Thu, 25 Feb 2010 08:11:14 -0800 (PST)
Received-SPF: pass (google.com: domain of elsa@homelidays.emv2.net designates 81.92.112.138 as permitted sender) client-ip=81.92.112.138;
Authentication-Results: mx.google.com; spf=pass (google.com: domain of elsa@homelidays.emv2.net designates 81.92.112.138 as permitted sender) smtp.mail=elsa@homelidays.emv2.net; dkim=pass (test mode) header.i=elsa@emv2.net
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; s=emv; d=emv2.net;
 h=Date:From:Reply-To:To:Message-ID:Subject:MIME-Version:Content-Type:List-Unsubscribe; i=elsa@homelidays.emv2.net;
 bh=6AAaS7MBmDZ4twficXpZISS03+k=;
 b=ShFzHF3jozT6joZ/O5JvKS6ECNwXfT+4XdWv+tgLCzsGFMiesKF4PxtCcrw/SnR9YyBa9I8BOUWj
   MjyJqGFPaA==
DomainKey-Signature: a=rsa-sha1; c=nofws; q=dns; s=emv; d=emv2.net;
 b=TyNSOdwDU8IJW1e4Iq6/TLj4QjyO/Leru+VFXAQSmJ+nVwdpHSIk7N5myHNNajhOu5yG7uQjAdoT
   I6QsJNDEjw==;
Received: by emailer112-138.emv2.net id hgqgi40hu6oc for <asd@gmail.com>; Thu, 25 Feb 2010 17:10:21 +0100 (envelope-from <elsa@homelidays.emv2.net>)
Return-Path: elsa@homelidays.emv2.net
Date: Thu, 25 Feb 2010 17:10:21 +0100 (CET)
From: "Homelidays.co.uk" <elsa@homelidays.emv2.net>
Reply-To:  <renter-service@homelidays.com>
To:  <asd@gmail.com>
Message-ID: <34216955106.7026379.1267114221347@schr1>
Subject: Spring sunshine & Easter escapes
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary=702637934216955106
X-EMV-Platform: ccc.campaigncommander.com$
X-EMV-CampagneId: 7026379$
X-EMV-MemberId: 34216955106$
List-Unsubscribe: http://trc1.emv2.com/HD?a=DNX7Cq7R8H0N8SA9MKIk7THnGHxKDTNjXw76

--702637934216955106
Content-Type: text/plain; charset=iso-8859-15
Content-Transfer-Encoding: 8bit

               If you cannot see this message, please click here http://trc1.emv2.com/HM?a=DNX7Cq7R8H0N8SA9MKIk7THnGHxKDTNIDA6e



--702637934216955106
Content-Type: text/html; charset=iso-8859-15
Content-Transfer-Encoding: 8bit

<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
        <table cellspacing="0" cellpadding="0" width="650" align="center">
            <tr>
... and the rest of body...

Как я могу разделить тело сообщения и заголовки сообщения пустой строкой внутри?

1 Ответ

1 голос
/ 12 сентября 2011

Для разбора почтового сообщения сначала нужно найти, где заканчиваются заголовки. Это будет в первой пустой строке сообщения.

Как только вы нашли это, вам, возможно, придется проанализировать само сообщение. Причина этого заключается в том, что вы представили сообщение, состоящее из нескольких частей, состоящее из ... нескольких частей. Каждая часть может иметь свой собственный тип контента, а какой нет. Это характерно для электронной почты в формате HTML, а также для электронных писем с вложениями.

Чтобы узнать, как анализировать сообщение, состоящее из нескольких частей, вам нужно найти идентификатор границы. Это указано в конце этого заголовка:

Content-Type: multipart/alternative; boundary=702637934216955106

Просто разбейте сообщение на границе и разберитесь с каждой частью отдельно.

...