2010-08-12 17 views
5

只是說...我不知道我該怎麼做:)。如何將傳入的電子郵件消息插入mySQL數據庫?

換句話說,問題是:您收到某人的郵件[email protected],您用自己的內容回覆,[email protected]將您的回覆保存在他的數據庫中。

附加: 我使用共享主機,我在PHP代碼,我理解ASP。如果你有一個想法如何用另一種語言編寫這個腳本,不要麻煩解釋我,因爲我什麼都不懂。

也歡迎提供解決方案的鏈接。

在此先感謝。

+0

這是一種服務,我不認爲這是可能的共享主機,你需要更多的特權。 – Youssef 2010-08-12 14:53:04

+0

這是一個常見問題解答嘗試搜索許多以前的答案。 – symcbean 2010-08-12 16:29:17

回答

6

所以
- 你有一臺服務器
- 你收到的電子郵件
- 你想拯救它們詮釋一個MySQL數據庫

交友配置
- 去cpnal電子郵件轉發
- 添加一個新的
- 重定向到PATH - > /home/your_user/whatever/php.script.php

PHP腳本 (你可能需要根據你的服務器配置,以改變 「的/ usr/bin中/ PHP -q」 路徑)

#!/usr/bin/php -q 
<?php 
chdir(dirname(__FILE__)); 
$fd = fopen("php://stdin", "r"); 
$email = ""; 
while (!feof($fd)) { 
    $email .= fread($fd, 1024); 
} 
fclose($fd); 

if(strlen($email)<1) { 
    die(); 
} 

// handle email 
$lines = explode("\n", $email); 

// empty vars 
$from = ""; 
$to=""; 
$subject = ""; 
$headers = ""; 
$message = ""; 
$splittingheaders = true; 

for ($i=0; $i < count($lines); $i++) { 
    if ($splittingheaders) { 
     // this is a header 
     $headers .= $lines[$i]."\n"; 
     // look out for special headers 
     if (preg_match("/^Subject: (.*)/", $lines[$i], $matches)) { 
      $subject = $matches[1]; 
     } 
     if (preg_match("/^From: (.*)/", $lines[$i], $matches)) { 
      $from = $matches[1]; 
     } 
     if (preg_match("/^To: (.*)/", $lines[$i], $matches)) { 
      $to = $matches[1]; 
     } 
    } else { 
     // not a header, but message 
     $message .= $lines[$i]."\n"; 
    } 
    if (trim($lines[$i])=="") { 
     // empty line, header section has ended 
     $splittingheaders = false; 
    } 
} 

作品在共享主機呢! :)

所有你需要添加的是mysql插入並使用上面定義的變量。你知道如何使用PHP的MySQL數據庫嗎?或者你也需要幫助嗎?

+0

只是這部分我感到困惑:' - 轉到cpnal電子郵件轉發器'我使用Ubuntu的Nginx web服務器 - 對我有什麼建議? – TheBlackBenzKid 2012-05-29 08:09:23

+0

您使用哪種郵件服務器軟件/服務? – 2012-05-30 21:09:04

+0

目前沒有。我正在使用Sendgrid的SMTP服務器,也是SwiftMailer - Nginx的服務器HTTP - 沒有控制面板,它是所有硬核... – TheBlackBenzKid 2012-05-31 09:57:12

1

我有這個相同的問題,並且正在尋找PHP中的東西,所以我首先查找了一個解析器,然後查找了一個DB導入器。

所以我把它們放在一起,並得到這個:https://github.com/escobar022/php-imap-ToDB

我發現,最重要的部分是要知道電子郵件是如何分解(標題,正文等)。所以我找到了一個解析器類(https://github.com/barbushin/php-imap),它可以分解電子郵件並在其基本部分中檢索電子郵件,並且可以下載項目。我會建議嘗試將複雜的電子郵件拆分爲多個部分並查看究竟發生了什麼。

一旦我理解了這一點,我試着用PHPmailer發送它,並想出了每個部分如何複製郵件。一旦我明白了這一點,我將這些部分存儲起來,將標題/正文/附件(相對路徑)分解到數據庫中。

希望這有助於!

相關問題