【问题标题】:PHP, MySQL: Receive email, auto search in DB & send email based on the resultsPHP、MySQL:接收电子邮件、在数据库中自动搜索并根据结果发送电子邮件
【发布时间】:2010-06-18 13:18:59
【问题描述】:

访客可以通过联系表联系工作人员(访客也需要提交电子邮件)。这将存储在数据库中。现在考虑到工作人员回复了这条消息,工作人员的回复将直接发送到访问者的电子邮件中。假设用户想跟进工作人员发送的消息,我希望访问者只需点击他的电子邮件服务中的回复按钮并将他关于同一主题的问题发送给我,但只需保留主题行中的 ID .因此,当访问者发送这封电子邮件时,我希望收到这封电子邮件,同时尝试在我的数据库中搜索电子邮件主题中存在的 ID 是否确实存在于系统中。如果是,则将其发回给先前处理响应的同一工作人员,或者将其分配给新的工作人员。

话虽如此,我正在考虑如何做到这一点。我真正受阻的部分是当工作人员从访客电子邮件中收到实际电子邮件时,我该如何检查数据库?假设我是/员工正在 mydomain@hotmail.com 接收电子邮件。当访问者发送回复电子邮件时,它将被发送到 mydomain@hotmail.com。如何检查我在 mydomain@hotmail.com 收到的电子邮件主题行中的 ID 是否确实存在于我网站的数据库中?这是我真正陷入困境的地方。

期待您的回复。谢谢。

【问题讨论】:

  • 您使用的是什么类型的电子邮件系统?我问的原因是每个系统都有不同的 API。
  • 电子邮件系统?很抱歉,我不清楚这意味着什么。您是指我选择发送和接收电子邮件的电子邮件服务提供商吗?我可以使用 myemail@mydomain.com,但我选择使用域外的电子邮件(因为我在通过域处理邮件时遇到一些问题),例如:myemail@hotmail.com 或 myemail@yahoo.com。这是你需要知道的吗?
  • 您需要在服务器上进行,例如创建一个默认电子邮件 support@yourdomain.com 并让所有用户向其提交电子邮件。然后你制作一个代码来接收电子邮件并将其注册到数据库中,然后它将电子邮件转发给其中一名员工,一旦员工回复它,同样的事情会发生,电子邮件会发送到 support@yourdomain.com,它会归类为由工作人员回复并通过 support@ 电子邮件转发给给定用户。这样,进出的所有内容都将由您的服务器脚本接收和处理。
  • 根据它获得的访问量,您可能需要添加一个 crontab 计划,以便每当您在几分钟内收到一条消息时,它就会与之交互。

标签: php mysql


【解决方案1】:

您可以使用多种方法来自动处理电子邮件。您选择哪一个将取决于您的具体需求:

  1. 配置您的 MTA(邮件服务器)以在程序从给定地址(例如:support@mydomain.com)接收邮件时运行该程序。邮件消息本身将被传递给程序来处理。如果您有自己的邮件服务器,这可以工作,并且是响应速度最快的解决方案,但配置起来可能相当复杂,通常需要重新启动邮件服务器才能更改。

  2. 编写一个程序,定期扫描邮箱(使用 POP 或 IMAP),然后处理每个新邮件。这适用于您不控制自己的邮件服务器的情况(例如:您使用 Gmail 或 Yahoo 邮件)并且配置更灵活。

  3. 为您的 MUA(邮件客户端,例如 MS Outlook、Thunderbird 等)编写扩展程序用于扩展。这不适用于纯网络界面,但允许您以交互方式处理消息并与用户交互。

我倾向于使用第一种方法,尽管我也使用过第二种方法。

【讨论】:

  • 感谢您的回复。我渴望第二个选项。我该怎么做?我不控制任何东西,我在共享服务器上。选项 3 听起来过于严格。所以对于选项 2,你能指导我更多吗?我以前从来没有这样做过。我如何访问收到的邮件,检查现有邮件是否已被阅读等。我在这方面是一个完全的新手,所以非常感谢您的所有帮助。
  • 对于选项 2,如果您不了解一种编程语言,或者使用已经构建并可用的票务系统,例如 perldesk,您确实需要学习一门编程语言......例如使用 php @987654321 @ 或使用 perl perldoc.perl.org/Net/POP3.html
  • 嗨 Prix,我可以用 PHP 编程。不是问题。问题在于阅读邮件的内容。我曾想过使用 Gmail 接收电子邮件。既然您有经验,能否请您告诉我如何访问 Gmail 中的电子邮件内容?我认为 Google 不会将他们的源代码借给我,以便我阅读并准备解决方案。那么我在这里有什么选择呢?
  • 您要做的第一件事是验证您的 php 中是否有 imap,如果您没有可用的 imap,您也可以尝试使用 pop3 的套接字,对于 imap 它必须编译为选项,但大多数主机都有它,您可以使用 这将显示您的 php 已安装的内容等...然后如果您有 imap 这可能是最好的选择,请检查此php.net/manual/en/function.imap-open.php 如果没有,您可以尝试使用套接字,示例adamsinfo.com/a-rudimentary-php-pop3-example 但我确信有人更好的知识将涵盖这一点。
  • 我仍然相信您最好在自己的主机上运行它,因为您可以在电子邮件上进行管道传输(例如在 cpanel 上:activecampaign.com/support/tt/…),这样当它直接发送到您的代码时到了……
【解决方案2】:

看看this zend library,它很容易融入您的网站,这意味着您不必尝试编写一些硬代码来阅读消息框等

希望对你有帮助

卢克

【讨论】:

  • 感谢您的回复。到目前为止,我还没有使用任何框架,至少在第一个版本上线并将网站标记为成功之前,恐怕我将不得不等待使用它。此外,我想在实施之前彻底了解框架。这样,我将能够处理自己的错误(尽可能多)。但我仍然感谢您为指导我所做的努力。
  • @Denver,以防万一您没有意识到,您可以在不使用 zend 框架的情况下使用邮件库,您甚至可以使用不同的框架,例如 symfony 并包含 zend 库。我知道这意味着您必须信任或阅读 zend 库,但值得重新发明轮子吗?
  • 感谢您告知我这件事。我去看看。
猜你喜欢
  • 2015-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-17
  • 1970-01-01
  • 2013-01-09
  • 2013-10-31
  • 1970-01-01
相关资源
最近更新 更多