Я пытаюсь отправить электронное письмо нескольким пользователям через BCC, получая идентификаторы электронной почты из базы данных, для этого я написал ниже код
$q = $db->query("SELECT group_concat(concat(''',user_email,''')) FROM topic_subscribe");
$recipients = array($q['user_email']);
$headers .= 'BCC: '. implode(",", $recipients) . "\r\n";
$a = mail( null, $subject, $message, $headers );
Но он не отправляет электронную почту. Если я возьму $recipients
вручную, как показано ниже, он работает
$recipients = array("[email protected]","[email protected]",);
может извлекать идентификаторы электронной почты из базы данных, это проблема, но не может понять проблему. любая помощь, пожалуйста
Не следует объединять кавычки с user_email
. И вам нужно дать псевдоним выражению group_concat()
, чтобы вы могли ссылаться на него по имени в возвращаемом значении.
Затем используйте explode()
, чтобы разделить значение запятыми. Но если вы просто собираетесь вызвать implode()
, вы можете просто использовать значение строки как есть.
$q = $db->query("SELECT group_concat(user_email) AS emails FROM topic_subscribe");
$headers .= 'BCC: '. implode(",", $q['emails']) . "\r\n";
$a = mail( null, $subject, $message, $headers );
Что показывает var_dump($q['emails'])
?
показывает вывод 'null, если используется запрос, но при использовании' fetchRow 'вместо' query 'выводится' string (74) "mymailid1 @ gmail.com, mymailid2 @ gmail.com, mymailid3 @ gmail.com, mymail @ gmail.com "'
$db->query()
не является стандартным методом PHP. Похоже, он возвращает все строки, а не только одну строку, как вы ее используете. Значит вам нужен $q[0]['emails']
он работает с использованием этого $ q = $ db-> fetchRow ("ВЫБРАТЬ group_concat (user_email) AS emails FROM topic_subscribe"); '$ заголовки. =' BCC: '. $ q ['электронные письма']. "\ r \ n"; ' Благодарность
Пытался, но не завершил процесс