Не удается отправить электронное письмо с использованием быстрой рассылки

Я новичок в php. Я пытался отправить почту, используя следующий код. мой справочный документ это. Я думаю, что это связано с моей частью результата. Может кто-нибудь помочь с этим? Моя ошибка приведена ниже

Warning: Invalid argument supplied for foreach() in /home/mysite/public_html/sendmail.php on line 50

Warning: Invalid argument supplied for foreach() in /home/mysite/public_html/sendmail.php on line 70

Мой полный код дан ниже, пожалуйста, наведите меня

require_once 'lib/swift_required.php';
include('database.php');
// Create the Transport
$transport = Swift_SmtpTransport::newInstance('smtp.mydomain.com', 25)
    ->setUsername('me@mydomain.com')
    ->setPassword('mypassword');

$transport = Swift_MailTransport::newInstance();
// Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);

// Send the message
//$result = $mailer->send($message);

//database connection part
$con = mysql_connect("localhost","username","password");
if (!$con) {
    die('Could not connect: ' . mysql_error());
}
mysql_select_db("mydb", $con);

$sql = "SELECT email,name FROM email_test";     
$result = mysql_query($sql);

//tested the results, works fine 
while($row = mysql_fetch_array($result)) {
    echo "--".$row['email']."---";
}

//using result to get enail and user name
$replacements = array();
foreach ($result as $user) {
    $replacements[$user['email']] = array(
        '{email}'=>$user['email'],
        '{name}'=>$user['name']
    );
}

$decorator = new Swift_Plugins_DecoratorPlugin($replacements);
$mailer->registerPlugin($decorator);

$message = Swift_Message::newInstance()
    ->setSubject('Important notice for {name}')
    ->setBody("Hello {name}, we have reset your password");

foreach ($result as $user) {
    $message->addTo($user['email']);
}

1 ответ

  1. Как в комментариях: $result это mysql_resource, а не массив. Вам нужно бежать fetch_row на этом ресурсе, чтобы на самом деле получить детали. Упоминается в комментариях (можете ли вы обновить код до того, что у вас есть сейчас?)

  2. Когда вы просматриваете результаты во второй раз, вам нужно "сбросить" набор результатов, чтобы начать сверху. Вы можете сделать это с mysql_data_seek($result, 0) сказать вернуться наверх.

Другие вопросы по тегам