【问题标题】:Send email SMTP from localhost with WAMP setup使用 WAMP 设置从本地主机发送电子邮件 SMTP
【发布时间】:2011-06-16 15:34:32
【问题描述】:

我正在尝试配置我的 php.ini 文件,以便我可以使用 PHP 从我的开发环境中的“localhost”发送电子邮件。我不再有权访问开放的 SMTP 服务器,并且 Gmail 不再适用于他们的新 SSL 设置。我已经做了很多研究,并在这里和其他地方看到了很多“解决方案”,但它们不起作用。我已经尝试安装本地 SMTP 服务器(hMailServer 要求输入密码才能安装,免费 SMTP 服务器不起作用等)。

有没有人知道我可以在我的 php.ini 文件中设置一个免费的 SMTP 服务器,或者以任何其他方式从 localhost 发送邮件(我只需要它用于测试目的)。当我切换到生产环境时,我不想更改代码并以完全不同的方式发送电子邮件。 (我正在使用 Zend 和 Zend_Mail 类)

【问题讨论】:

  • 如果您在 Windows 机器上,您可以通过 IIS 设置 SMTP 服务器。如果您在本地计算机上设置服务器,请确保您的 ISP 不会阻止端口 25

标签: zend-framework smtp localhost zend-mail


【解决方案1】:

您可以尝试使用 Zend_Mail_Transport_File 进行测试。

$mail = new Zend_Mail();
$mail->send(new Zend_Mail_Transport_File());

【讨论】:

  • 我不想在开发和生产之间切换代码。
  • 嗯,然后把它放在你的引导程序中... if (APPLICATION_ENV == 'development') Zend_Registry::set('Transport', new Zend_Mail_Transport_File());否则 Zend_Registry::set('Transport', new Zend_Mail_Transport_SMTP());然后:$mail->send(Zend_Registry::get('Transport'));
  • 使用 Transport_File,电子邮件实际上永远不会被发送。这给测试和 QA 带来了问题,因为 Outlook、GMail、Hotmail 等都可以以非常不同的方式呈现电子邮件。我需要实际发送电子邮件才能对其进行测试...
【解决方案2】:

在 Windows 中,我通常使用 Mercury 从本地主机发送电子邮件以进行测试。 Mercury 可免费用于非商业用途,它也用于xampp

【讨论】:

  • 谢谢!经过一些设置/配置后,我能够将 Mercury 设置为 localhost 的 SMTP 服务器。效果很好!
【解决方案3】:

XAMP、WAMP 等的解决方案。

下载hMailServer;然后配置程序:

  1. 首次打开 hMailServer Administrator 时,应添加新域。
  2. 在欢迎页面单击“添加域...”按钮。
  3. 在域文本字段下,输入您计算机的 IP,在本例中应为 127.0.0.1。
  4. 点击保存按钮。
  5. 转到设置>协议>SMTP,然后选择“电子邮件传递”选项卡
  6. 在 localhost 名称字段中输入“localhost”。
  7. 点击保存按钮。

如果您需要使用另一台计算机的 FROM 收件人发送邮件,您需要允许从外部帐户投递到外部帐户。为此,请按以下步骤操作:

  1. 转到设置>高级>IP 范围并双击“我的电脑”,其 IP 地址应为 127.0.0.1
  2. 选中允许从外部帐户到外部帐户的交货复选框。
  3. 使用保存按钮保存设置。

如果你使用Gmail账号,那么需要小修改:

  1. 转到设置>协议>SMTP,然后选择“电子邮件传递”选项卡
  2. 在远程主机名字段中输入“smtp.gmail.com”。
  3. 输入“465”作为端口号
  4. 勾选“服务器需要身份验证”
  5. 在用户名字段中输入您的 Google Mail 地址
  6. 在密码字段中输入您的 Google Mail 密码。
  7. 勾选“使用 SSL”

【讨论】:

    【解决方案4】:

    您必须使用此配置来传输邮件

    $transport = new Mail\Transport\Smtp();  
            $options = new Mail\Transport\SmtpOptions (array(  
                        'name' => 'host',  
                        'host' => 'smtp.gmail.com',  
                        'port'=> 587,  
                        'connection_class' => 'login',  
                        'connection_config' => array(  
                            'username' => "yourGmailUserMail",  
                            'password' => 'yourGmailPassword',  
                            'ssl'=> 'tls',  
                        ),  
            )); 
            $transport->setOptions($options)
    

    ;

    它会起作用的。

    【讨论】:

      猜你喜欢
      • 2014-01-10
      • 1970-01-01
      • 2012-05-25
      • 1970-01-01
      • 2016-07-22
      • 2015-05-29
      相关资源
      最近更新 更多