本地主机上的PHP邮件()函数
本地主机服务器上的php mail()
函数有问题。 我不能在本地主机上testing我的电子邮件应用程序,当我试图发送电子邮件与PHP函数的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服务器,如果有人知道解决scheme,请帮助我。
您需要在您的机器上设置邮件服务器以使邮件function正常工作。 如果你在Windows上(我猜你是使用WAMP),你可以设置一个Pegasus邮件服务器 。
其他选项包括使用诸如SwiftMailer或PHPMailer的包装类,并使用它们连接到另一个SMTP服务器,如GMail帐户。 即使你在自己的本地主机路由上使用Pegasus邮件服务器,我仍然会推荐使用上面提到的两个类中的一个。 他们给你更多的灵活性,更安全。
连接到您的ISP SMTP服务器或GMail或任何是这个最简单的路线。
花了2天后,这个PHP邮件function问题,我已经想通了,并会帮助你做同样的事情。 这浪费了足够的时间,让我们开始吧…
PHP有一个内置的PHP邮件function,可以用来从脚本发送邮件,但是这个function是有限的,因为它不能连接到一个简单的邮件传输协议(SMTP)服务器。 我假设你正在使用WAML / XAMPP,还没有真正尝试过XAMPP,但你可以这样理解:
首先,我们必须find一种方法将我们的Web服务器(wamp)连接到外部SMTP。 在这种情况下,我们将使用Gmail,但在此之前,我们需要下载/安装一个可以从php脚本抓取我们的电子邮件并将其推送到Gmail SMTP的工具。
- 首先访问http://glob.com.au/sendmail/并点击下载;
sendmail.zip
进行下载。 - 下载后,解压缩到
C:\wamp\
提取它作为一个文件夹,这意味着它的内容应该在一个名为sendmail的文件夹中,可以位于C:\wamp\sendmail
。 - 现在在发送邮件文件夹中,右键单击
sendmail.ini
并以pipe理员身份打开,因为我们将要修改其内容。 -
更改以下行
[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
请小心,如上所见。 我从我的
sendmail.ini
文件中删除了大部分不需要的内容,使事情变得更容易阅读。 -
保存文件
-
导航到你的
wamp
文件夹,并移动到bin\apache\apache[version here]\bin\php.ini
并以pipe理员身份修改php文件,如下所示:如果您使用的是记事本,您可以使用编辑选项卡或ctrl + F下的查找并键入“邮件function”以快速导航到
php.ini
文件的邮件function部分。[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.
注意:这只是
sendmail_path
,你必须改变到上面。 保持其他设置,因为你看到他们。 您的path可能会有所不同,具体取决于您提取sendmail文件夹的位置。 -
保存该
php.ini
文件 -
移回到
C:\wamp\bin
并selectphp\php[version here]\php.ini
并像上面那样编辑sendmailpath并以pipe理员身份保存文件/或者在打开之前,以pipe理员权限打开点击 -
以pipe理员身份运行wampserver,当它变成绿色时,打开以下内容:
左键单击绿色图标,并移动到PHP的 – > PHP扩展 – > php_sockets(点击有黑色检查)
等待图标再次变成绿色,然后按照上面的说明打开php_openssl。
如果图标变成绿色,那么当您点击绿色wampserver图标时,可以通过移动到apache icom打开apaches ssl_module。 你可以在Apache模块中find它。
当您完成上述三个步骤后,再次以pipe理员身份运行wampserver以执行更改。
-
移回到sendmail提取的文件夹并右键单击
sendmail.exe
转到它的属性 – >兼容性 – >更改所有用户的设置 – >兼容模式[更改为Windows XP(Service Pack 3)] – >以pipe理员身份运行此程序[选中此选项]。保存并应用。
我们必须这样做,以便每次我们调用sendmail应用程序,它将作为pipe理员运行。 -
现在我们需要configuration我们的gmail帐户来使用这个sendmail应用程序。 loginGmail帐户,并在右上angular点击齿轮select设置。 在设置移动到转发和POP / IMAP选项卡并启用IMAP。 保存更改
-
最后回到您的收件箱,在您的电子邮件地址旁边的最右上angular是一个向下的小箭头,点击它可以select我的账户。 如果你没有这个,你可以尝试点击你的个人资料图片,从那里select我的帐户。
点击login和安全标签并向下滚动到页面底部。 你会发现允许不太安全的应用程序:并打开它。 大多数情况下这将closures。
-
这就是你所需要做的,现在你可以在本地主机上通过php脚本发送电子邮件了。 你现在可以用4个最小参数试试你的
mail()
函数,看看。 希望这可以帮助。 投票,如果有帮助,所以我可以花时间发布更有趣的解决scheme。
这是在Windows上使用mail()
一个众所周知的问题,通常您没有本地SMTP服务。 正如您的错误消息所述,您需要在php.ini
定义SMTP设置,以便与通过其允许发送出站邮件的邮件服务器进行通信,无论是否进行身份validation。 查看邮件()文档。
尝试设置本地主机的邮件服务器。 否则,它不会在本地主机上工作。