php.ini和SMTP = - 如何传递用户名和密码

Cha*_*iga 64 php email smtp

My ISP帐户要求我发送出站SMTP邮件的用户名和密码.

我如何PHP使用这个时候执行php.mail()?php.ini文件只包含服务器项(SMTP= )From: (sendmail_from= ).

sug*_*nan 40

我在php.ini文件中应用以下详细信息.它的工作正常.

SMTP = smtp.example.com
smtp_port = 25
username = info@example.com
password = yourmailpassord
sendmail_from = info@example.com
Run Code Online (Sandbox Code Playgroud)

这些详细信息与Outlook设置相同.

  • 对我不起作用,并且无法找到任何表明用户名或密码是有效的php.ini指令的文档 (5认同)
  • 在PHP 5.6.20上没有为我工作:`警告:mail():SMTP服务器响应:530 5.7.57 SMTP; 客户端未经过身份验证,无法在MAIL FROM`期间发送匿名邮件 (2认同)

dar*_*mon 39

PHP mail()命令不支持身份验证.你的选择:

  1. PHPMailer - 教程
  2. - 教程
  3. 自定义函数 - 请参阅备注部分中的各种解决方案:http://php.net/manual/en/ref.mail.php

  • 值得注意的是,PHP`邮件()`*不*如果是安装在服务器和(b)在php.ini文件中提供认证细节上(一)sendmail的支持认证.请参阅下面的答案了解详情 (8认同)

小智 17

使用Fake sendmail for Windows发送邮件.

  1. 创建一个名为文件夹sendmailC:\wamp\.
  2. 在这些提取4个文件sendmail夹:sendmail.exe,libeay32.dll,ssleay32.dllsendmail.ini.
  3. 然后配置C:\wamp\sendmail\sendmail.ini:
smtp_server=smtp.gmail.com
smtp_port=465
auth_username=user@gmail.com
auth_password=your_password
Run Code Online (Sandbox Code Playgroud)
  1. 以上内容适用于Gmail帐户.然后配置php.ini:

    sendmail_path ="C:\ wamp\sendmail\sendmail.exe -t"

  2. 现在,重新启动Apache,这基本上就是你需要做的.


小智 13

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
Run Code Online (Sandbox Code Playgroud)

  • 对我不起作用,我认为你使用的是sendmail而不是smtp. (3认同)
  • 这对我来说不起作用,IIS 5.3上的PHP 5.3.8.我查看了源代码,似乎实际上没有实现smtp身份验证. (2认同)

Eri*_*VGG 5

我更喜欢PHPMailer工具,因为它不需要PEAR.但无论哪种方式,您都有一个误解:您不希望为SMTP用户和密码设置PHP服务器范围.这应该是每个应用程序(或每页)设置.如果要在不同的PHP页面中使用相同的帐户,请将其添加到某种settings.php文件中.


B S*_*ven 5

在这一整天工作之后,我终于找到了解决方案.以下是我使用WAMP从Windows XP发送的方式.

  1. 使用Google的SMTP服务器.您可能需要一个帐户.
  2. 下载并安装Fake Sendmail.我刚刚下载了它,解压缩并将其放入WAMP文件夹中.
  3. 创建一个测试PHP文件.见下文.
<?php
    $message = "test message body";
    $result = mail('recipient@some-domain.com', 'message subject', $message);
    echo "result: $result";
?>
Run Code Online (Sandbox Code Playgroud)
  1. 更新php.ini文件和sendmail.ini文件(sendmail.ini在sendmail文件夹中).
  2. 如果它不起作用,请检查刚刚创建的sendmail文件夹中的error.log文件.

参考:


小智 5

  1. 安装Postfix(与Sendmail兼容).
  2. 编辑/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
Run Code Online (Sandbox Code Playgroud)
  1. 创建/etc/postfix/sasl_passwd,输入:
smtp.server.net username:password
Run Code Online (Sandbox Code Playgroud)
  1. 类型# /usr/sbin/postmap sasl_passwd

  2. 然后运行: service postfix reload

现在PHP将像往常一样使用sendmail -t -i命令运行邮件,Postfix将拦截它并将其转发到您提供的SMTP服务器.