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

Posted

技术标签:

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

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

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

【问题讨论】:

简单。使用 hMailServer。我花了 5 分钟来设置它。看我的回答:***.com/a/34818989/1293492 【参考方案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】:
    安装最新的hMailServer。最后一步“运行 hMailServer Administrator”。 连接到“本地主机”。 “添加域...” 设置“127.0.0.1”。作为“域”,点击“保存”。 “设置”>“协议”>“SMTP”>“电子邮件传送” 将“localhost”设置为“本地主机名”,在“SMTP Relayer”部分提供您的数据,点击“保存”。 “设置”>“高级”>“IP 范围”>“我的电脑” 禁用“要求 SMTP 身份验证”组中的“外部到外部电子邮件地址”复选框。 如果你修改了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】:
    安装 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 服务器。

【讨论】:

【参考方案4】:

经过一整天的努力,我终于找到了解决方案。以下是我使用 WAMP 从 Windows XP 发送的方法。

    使用 Google 的 SMTP 服务器。您可能需要一个帐户。 下载并安装Fake Sendmail。我刚刚下载了它,解压缩并放在 WAMP 文件夹中。 创建一个测试 PHP 文件。见下文。
<?php
    $message = "test message body";
    $result = mail('recipient@some-domain.com', 'message subject', $message);
    echo "result: $result";
?>
    更新您的 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/

【讨论】:

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

使用Fake sendmail for Windows 发送邮件。

    C:\wamp\ 中创建一个名为sendmail 的文件夹。 解压sendmail文件夹中的这4个文件:sendmail.exelibeay32.dllssleay32.dllsendmail.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,这基本上就是您需要做的所有事情。

【讨论】:

它对我不起作用。 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() 命令不支持身份验证。您的选择:

    PHPMailer- Tutorial PEAR - Tutorial 自定义函数 - 在注释部分查看各种解决方案: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 分钟来设置它。看我的回答:***.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.

【讨论】:

以上是关于php.ini & SMTP= - 你如何传递用户名和密码的主要内容,如果未能解决你的问题,请参考以下文章

无法在“localhost”端口 587 连接到邮件服务器,验证 php.ini 中的“SMTP”和“smtp_port”设置或在 wamp 服务器中使用 ini_set()

如何在 php 中通过 gmail 使用 mail()

如何知道我的 ISP 的 smtp 服务器名称?

我配置了我的 sendmail.ini 和 php.ini 但我无法使用 php 中的 mail() 函数发送电子邮件

PHP 的“邮件”是如何工作的?

SMTP 服务器问题,PHP 邮件