我对PHP中的邮件选项几乎没有疑问。
无论我读过什么,我都无法在没有SMTP的情况下从localhost发送邮件。这是正确的吗?
要使用PHP mail()函数从localhost发送邮件,我需要对这两个文件进行一些更改。一个是' php.ini' &安培;另一个是sendmail.ini'。更改设置smtp_server,port,username&密码。这个选项对我来说很完美。我用这个发了邮件。只是想确认我是否按照正确的方式从localhost发送邮件?
如果我只需要发送简单的邮件,mail()函数和& PHPMailer?
更改了两个ini文件(php.ini& sendmail.ini)后,我使用的是' https://github.com/PHPMailer/PHPMailer'在页面的末尾,但该示例不起作用。我在PHPMailer示例中使用了相同的SMTP,我在' sendmail.ini'中使用了它,但仍然无法正常工作。但是如果我在PHPMailer示例中注释掉SMTP部分,那就是
/*$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = 'smtp1.example.com;smtp2.example.com';
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'user@example.com'; // SMTP username
$mail->Password = 'secret'; // SMTP password
$mail->SMTPSecure = 'tls'; //Enable TLS encryption,
{SSL {1}}
请帮我澄清疑惑。 提前致谢
答案 0 :(得分:2)
无论我读过什么,我都无法在没有SMTP的情况下从localhost发送邮件。这是对的吗?
您需要有邮件服务器(如linux sendmail
)来发送邮件。您可以使用服务器的内置邮件服务器或连接到SMTP。 PHP没有内置邮件服务器/“postman”
使用PHP mail()函数从localhost发送邮件时,我需要对这两个文件进行一些更改。一个是'php.ini'&另一个是'sendmail.ini'。更改设置smtp_server,port,username&密码。这个选项对我来说很完美。我用这个发了邮件。只是想确认我是否按照正确的方式从localhost发送邮件?
只要你正确设置你的主机名/域名/ dns记录就行了,否则你的邮件会落入垃圾/垃圾邮箱。阅读有关SPF记录的更多信息。
如果我只需发送简单的邮件,mail()函数和& PHPMailer?
PHPMailer默认使用mail()
。 PHPMailer是mail()
的简单易用的界面/层,因此您不必自己编写复杂的邮件头。在STMP的情况下,phpmailer使用sockets
更改了两个ini文件(php.ini和sendmail.ini)后,我使用的是页面末尾“https://github.com/PHPMailer/PHPMailer”上给出的示例,但该示例无效。我在'sendmail.ini'中使用的PHPMailer示例中使用相同的SMTP,但仍然无法正常工作。但是如果我在PHPMailer示例中注释掉SMTP部分,那就是
检查echo 'Mailer Error: ' . $mail->ErrorInfo;
说的是什么
答案 1 :(得分:1)
因此,如果您想从本地计算机发送需要MTA(邮件传输代理)的电子邮件,那么您之前所写的内容是正确的。
如果您使用Linux或Windows,您可以安装Postfix,有很好的工具可以创建一个本地邮件服务器来捕获所有本地邮件。配置本地Postfix以捕获所有传入的邮件有点复杂。
PHP的默认邮件功能使用sendmail将您的电子邮件发送到全世界。当您拥有像PHPMailer这样的库或者我更喜欢 SwiftMailer 时。然后你有很多功能,如通过SMTP发送。
通常 sendmail 会将您的电子邮件重定向到现有的MTA。 Sendmail 是早期的遗留物,大多数程序 sendmail 兼容。
你最后的问题。如果您注释掉$mail->isSMTP();
行,那么您通过本地中继(sendmail)发送邮件,那么您可能没有安装openssl?并且您无法通过TLS连接到您的smtp服务器。您应该检查端口587是否已打开且可用。
要获得更好的错误信息,您可以使用$mail->ErrorInfo;
查看发生的情况。