我使用以下代码从我的网站发送电子邮件:
<?php
$to = "mygmail@gmail.com;
$subject = "My Site - NoReply";
$headers = "From: do not reply @ My Site" . "rn";
$headers .= "MIME-Version: 1.0rn";
$headers .= "Content-Type: text/html; charset=ISO-8859-1rn";
$message = "You have received a message from the My site: <br /><br />";
$message .= "Greetings <strong>My Name</strong>, <br /><br />";
$message .= "You have been granted access to the My site.<br /><br />";
mail($to, $subject, $message, $headers);
?>
我的网站由Hostgator托管。他们建议我应该使用465端口进行SMTP。
我刚和他们聊完。一切都在他们的一端,他们没有什么可以做的。
话虽如此,为什么我无法使用上述方式发送电子邮件?
我在使用Apache服务器的工作中使用过同样的代码,从网站发送任何电子邮件都没有问题。
我缺少什么来完成这项工作?
这里最明显的问题是您没有使用SMTP。
PHP的mail()
函数通过shell向sendmail
二进制文件提交消息来工作,并且根本不直接使用网络,因此您无法执行他们的要求。
通过SMTP发送,甚至发送到localhost,比使用mail()
更可取,因为它更快、更安全、更可靠。
你用PHPMailer标记了这个问题,可以直接通过SMTP发送,@j4g0提供了一个合理实现的链接。在SO和PHPMailer项目中都有更多的例子。