2011-07-06 34 views
5

Tôi có thư nơi tôi cần lấy nội dung thông qua chức năng imap PHP và sau đó lưu trữ nó trong cơ sở dữ liệu. Các thư này gửi thư từ hệ thống phản hồi. Tôi sử dụng mã này để tìm nội dung của emailChỉ nhận một phần nhất định của nội dung email bằng cách sử dụng imap_body

$bodyText = imap_fetchbody($mbox,$v,1.2); 
if(!strlen($bodyText)>0){ 
    $bodyText = imap_fetchbody($mbox,$v,1); 
} 

Điều này hoạt động hoàn hảo nhưng cũng bao gồm nội dung thư gốc, có cách để chỉ nhận được thư trả lời.

Thân email toàn trông như thế này

**This is a test 
-- 
Kind Regards, 



-----Original Message----- 
From: ------------- 
To:-------------------------- 
Subject: You have received a reply to your enquiry 
New System 
Date: Tue, 5 Jul 2011 16:24:28 +0200 
Good day, 
You have received the following reply to an enquiry you made 
------------------------------------------------------------------------------------------------- 
test3  

-------------------------------------------------------------------------------------------------- 
To reply to this comment please click on the Reply To button and add the message you wish to send.** 

Có cách nào để có được chỉ là nội dung của thư mà không cần thông báo ban đầu SỬ DỤNG CHỨC NĂNG IMAP OR chức năng PHP khác?

Trả lời

0

bạn đã thử một

substr($wholeMessage, 0, strpos($wholeMessage, 0, "-----Original Message-----")); 

này sẽ cắt giảm được thông báo ngay từ đầu lên đến nơi ---- Thư gốc --- bắt đầu chuỗi. bẩn, nhưng may máy chủ nhu cầu của bạn

EDIT: Tôi giả sử bạn chỉ có một phần kịch câm .. nếu bạn có nhiều, bạn có thể chỉ cần lưu những cái bạn cần

+0

Nó sẽ luôn luôn có một phần kịch câm, tôi đã làm vào lúc này những gì bạn đã đề xuất, vì điều này có ý nghĩa nhất đối với tôi, mối quan tâm duy nhất tôi có, với các ứng dụng email khác nhau, thông báo sẽ luôn có chuỗi ----- Thư gốc ---- trong thư khi ai đó trả lời thư – Roland

+0

i không nghĩ như vậy, và tôi nghĩ bạn không nên dựa vào đó. ví dụ mã có liên quan đến những gì bạn nói trong câu hỏi của bạn và từ những gì tôi hiểu, thư đến từ "hệ thống phản hồi", vì vậy tôi nghĩ rằng định dạng này luôn có cùng một định dạng – marcelog

+0

mong muốn có cùng một thư được lưu trữ hai lần – Roland

1

Có một bài viết trên blog ở đây: http://www.damnsemicolon.com/php/php-parse-email-body-email-piping giải quyết vấn đề. Nó sử dụng các định dạng trả lời email khách thường được biết đến để đoán rõ nhất nội dung trả lời là gì. Đó là tốt như bạn có thể nhận được, cho rằng bạn không thể kiểm soát các khách hàng email đang được sử dụng.

Chỉ cần lưu ý, mã được liên kết sử dụng từ và đến tên/email để phân tích cú pháp địa chỉ email tốt hơn. Bạn có thể nhận được những giá trị như vậy:

$headerInfo = imap_headerinfo($mbox,$v); 

$fromEmail = $headerInfo->from->personal; 
$fromName = $headerInfo->from->mailbox . "@" . $headerInfo->from->host; 
$toEmail = $headerInfo->to->personal; 
$toName = $headerInfo->to->mailbox . "@" . $headerInfo->to->host; 

Edit: các liên kết có vẻ là đã chết, đây là bộ nhớ cache của google: http://webcache.googleusercontent.com/search?q=cache:5MxzHXFU5TkJ:www.damnsemicolon.com/php/php-parse-email-body-email-piping+&cd=1&hl=en&ct=clnk&gl=ca

Các vấn đề liên quan