我使用的是我一直用来尝试通过电子邮件发送表单的相同php代码,我收到此消息:
警告:mail()[function.mail]: 无法连接到邮件服务器 “localhost”端口25,验证你的 “SMTP”和“smtp_port”设置 php.ini或使用ini_set() 第44行的sendMailSuscribete.php
这是第40-54行:
$header .= "From: $email" . "\r\n";
$header .= "Reply-To: $email" . "\r\n";
$header .= "Return-Path: $email" . "\r\n";
if(mail($to, $subject, $msg, $header)){
//Message sent!
redirect("http://www.domain.com/suscribete.html");
}else{
// Display error message if the message failed to send
echo "
<div class=\"MsgError\">
<h1>Error…</h1>
<p>Disculpa <b><?=$name;?></b>, tu mensaje falló en ser enviado. Por favor vuelve a intentar.</p>
</div>";
}
我已经使用phpinfo()
进行了检查,我知道smtp设置为localhost,它使用的端口是25,所以我真的不知道错误是什么。
更新 我忘了说它是在Windows服务器上运行的,这个php文件是我一直用于Unix服务器的文件,它是否包含不同的东西?
答案 0 :(得分:3)
mail
无法直接发送电子邮件(至少不能在Windows上发送),它需要一个SMTP服务器。在正在执行PHP脚本的主机上没有运行SMTP服务器。解决方案是:
第1点是一个好主意,因为这些库提供了抽象,使得不必处理低级别的东西,比如正确地将MIME消息放在一起。第2点可能是最不麻烦的。我建议不要使用Point 3.除非你真的想要自己管理一个电子邮件服务器。
答案 1 :(得分:3)
您可以尝试使用外部SMTP邮件服务器,例如Gmail吗?如果您有Gmail帐户,可以尝试在邮件命令之前添加:
ini_set("SMTP","ssl://smtp.gmail.com");
ini_set("smtp_port","465");
ini_set("username","<myaccount.gmail.com>"); # You need to change this
ini_set("password","YOUR_PASSWORD"); # You need to change this
我没有测试过这些设置,但它应该向您发送正确的方向。
答案 2 :(得分:0)
你有哪个邮件服务器?有些人表现得有些不同...... http://www.php.net/manual/en/function.mail.php(只需向下滚动)