Php 如何将收到的电子邮件插入mySQL数据库?
只是说。。。我不知道该怎么做:) 换句话说,问题是:你收到某个人的邮件pinky@pinky.com,您用自己的内容回复,并且pinky@pinky.com把你的答复储存在他的数据库里 其他: 我使用共享主机,我用PHP编写代码,我了解ASP。如果你知道如何用另一种语言写这个脚本,不要费心解释我,因为我什么都听不懂 也欢迎链接到解决方案 提前谢谢。所以Php 如何将收到的电子邮件插入mySQL数据库?,php,mysql,email,Php,Mysql,Email,只是说。。。我不知道该怎么做:) 换句话说,问题是:你收到某个人的邮件pinky@pinky.com,您用自己的内容回复,并且pinky@pinky.com把你的答复储存在他的数据库里 其他: 我使用共享主机,我用PHP编写代码,我了解ASP。如果你知道如何用另一种语言写这个脚本,不要费心解释我,因为我什么都听不懂 也欢迎链接到解决方案 提前谢谢。所以 -您有一台服务器 -你会收到电子邮件 -您想将它们保存到mysql数据库中 Cpanel配置 -转到cpnal电子邮件转发器 -添加一个新的
-您有一台服务器
-你会收到电子邮件
-您想将它们保存到mysql数据库中
Cpanel配置
-转到cpnal电子邮件转发器
-添加一个新的
-重定向到路径->/home/your_user/whatever/php.script.php Php脚本 (可能需要根据服务器配置更改“/usr/bin/php-q”路径)
#/usr/bin/php-q
如果您可以将电子邮件服务器设置为将在特定地址收到的电子邮件转发到驻留在服务器上的脚本,那么这是一个很好的选择:
Greg我也遇到了同样的问题,并且在PHP中寻找一些东西,所以我首先寻找了一个解析器,然后是一个DB导入器
所以我把它们放在一起,得到了这个:
我发现最重要的部分是知道电子邮件是如何分解的(标题、正文等)。因此,我找到了一个解析器类(),它可以分解电子邮件并检索电子邮件的基本部分,并且能够下载邮件。我建议尝试将一封复杂的电子邮件分成几个部分,看看到底发生了什么
一旦我理解了这一点,我就尝试使用PHPmailer发送它,并找出了复制电子邮件所需的每个部分。一旦我弄明白了这一点,我就存储了这些部分,将标题/正文/附件(相对路径)分解到数据库中
希望这有帮助 您也可以使用Parseur()和/或Zapier()等服务直接将电子邮件插入数据库
使用Parseur+Zapier,您甚至可以选择要提取到数据库中哪一列中的哪一段数据
这样可以节省时间。但是,如果你喜欢编码,那就不是一条路:)正如上面提到的@sylvain,如果你:
我不喜欢编码
我想开始做这件事是免费的
然后尝试将其与Microsoft Flow或Zapier结合,以确保您可以将数据发送到几乎任何您需要的数据库,包括MySql
如果你也需要的话,还有一个分步指南 这是一种服务,我认为这在共享主机上是不可能的,您需要更多权限。这是一个常见问题,请尝试搜索之前的许多答案。我对这一部分感到困惑:-转到cpnal电子邮件转发器
我在Ubuntu中使用Nginx web服务器-有什么建议吗?您使用的是什么邮件服务器软件/服务?目前什么都没有。我正在使用Sendgrid的SMTP服务器为主,也SwiftMailer-Nginx的服务器HTTP-没有控制面板,这是所有的硬核…嗨,我已经做了mysql插入正确,但似乎不能清洁uop的电子邮件正文之前,我插入。我只想把所有的标题和附件都去掉。只有换行符或段落的简单文本。我怎样才能做到这一点?你的工作完成了吗?抱歉,后期发布如果您将MX记录转发到脚本本身,这会起作用吗@如果您将MX记录转发到脚本本身,这会起作用吗?
#!/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;
}
}