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.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,这基本上就是您需要做的所有事情。
【讨论】:
它对我不起作用。 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
【讨论】:
值得注意的是,PHPmail()
确实支持身份验证,如果 (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()