如何将传入的电子邮件插入mySQL数据库?

时间:2010-08-12 14:46:43

标签: php mysql email

只是说...我不知道我该怎么做:)。

换句话说,事情是:你收到一些人的粉红色信息:pinky@pinky.com,你用你自己的内容回复,而pinky@pinky.com将你的回复存储在他的数据库中。

其他: 我使用共享主机,我在PHP中编码,我理解ASP。如果你知道如何用另一种语言写这个脚本,不要费心解释我,因为我什么都不懂。

欢迎提供解决方案的链接。

提前致谢。

5 个答案:

答案 0 :(得分:7)

所以
- 你有一台服务器
- 你收到电子邮件
- 你想将它们保存在一个mysql数据库中

Cpanel配置
- 转到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插入并使用上面定义的变量。你知道怎么用ph​​p的mysql数据库吗?或者你也需要帮助吗?

答案 1 :(得分:1)

我有同样的问题并且正在寻找PHP中的东西,所以我首先寻找一个解析器,然后寻找一个DB Importer。

所以我把它们放在一起得到了这个:https://github.com/escobar022/php-imap-ToDB

我发现最重要的部分是知道电子邮件是如何分解的(标题,正文等)。所以我找到了一个解析器类(https://github.com/barbushin/php-imap),它分解电子邮件并检索电子邮件的基本部分,并能够下载这些项目。我建议尝试将复杂的电子邮件分成几部分,看看到底发生了什么。

一旦我理解了这一点,我就尝试使用PHPmailer发送它,并弄清楚如何复制电子邮件需要每个部分。一旦我弄明白了,我就存储了这些部分,将标题/正文/附件(相对路径)分解到数据库中。

希望这有帮助!

答案 2 :(得分:0)

如果您可以设置电子邮件服务器以将在特定地址收到的电子邮件转发到驻留在您服务器上的脚本,那么这是一个很好用的:

http://stuporglue.org/mailreader-php-parse-e-mail-and-save-attachments-php-version-3/

格雷格

答案 3 :(得分:0)

您也可以使用Parseur(https://parseur.com)和/或Zapier(https://zapier.com)之类的服务将电子邮件直接插入数据库。

使用Parseur + Zapier,您甚至可以选择要将哪些数据提取到数据库的哪一列。

节省时间。但是,如果您喜欢编码,那不是要走的路:)

答案 4 :(得分:0)

如上面提到的@sylvain,如果您:

  1. 不喜欢编码
  2. 喜欢免费开始这样做

然后尝试Parserr并将其与Microsoft Flow或Zapier结合使用,以确保您可以将数据发送到几乎所有需要的数据库,包括MySql。

如果您也需要here,也可以找到分步指南!

相关问题