【问题标题】:send Gmail from php form从 php 表单发送 Gmail
【发布时间】:2009-09-03 14:18:40
【问题描述】:

我有一个项目要为我们的网站设置一个匿名反馈表。我想尝试一下 php

一般的想法是我会有一个密码字段(给我们的员工)一个用于反馈的字段和一个按钮

我看过这段代码sn-p

<?php
$to = "recipient@example.com";
$subject = "Hi!";
$body = "Hi,\n\nHow are you?";
if (mail($to, $subject, $body)) {
  echo("<p>Message successfully sent!</p>");
 } else {
  echo("<p>Message delivery failed...</p>");
 }
?>

但我很确定,由于我对电子邮件系统的了解有限,我不能只发送电子邮件(除非我在某个地方有一个我没有的开放服务器),所以我需要登录到电子邮件服务器(在我的情况下) gmail服务器)

那我该怎么做呢?

更新:

上面的代码确实有效,但它不是来自公司帐户 我们目前使用 Google 商务应用程序,这就是为什么我想登录到 Google 服务器将其发送出去。

【问题讨论】:

  • 通过gmail发送,您需要设置自动脚本或检查是否有API

标签: php email gmail


【解决方案1】:
【解决方案2】:

如果您在适当的 Web 主机上运行脚本,他们会为您设置好所有内容以发送外发邮件。它确实像那里所示的那样简单。

如果您在家中运行服务器,情况会稍微复杂一些,因为 ISP 通常会阻止家庭帐户发送邮件,除非通过 ISP 的中间服务器。

【讨论】:

    【解决方案3】:

    php mail() 实际上会使用系统的邮件系统来发送邮件。如果您的主机使用的是 linux 基础系统,则大多数情况下这是 sendmail。如前所述,许多主机已经为您设置了此设置

    mail() requirements

    【讨论】:

      【解决方案4】:

      您的理解似乎有点太有限了;完全有可能从任何连接到互联网的地方“发送”邮件。

      【讨论】:

      • 不只是任何地方。我有一个动态分配的 IP 地址,所以很多邮件服务器不允许我向他们发送邮件。例如gmail.com 将阻止我的 IP 地址并给出 SMTP 错误。
      • mail.gmail.com 究竟如何区分动态 IP 和静态 IP?
      • @Totland 查看 SPF 和 SMTP 回拨。
      【解决方案5】:

      如果您使用的是 Linux 服务器,并且邮件服务器设置正确,那么给出的示例将可以正常工作。如果您使用体面的虚拟主机,那就没问题了。

      如果您在开发机器上,您可以设置本地邮件服务器,并将邮件服务器配置为通过另一个邮件服务器发送电子邮件。它通常被称为... smarthost,我想。大多数 Linux 邮件服务器(exim、postfix 等)都可以这样配置。我很确定您也可以通过这种方式在 Windows 机器上安装和配置邮件服务器。我想 Xampp 有一个。

      如果您真的想使用 PHP 将电子邮件直接发送到电子邮件服务器,您可以使用库。就个人而言,我会使用 swiftmailer。

      http://swiftmailer.org/ http://phpmailer.worxware.com/

      它们将允许您使用任何您喜欢的 SMTP 服务器,而不仅仅是本地邮件服务器。

      【讨论】:

        【解决方案6】:

        您的代码没有对垃圾邮件滥用开放的输入过滤,最好是像 swiftmailer 这样的第三方邮件程序

        【讨论】:

          【解决方案7】:

          如果为您配置了服务器,您通常可以只使用 mail()。

          为了从您的服务器通过 GMail 发送电子邮件,您需要通过 SMTP 将电子邮件发送到 Gmail 邮件服务器 (MTA)。

          mail() 函数可以配置为使用 SMTP 或使用服务器上的 sendmail 二进制文件。最好让您的虚拟主机来做这件事。如果您想自己做,则需要编辑您的 PHP.ini。

          Sendmail 是一个有命令行界面来发送电子邮件的守护进程。 (注意:所有电子邮件都是通过 SMTP 发送的,sendmail 只是为您做这件事)。

          您首先需要使用 google 邮件服务器身份验证方法以及您的用户名和密码来配置您的 sendmail 程序。这是特定于您使用的 sendmail 程序的。 然后您需要配置 PHP 以通过 PHP.ini 使用您的 sendmail 程序。如果您需要具体说明,可以发布。

          我认为在这种情况下您不能将 PHP 配置为直接使用 SMTP,因为 google 需要 TLS 和身份验证参数(用户/密码),而您无法将其放入 PHP.ini。

          注意:PHP 文档提到 sendmail 适用于 linux 而 SMTP 仅适用于 windows。这是不正确的。您可以在 windows 上配置 PHP 以使用 sendmail,并在 linux 上配置使用 SMTP。你可以只需要一个windows版本的sendmail,而linux默认自带sendmail,所以你真的不需要SMTP。 Sendmail 通常是更好的选择,因为它将邮件添加到其队列中,而 PHP 是单线程的,必须等待 SMTP 事务完成。

          【讨论】:

            猜你喜欢
            • 2017-03-03
            • 2013-08-01
            • 2013-03-30
            • 2012-08-24
            • 2015-01-30
            • 2018-02-26
            • 2011-05-30
            • 1970-01-01
            • 2018-05-07
            相关资源
            最近更新 更多