2009-08-24 43 views
1

我有一个简单的脚本,可以在我的任何其他服务器上正常工作,但在那个我需要的,它不。PHP - 邮件()函数不工作在我的主机

<?php 
$mail = mail('[email protected]', 'My Subject', 'msg'); 
?> 

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

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

你知道问题出在哪里,或者其他任何方式发送电子邮件?

谢谢

+0

windows或linux主机? Windows处理它的方式很不一样 – 2009-08-24 13:41:06

+1

好吧,我finaly联系了托管服务提供商,我们发现它适用于某些邮件,但对于其他不是,例如我的邮件是[email protected](不工作),但在[email protected]它的工作原理.. – Mike 2009-08-24 15:43:45

+0

重复(国际海事组织):http://stackoverflow.com/questions/745690/reasons-why-php-mail-might-not-be-working – DisgruntledGoat 2009-08-24 16:38:01

回答

6

好像sendmail没有在您的服务器上配置。

你可以做的事情是通过f.e创建一个邮件账户。 Gmail,雅虎邮件或类似的邮件,并使用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('[email protected]', 'Some Sender'); 
$mail->addTo('[email protected]', 'Some Recipient'); 
$mail->setSubject('TestSubject'); 
$mail->send($transport); 

这不需要sendmail的,你使用的是先在邮件服务器允许SMTP进行配置。

更新: 正如托托指出,SMTP也可能被您的主机拦截。在这种情况下,你可以尝试通过简单地增加两个条目的配置Zend_Mail中,然后应该像这样使用SSL:

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

希望这有助于。

+0

请注意,许多hosters块这(使用域外的smtp服务器)来避免垃圾邮件发送者... :) – Toto 2009-08-24 13:54:41

2

该脚本不一定会显示错误,失败$ mail将是错误的。

一些可能性

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

  • 如果它的Windows主机在php.ini

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

0

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

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

廉价的托管公司通常有一个很好的支持服务。 ;)所以不断试图达到他们或相当他们(想象一下你有一个大问题的一天)......

0

如果可能,请检查您的服务器是否解决seznam.cz到正确的IP地址。一旦我的服务器的DNS认为它托管了某个域,我就有类似的问题,因此所有到该域的邮件都不会离开该域!花了我们一段时间来弄清楚这一点。

你可能没有这个问题,但它不会伤害检查。