PHP - mail()函数无法在我的主机上运行

时间:2009-08-24 13:31:52

标签: php email hosting

我有一个简单的脚本可以在我的任何其他服务器上正常工作,但在我需要的那个服务器上,它没有。

<?php
$mail = mail('test@test.cz', 'My Subject', 'msg');
?>

我尝试调用webhost提供程序,但无法访问它们。也尝试谷歌一些建议,但没有人似乎有同样的问题。

脚本没有显示任何错误消息,它只是没有做任何事情。

您知道问题是什么,还是以其他方式发送电子邮件?

由于

4 个答案:

答案 0 :(得分:6)

似乎没有在您的服务器上配置sendmail。

你可以做的是在f.e.创建一个邮件帐户。 gmail,yahoo mail或类似邮件,并使用Zend_Mail使用SMTP从此帐户发送邮件。

我从Zend Framework文档中获取了这个代码示例:

$config = array('auth' => 'login',
                'username' => 'myusername',
                'password' => 'password');

$transport = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config);

$mail = new Zend_Mail();
$mail->setBodyText('This is the text of the mail.');
$mail->setFrom('sender@test.com', 'Some Sender');
$mail->addTo('recipient@test.com', 'Some Recipient');
$mail->setSubject('TestSubject');
$mail->send($transport);

这不需要配置sendmail,因为您使用的是允许smtp的预先存在的邮件服务器。

<强>更新 正如toto指出的那样,你的托管服务商也可能阻止SMTP。在这种情况下,你可以尝试使用SSL,只需在Zend_Mail配置中添加两个条目,然后它们应如下所示:

$config = array('auth' => 'login',
                'username' => 'myusername',
                'password' => 'password',
                'ssl' => 'ssl',
                'port' => 465);

希望这有帮助。

答案 1 :(得分:2)

脚本不一定会显示错误,失败时$ mail会出错。

一些可能性

  • 您的主机可能已阻止这些端口。

  • 如果是Windows主机,您可能没有在php.ini中设置邮件设置

  • 看看php mail manual page。在示例中,它显示您可以添加额外的标头。主机连接的邮件服务器可能需要某些基本标头

答案 2 :(得分:0)

只有这家托管公司才能回答。我们只能做出假设。

但简单地说:如果此代码与其他托管公司合作而不是这个。它肯定是一个配置问题(php.ini,smtp网关/服务器,本地防火墙等)。

廉价的托管公司通常都有非常好的支持服务。 ;)所以继续努力达到他们或他们(想象一下你有一个大问题的那天)....

答案 3 :(得分:0)

如果可能,请检查您的服务器是否正在将 seznam.cz 解析为正确的IP地址。我有一个类似的问题,一旦我的服务器的DNS认为它托管某个域,所以所有到该域的电子邮件永远不会离开盒子!我们花了一段时间才想出那个。

你可能没有这个问题,但检查不会有什么坏处。