Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP电子邮件脚本不工作。发生了什么?_Php_Mysql_Sendmail - Fatal编程技术网

PHP电子邮件脚本不工作。发生了什么?

PHP电子邮件脚本不工作。发生了什么?,php,mysql,sendmail,Php,Mysql,Sendmail,任何帮助都将不胜感激。代码如下: <?php include 'header_admin.php'; ?> <?php include 'dbc.php'; page_protect(); checkAdmin(); ?> <?PHP require_once "Mail.php"; $con = mysql_connect("host","username","pass"); if (!$con) { die('Could not connect: ' . my

任何帮助都将不胜感激。代码如下:

<?php include 'header_admin.php'; ?>
<?php
include 'dbc.php';
page_protect();
checkAdmin();
?>
<?PHP
require_once "Mail.php";

$con = mysql_connect("host","username","pass");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("db_name", $con);

$elist = mysql_query("SELECT cEmail FROM tblUsers WHERE intUserID = '20'");

$from = "FROM E-MAIL";
$subject = $_POST['eSubject'];
$body = $_POST['eMessage'];

$host = "smtp.domain.com";
$port = "465";
$username = "username";
$password = "password";

echo "<div class='entry'>"; 

if(mysql_num_rows($elist) > 0)
{                   
    while($eresult = @mysql_fetch_array($elist)) {
        $headers = array ('From' => $from, 'To' => $eresult['cEmail'], 'Subject' => $subject);
        $smtp = Mail::factory('smtp', array ('host' => $host, 'auth' => true, 'username' => $username, 'password' => $password));
        $mail = $smtp->send($elist_result['cEmail'], $headers, $body);
    }   
}

echo "<table align='center'><p>Message successfully sent!</p></table></div>";

mysql_close($con);

?>

我确保smtp设置正确,并手动检查我的mysql查询以确保它获取电子邮件地址。另外,我还执行了一个单独的echo命令,以确保$body和$subject是正确的。

尝试使用PHP邮件函数:

您在那里使用$elist_result['cEmail'],如果它与$eresult['cEmail']不同,它来自哪里? 从上面发布的代码来看,这并不明显。我猜这只是一个键入错误。

如果出现问题,$smtp->send方法将返回一个PEAR\u error对象,如果调用成功,$smtp->send方法将返回布尔值TRUE。将代码更改为以下内容:

$ret = $smtp->send();
if ($ret !== TRUE) {
    echo "Mail send failed: ", $err::getMessage();
}

这应该能为您反映出故障的所有细节。

您说它不起作用是什么意思?是否有错误消息?您是否检查了错误和邮件日志文件?如何检查日志文件。没有错误。我没有收到电子邮件。我通过gmail服务器检查了smtp,它工作正常,只是没有通过此脚本。可能是您的ISP忽略了您的电脑发送的smtp协议。您需要从ISP那里了解如何查看web服务器错误日志。在这里,您可以找到解决此问题的关键错误消息。这是一个打字错误。这是sql查询的结果$eresult['cEmail']