localhost上的php mail()函数

Sha*_*ark 14 php email localhost wampserver

mail()在localhost服务器上有php 功能的问题.当我尝试发送带有php功能的电子邮件时,我无法在localhost上测试我的电子邮件应用程序 mail().

我收到了这个错误 Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in F:\wamp\www\product\ajax.php on line 64

我正在使用WAMP服务器,如果有人知道解决方案,请帮助我.

Tre*_*non 14

您需要在计算机上设置邮件服务器才能使邮件功能正常工作.如果你在Windows上(我猜你是来自你使用WAMP)你可以设置一个Pegasus邮件服务器.

其他选项包括使用包装类(如SwiftMailerPHPMailer)并使用它们连接到另一个SMTP服务器,例如您的GMail帐户.即使您在自己的localhost路由上使用Pegasus邮件服务器,我仍然建议使用上面提到的两个类中的一个.它们为您提供更大的灵活性,更安全.

连接到您的ISP SMTP服务器或GMail或任何最简单的路由.

  • 为swift或phpmailer +1,因为它们为您的项目添加了更多的灵活性,而不是依赖于您的服务器mail()配置 (4认同)

小智 8

在这个php邮件功能问题上花了2天之后,我已经想出来并帮助你做同样的事情.浪费了足够的时间,让我们开始......

PHP有一个内置的php邮件功能,可用于从脚本发送邮件,但此功能在某种程度上受到限制,因为它无法将您连接到简单的邮件传输协议(SMTP)服务器.我假设你正在使用WAML/XAMPP,还没有真正尝试过XAMPP,但你可以想到这样:

首先,我们必须找到一种方法将我们的Web服务器(wamp)连接到外部SMTP.在这种情况下我们会使用Gmail,但在此之前,我们需要下载/安装一个工具,该工具可以从php脚本中获取我们的电子邮件并将其推送到Gmail SMTP.

  1. 首先访问http://glob.com.au/sendmail/,然后单击下载sendmail.zip进行下载.
  2. 下载后,解压缩以将其解C:\wamp\压缩为文件夹,这意味着它的内容应该位于名为sendmail的文件夹中,并且可以位于C:\wamp\sendmail.
  3. 现在在发送邮件文件夹中,右键单击sendmail.ini并以管理员身份打开,因为我们即将修改其内容.
  4. 更改以下行

    [sendmail]
    smtp_server=smtp.gmail.com
    smtp_port= 465
    smtp_ssl=ssl
    default_domain=localhost
    error_logfile=error.log
    debug_logfile=debug.log
    auth_username= enter your gmail account here        
    auth_password= enter the password for that account here
    ;pop3_server=
    ;pop3_username=
    ;pop3_password=
    ;force_sender=
    ;force_recipient=
    hostname= localhost 
    
    Run Code Online (Sandbox Code Playgroud)

    请注意,如上所述.我已从文件中删除了大部分不需要的内容,sendmail.ini以使事情更容易阅读.

  5. 保存文件

  6. 导航到您的wamp文件夹,然后以bin\apache\apache[version here]\bin\php.ini管理员身份移动并修改php文件,如下所示:

    如果您使用记事本,则可以使用编辑选项卡下的查找或ctrl+ F并键入"邮件功能"以快速导航到php.ini文件的邮件功能部分.

    [mail function]
    ;For Win32 only.
    ;http://php.net/smtp
    ;SMTP = localhost
    ;http://php.net/smtp-port
    ;smtp_port = 25
    
    ;For Win32 only.
    ;http://php.net/sendmail-from
    ;sendmail_from = 
    
    ;For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
    ;http://php.net/sendmail-path
    sendmail_path = "C:\wamp\sendmail\sendmail.exe -t -i" ----> this is the changed part. 
    
    Run Code Online (Sandbox Code Playgroud)

    注意:只有sendmail_path您必须更改为上述内容.在您看到它们时保留其他设置.根据您将sendmail文件夹解压缩到的位置,您的路径可能会有所不同.

  7. 保存该php.ini文件

  8. 如上所述,回到C:\wamp\bin并选择php\php[version here]\php.ini并编辑sendmail路径并以管理员身份保存文件,或者在打开之前保存文件,通过右键单击以管理员身份打开

  9. 以管理员身份运行wampserver,当它变为绿色时,请打开以下内容:

    左键单击绿色图标并移至php - > php extensions - > php_sockets(单击以对其进行黑色检查)

    等待图标再次变为绿色,然后按照上面的步骤打开php_openssl.

    如果图标变为绿色,则当您单击绿色wampserver图标时,可以通过移动到apache icom来打开apaches ssl_module.您可以在Apache模块中找到它.

    当你完成退出上面的三个步骤并再次运行wampserver作为管理员来实现更改.

  10. 回到sendmail提取的文件夹并右键单击sendmail.exe
    转到其属性 - >兼容性 - >更改所有用户的设置 - >兼容模式[更改为windows xp(service pack 3)] - >以管理员身份运行此程序[检查这个选项].

    保存并申请.
    我们必须这样做,这样每次我们调用sendmail应用程序时,它都会以管理员身份运行.

  11. 现在我们需要配置我们的Gmail帐户以使用此sendmail应用程序.登录gmail帐户,在右上角单击齿轮以选择设置.在设置中,转到转发和POP/IMAP选项卡并启用IMAP.保存更改

  12. 最后回到您的收件箱,电子邮件地址旁边的最右上角是一个向下的小箭头,单击它以选择我的帐户.如果您没有,可以尝试点击您的个人资料照片,从那里选择我的帐户.

    单击"登录和安全"选项卡,然后向下滚动到页面底部.你会发现允许不太安全的应用程序:并打开它.大多数情况下,这将是关闭.

  13. 这就是您需要做的所有事情,您现在可以从localhost上的php脚本发送电子邮件.您现在可以mail()使用4个最小参数尝试您的功能,并查看.希望这可以帮助.投票,如果它有帮助,所以我可以花时间发布更有趣的解决方案.