【发布时间】:2010-10-08 09:53:05
【问题描述】:
我需要在 Microsoft 服务器上安装 PHP 站点。出于某种原因,主机不允许该站点发送电子邮件。楼主给我发了一个代码示例……没用。
有没有办法检查服务器是否允许通过 php mail() 函数发送电子邮件?
在这个阶段,一切都是指指点点,我需要一些证据来向客户表明主机有问题。
【问题讨论】:
-
您在此处发布问题之前尝试过吗?
我需要在 Microsoft 服务器上安装 PHP 站点。出于某种原因,主机不允许该站点发送电子邮件。楼主给我发了一个代码示例……没用。
有没有办法检查服务器是否允许通过 php mail() 函数发送电子邮件?
在这个阶段,一切都是指指点点,我需要一些证据来向客户表明主机有问题。
【问题讨论】:
要检查您的服务器或 PHP 安装是否启用了邮件功能,请使用
<?php
if ( function_exists( 'mail' ) )
{
echo 'mail() is available';
}
else
{
echo 'mail() has been disabled';
}
?>
检查是否发送邮件
<?php
$email = "youremail@gmail.com";
$subject = "Email Test";
$message = "this is a mail testing email function on server";
$sendMail = mail($email, $subject, $message);
if($sendMail)
{
echo "Email Sent Successfully";
}
else
{
echo "Mail Failed";
}
?>
If the mail() function exist but mails not going, check if a mail transport agent (MTA)such as sendmail or postfix is installed on your server
如果你在 Linux 上:
试试;
$ dpkg -S `which sendmail`
在 Ubuntu 上安装 sendmail;
sudo apt-get install sendmail
https://www.digitalocean.com/community/questions/setting-up-email-with-sendmail
【讨论】:
在 Linux 中,默认情况下 mail() 函数使用操作系统的 sendmail。
在 Windows 中,默认情况下 mail() 不做任何事情,你必须设置它来编辑 php.ini 文件。
您可以检查您的主机使用的 php.ini 中的哪些选项,编写一个 showinfo.php 文件,然后在其中写入:
<?php
phpinfo();
?>
然后,如果您调用该网页,它将显示所有启用的选项。
为了能够在 Windows 上发送邮件,这两个值的设置应该类似:
SMTP = smtp.isp.net (the name or ip of your server)
sendmail_from = me@isp.net
XAMPP 平台附带了一个 mailtodisk 替代品,您可以将其设置为使用“fakemail”代替 sendmail,也可以通过 SMTP 连接。你可以拿XAMPP自带的sendmail文件夹,在IIS使用的php.ini中设置。
【讨论】:
这似乎是一个旧帖子,但您可以使用 function_exists() 函数,在使用之前检查该函数是否存在。
【讨论】: