【问题标题】:php.ini & SMTP= - how do you pass username & passwordphp.ini & SMTP= - 你如何传递用户名和密码
【发布时间】:2010-09-11 20:22:57
【问题描述】:

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

在执行php.mail()? 时如何让PHP 使用它php.ini 文件仅包含服务器(SMTP= )From: (sendmail_from= ) 的条目。

【问题讨论】:

标签: php smtp email


【解决方案1】:

这些答案已过时且已贬值。 最佳实践..

composer require phpmailer/phpmailer

sendmail.php 文件中的下一个只需要以下内容

# use namespace
use PHPMailer\PHPMailer\PHPMailer;

# require php mailer
require_once "../vendor/autoload.php";

//PHPMailer Object
$mail = new PHPMailer;

//From email address and name
$mail->From = "from@yourdomain.com";
$mail->FromName = "Full Name";

//To address and name
$mail->addAddress("recepient1@example.com", "Recepient Name");
$mail->addAddress("recepient1@example.com"); //Recipient name is optional

//Address to which recipient will reply
$mail->addReplyTo("reply@yourdomain.com", "Reply");

//CC and BCC
$mail->addCC("cc@example.com");
$mail->addBCC("bcc@example.com");

//Send HTML or Plain Text email
$mail->isHTML(true);

$mail->Subject = "Subject Text";
$mail->Body = "<i>Mail body in HTML</i>";
$mail->AltBody = "This is the plain text version of the email content";

if(!$mail->send()) 
{
    echo "Mailer Error: " . $mail->ErrorInfo;
} 
else 
{
    echo "Message has been sent successfully";
}

这可以随意配置..

【讨论】:

    【解决方案2】:
    1. 安装最新的hMailServer。最后一步“运行 hMailServer Administrator”。
    2. 连接到“本地主机”。
    3. “添加域...”
    4. 设置“127.0.0.1”。作为“域”,点击“保存”。
    5. “设置”>“协议”>“SMTP”>“电子邮件传送”
    6. 将“localhost”设置为“本地主机名”,在“SMTP Relayer”部分提供您的数据,点击“保存”。
    7. “设置”>“高级”>“IP 范围”>“我的电脑”
    8. 禁用“要求 SMTP 身份验证”组中的“外部到外部电子邮件地址”复选框。
    9. 如果你修改了php.ini,重写这3个值:

    "SMTP = 本地主机",

    "smtp_port = 25",

    "; sendmail_path = ".

    信用:How to configure WAMP (localhost) to send email using Gmail?

    【讨论】:

    • 这在 Windows 10 上完美运行,使用 WampServer 2.5,PHP 5.5.12。
    • 嗨@Tamas 在 SMTP 中继器中,我根据 AWS SES 主机名、端口、用户名和密码设置了我的凭证。但它不能正常工作。你知道我是否应该做点别的吗?
    【解决方案3】:
    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
    
    1. 创建/etc/postfix/sasl_passwd,输入:
    smtp.server.net username:password
    
    1. 键入#/usr/sbin/postmap sasl_passwd

    2. 然后运行:service postfix reload

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

    【讨论】:

      【解决方案4】:

      经过一整天的努力,我终于找到了解决方案。以下是我使用 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";
      ?>
      
      1. 更新您的 php.ini 文件和 sendmail.ini 文件(sendmail.ini 位于 sendmail 文件夹中)。
      2. 检查您刚刚创建的 sendmail 文件夹中的 error.log 文件,如果它不起作用。

      参考:

      【讨论】:

      • 它对我不起作用。 Windows 10、WampServer 2.5、PHP 5.5.12。
      【解决方案5】:

      使用Fake sendmail for Windows 发送邮件。

      1. C:\wamp\ 中创建一个名为sendmail 的文件夹。
      2. 解压sendmail文件夹中的这4个文件:sendmail.exelibeay32.dllssleay32.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
      
      1. 以上内容适用于 Gmail 帐户。然后配置php.ini:

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

      2. 现在,重新启动 Apache,这基本上就是您需要做的所有事情。

      【讨论】:

      • 它对我不起作用。 Windows 10、WampServer 2.5、PHP 5.5.12。
      • 谢谢!!!这对我有用。在尝试设置我自己的 SMTP 服务器一周后,我得到了你的回答,真的很感谢
      • 使用最新的sendmail for Windows 并遵循基本安装说明,确保从php.ini 文件中删除smtp 配置,因为如果您已经在你的sendmail.ini 文件。此外,如果我使用没有-t 参数的sendmail_path = "C:\Program Files (x86)\sendmail\sendmail.exe",我只能让它工作。如果有人好奇,我在 Windows 10 上使用 IIS。
      【解决方案6】:

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

      1. PHPMailer- Tutorial
      2. PEAR - Tutorial
      3. 自定义函数 - 在注释部分查看各种解决方案:http://php.net/manual/en/ref.mail.php

      【讨论】:

      • 值得注意的是,PHP mail()确实支持身份验证,如果 (a) sendmail 安装在服务器上并且 (b) 身份验证详细信息在 php.ini 文件中提供。有关详细信息,请参阅下面的答案。
      • @JamesMcCormack,如果 PHP 只支持这两种情况下的身份验证,那么 PHPMailer 是如何工作的?我只是 PHP,它允许在代码中定义身份验证细节。
      • @hiphip James McCormack 指的是 PHP mail(),而不是 PHPMailer
      • 要使 mail() 支持身份验证,请使用 hMailServer。我花了 5 分钟来设置它。看我的回答:stackoverflow.com/a/34818989/1293492
      【解决方案7】:

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

      SMTP = smtp.example.com
      smtp_port = 25
      username = info@example.com
      password = yourmailpassord
      sendmail_from = info@example.com
      

      这些细节与 Outlook 设置相同。

      【讨论】:

      • 如果 SMTP 服务器正在使用该端口,它是否也应该使用端口 465?
      • 是的。您可以指定的任何端口。
      • 在 PHP 5.6.20 上对我不起作用:Warning: mail(): SMTP server response: 530 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM
      • 对我不起作用,也找不到任何表明用户名或密码是有效 php.ini 指令的文档
      • @wedstrom 输入这个后重启 apache 有没有报错?
      【解决方案8】:

      PHP 是否对邮件命令进行身份验证!

      以下内容在 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
      

      【讨论】:

      • 这对我不起作用,IIS 6 上的 PHP 5.3.8。我看了一下源代码,似乎实际上没有实现 smtp 身份验证。
      • 对我不起作用,我认为您使用的是 sendmail 而不是 smtp。
      • 同意 - 在 Windows 上,此答案仅在服务器上安装了“Fake Sendmail”时才有效。下载地址:glob.com.au/sendmail
      • 适用于 W8.1、PHP 5.2.17,使用端口 587 上的远程 SMTP 服务器。
      • 使用端口 465 对我不起作用。Windows 10、WampServer 2.5、PHP 5.5.12。
      【解决方案9】:

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

      【讨论】:

      • 如何在 php 文件中添加用户名和密码。我可以用它通过developer.postmarkapp.com/developer-smtp.html邮戳使用PHP邮件功能发送邮件
      • 其他一些流行的应用程序可能依赖于 PHPMailer,比如内部的 WordPress,它又可能被配置为使用内部的 mail() 函数来发送实际的电子邮件。因此,PHP 范围的配置将是首选。
      【解决方案10】:

      使用 Mail PEAR 包中的 Mail::factory。 Example.

      【讨论】:

        猜你喜欢
        • 2020-02-15
        • 1970-01-01
        • 2022-11-19
        • 2012-03-14
        • 1970-01-01
        • 2015-02-18
        • 2014-05-03
        • 1970-01-01
        • 2011-06-19
        相关资源
        最近更新 更多