phpMailer - 致命错误:不能使用stdClass类型的对象作为数组

时间:2015-01-19 18:32:23

标签: php sendmail phpmailer

我正在尝试建立一个邮件系统,用户可以在其中选择一组特定的人来发送电子邮件。我现在面临的是我无法发送电子邮件。

我曾尝试$row['email'],但它会显示错误消息,如

  

致命错误:无法使用stdClass类型的对象作为数组

我也尝试了$row->$email,未发现任何错误,但没有发送电子邮件。

注意:我更喜欢使用Gmail SMTP,因为我没有设置托管服务器,而且我没有时间再这样做了。请提出建议。

来自 doMailingSystem.php

<?php
include 'dbFunctions.php';
include "mailingSystem.php";

require_once('class.phpmailer.php');
require_once('PHPMailerAutoload.php');

extract($_POST);
$session_id = date('Y-m-d', strtotime($session_id));
$sql = "SELECT student_profile.email FROM student_profile, booking_history WHERE student_profile.student_id = booking_history.student_id and booking_history.booking_date_session LIKE '$session_id%' ";
//print $sql;
$result = mysqli_query($link, $sql);
while ($row = mysqli_fetch_object($result)) {

    $mail = new PHPMailer();
    $mail->IsSMTP();
    $mail->CharSet = "UTF-8";
    $mail->SMTPSecure = 'tls';
    $mail->Host = 'smtp.gmail.com';
    $mail->Port = 587;
    $mail->Username = 'usernamer@gmail.com';
    $mail->Password = 'password';
    $mail->SMTPAuth = true;

    $mail->From = 'username@gmail.com';
    $mail->FromName = 'X Team';
    $mail->AddAddress($row['email']);

    $mail->IsHTML(true);
    $mail->Subject = $_POST['subject'];
    $mail->AltBody = "To view the message, please use an HTML compatible email viewer!";
    $mail->Body = $_POST['message'];
}
?>
<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <p>
<?php
// echo $statusMessage;
?>
        </p>
    </body>
</html>

2 个答案:

答案 0 :(得分:1)

你忘了给你发消息:

...
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!";
$mail->Body = $_POST['message'];
$mail->send();
^^^^^^^^^^^^^ Here

您可能想要检查电子邮件地址是否符合您的预期。

答案 1 :(得分:1)

mysqli_fetch_assoc()声明中使用mysqli_fetch_object()代替while。然后,您可以将其用作array

之类的$row['email'];