My ISP
帐户要求我发送出站SMTP
邮件的用户名和密码.
我如何PHP
使用这个时候执行php.mail()?
的php.ini
文件只包含服务器项(SMTP= )
和From: (sendmail_from= )
.
我在php.ini文件中应用以下详细信息.它的工作正常.
SMTP = smtp.example.com smtp_port = 25 username = info@example.com password = yourmailpassord sendmail_from = info@example.com
这些详细信息与Outlook设置相同.
PHP mail()
命令不支持身份验证.你的选择:
PHPMailer - 教程
梨 - 教程
自定义函数 - 请参阅备注部分中的各种解决方案:http://php.net/manual/en/ref.mail.php
使用Fake sendmail for Windows发送邮件.
创建一个名为文件夹sendmail
在C:\wamp\
.
在这些提取4个文件sendmail
夹:sendmail.exe
,libeay32.dll
,ssleay32.dll
和sendmail.ini
.
然后配置C:\wamp\sendmail\sendmail.ini
:
smtp_server=smtp.gmail.com smtp_port=465 auth_username=user@gmail.com auth_password=your_password
以上内容适用于Gmail帐户.然后配置php.ini:
sendmail_path ="C:\ wamp\sendmail\sendmail.exe -t"
现在,重新启动Apache,这基本上就是你需要做的.
PHP 确实对mail-command进行了身份验证!
以下是WAMPSERVER的工作(windows,php 5.2.17)
php.ini中
[mail function] ; For Win32 only. SMTP = mail.yourserver.com smtp_port = 25 auth_username = smtp-username auth_password = smtp-password sendmail_from = you@yourserver.com
我更喜欢PHPMailer工具,因为它不需要PEAR.但无论哪种方式,您都有一个误解:您不希望为SMTP用户和密码设置PHP服务器范围.这应该是每个应用程序(或每页)设置.如果要在不同的PHP页面中使用相同的帐户,请将其添加到某种settings.php文件中.
在这一整天工作之后,我终于找到了解决方案.以下是我使用WAMP从Windows XP发送的方式.
使用Google的SMTP服务器.您可能需要一个帐户.
下载并安装Fake Sendmail.我刚刚下载了它,解压缩并将其放入WAMP文件夹中.
创建一个测试PHP文件.见下文.
更新php.ini文件和sendmail.ini文件(sendmail.ini在sendmail文件夹中).
如果它不起作用,请检查刚刚创建的sendmail文件夹中的error.log文件.
参考:
http://www.geekzone.co.nz/tonyhughes/599
http://www.joshstauffer.com/send-test-emails-with-wampserver/
安装Postfix(与Sendmail兼容).
编辑/etc/postfix/main.cf
阅读:
#Relay config relayhost = smtp.server.net smtp_use_tls=yes smtp_sasl_auth_enable=yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_tls_CAfile = /etc/postfix/cacert.pem smtp_sasl_security_options = noanonymous
创建/etc/postfix/sasl_passwd
,输入:
smtp.server.net username:password
类型# /usr/sbin/postmap sasl_passwd
然后运行: service postfix reload
现在PHP将像往常一样使用sendmail -t -i
命令运行邮件,Postfix将拦截它并将其转发到您提供的SMTP服务器.