Отправка SendGrid нескольким получателям с использованием api v3 & amp; PHP библиотека в функции WordPress

Я использую SendGrid v3 api с библиотекой php, чтобы попытаться отправить нескольким получателям как часть функции WordPress. Я могу успешно отправлять электронные письма, используя образец кода SendGrid и жесткое кодирование нескольких получателей. Тем не менее, когда я запрашиваю базу данных, чтобы попытаться создать список адресов электронной почты: он всегда терпит неудачу с ошибкой 400. Вот код SendGrid, с которым я работаю. Он отлично работает с живыми данными и жестко закодирован. Тем не менее я не могу правильно построить массив $ tos из моего запроса к базе данных. Я прочитал документацию и все учебники, которые я могу найти. Я также связался с поддержкой Sendgrid.

$email = new \SendGrid\Mail\Mail();
$email->setFrom("[email protected]", "Example User");
$tos = [
"[email protected]" => "Example User1",
"[email protected]" => "Example User2",
"[email protected]" => "Example User3"];
$email->addTos($tos);
$email->setSubject("Sending with SendGrid is Fun");
$email->addContent("text/plain", "and easy to do anywhere, even with PHP");
$email->addContent(
"text/html", "<strong>and easy to do anywhere, even with PHP</strong>");
$sendgrid = new \SendGrid(getenv('SENDGRID_API_KEY'));
try {
$response = $sendgrid->send($email);
print $response->statusCode() . "\n";
print_r($response->headers());
print $response->body() . "\n";
} catch (Exception $e) {
echo 'Caught exception: '.  $e->getMessage(). "\n";
}

Вот мой запрос WordPress: $ send = $ wpdb-> get_results («SELECT * FROM» test«);

Как правильно кодировать переменную $ tos из моего запроса к базе данных, чтобы $ email-> addTos ($ tos) не выдавал ошибку?

Благодарю.

0

Решение

В соответствии с эта страница, addTos функция больше не поддерживается и больше не поддерживается в API SendGrid: addTos() метод был перенесен в addTo() и в настоящее время не поддерживает передачу массивов в «.

Следовательно:

Используя ваш test база данных:

$email = new \SendGrid\Mail\Mail();
$email->setFrom("[email protected]", "Example User");

$userResults = $wpdb->get_results( "SELECT `email` FROM `test`", ARRAY_A ); //Select as Associative Array
foreach($userResults as $userKey => $userValue){
$userEmail = $userValue['email']);
if ( is_email( $userEmail ) ) {  //Validate  properly formatted email structure
$email->addTo($userValue['email']);  // If you hade a name column you could use: $email->addTo($userValue['email'], $userValue['name']);
}
}

$email->setSubject("Sending with SendGrid is Fun");
$email->addContent("text/plain", "and easy to do anywhere, even with PHP");
$email->addContent(
"text/html", "<strong>and easy to do anywhere, even with PHP</strong>");
$sendgrid = new \SendGrid(getenv('SENDGRID_API_KEY'));
try {
$response = $sendgrid->send($email);
print $response->statusCode() . "\n";
print_r($response->headers());
print $response->body() . "\n";
} catch (Exception $e) {
echo 'Caught exception: '.  $e->getMessage(). "\n";
}

С помощью wp_users база данных:

$userResults = $wpdb->get_results( "SELECT `user_email`, `user_nicename` FROM `wp_users`", ARRAY_A );
foreach($userResults as $userKey => $userValue){
$email->addTo($userValue['user_email'], $userValue['user_nicename']);
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]