My ISP
帐户要求我发送出站SMTP
邮件的用户名和密码。
我如何PHP
在执行时使用它php.mail()?
该php.ini
文件仅包含服务器(SMTP= )
和的条目From: (sendmail_from= )
。
My ISP
帐户要求我发送出站SMTP
邮件的用户名和密码。
我如何PHP
在执行时使用它php.mail()?
该php.ini
文件仅包含服务器(SMTP= )
和的条目From: (sendmail_from= )
。
Answers:
PHPmail()
命令不支持身份验证。您的选择:
mail()
确实支持身份验证。有关详细信息,请参见下面的答案。
mail()
,而不是PHPMailer
我将以下详细信息应用于php.ini文件。它的作品很好。
SMTP = smtp.example.com
smtp_port = 25
username = info@example.com
password = yourmailpassord
sendmail_from = info@example.com
这些详细信息与Outlook设置相同。
Warning: mail(): SMTP server response: 530 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM
使用Windows的Fake sendmail发送邮件。
sendmail
中的文件夹C:\wamp\
。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,这基本上就是您需要做的。
smtp
从php.ini
文件中删除配置,因为如果您已经处理了sendmail.ini
文件中的这些值,则实际上并不需要这样做。另外,如果我sendmail_path = "C:\Program Files (x86)\sendmail\sendmail.exe"
不带-t
参数使用,我只能使其工作。如果有人好奇,我在Windows 10使用IIS
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
/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服务器。
我更喜欢PHPMailer工具,因为它不需要PEAR。但是,无论哪种方式,您都有一个误解:您不希望SMTP用户和密码在PHP服务器范围内进行设置。这应该是每个应用(或每个页面)的设置。如果要在不同的PHP页面上使用相同的帐户,请将其添加到某种settings.php文件中。
经过一整天的努力,我终于找到了解决方案。这是我从带有WAMP的Windows XP发送邮件的方法。
<?php
$message = "test message body";
$result = mail('recipient@some-domain.com', 'message subject', $message);
echo "result: $result";
?>
参考:
这些答案已经过时和过时了。最佳实践..
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";
}
您可以根据自己的喜好进行配置。
“ SMTP =本地主机”,
“ smtp_port = 25”,
“ ; sendmail_path =”。