У меня есть две таблицы MySQL, одна с данными подписчика, другая, где я отслеживаю, кому было отправлено электронное письмо, какая кампания, какая версия и т. Д. (Crawler и sent_mail, соответственно.) Я создал скрипт, который может просмотрите таблицу сканера и отправьте электронные письма на основе API SendGrid, веб-формы и некоторого JavaScript. Но я пытаюсь выяснить, как я могу сказать сценарию извлекать электронные письма из таблицы сканера, для которых текущая кампания не указана в таблице sent_mail. Я знаю, что должен использовать соединение, но не совсем уверен, как встроить логику в запрос. Мысли? Моя попытка следует ниже:
foreach ('SELECT crawler.email FROM crawler LEFT JOIN sent_mail ON crawler.email = sent_mail.email WHERE sent_mail.campaigns <> "$campaign"') as $address) as $address) {
$email = new SendGrid\Email();
$email
->addTo($address)
->setFrom($address)
->setSubject($title)
->setText($text)
->setHtml($text)
;
$sendgrid->send($email);
$db-> $query = "INSERT INTO sent_mail (email, campaigns, campaign_version)
VALUES ($address, $campaign, $campaign_version)"; echo 'great success';
}
Я думаю, что вы ищете ниже код ..
я думаю, что приведенный ниже код может немного помочь
$get_records = mysql_query('SELECT crawler.email as `email_val` FROM crawler LEFT JOIN sent_mail ON crawler.email = sent_mail.email WHERE sent_mail.campaigns <> "$campaign"');
$i = 1;
while($data = mysql_fetch_assoc($get_records)){
$to = $data['email_val'];
$subject = 'Your Subject';
// Always set content-type when sending HTML email
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
// More headers
$headers .= 'From: Your Name <[email protected]>' . "\r\n";$sendmail = mail($to,$subject,$message,$headers);
if($sendmail){
$insert = mysql_query("INSERT INTO sent_mail (email, campaigns, campaign_version)
VALUES ('your value', 'your value', 'your value')");
if($insert){
echo $i.'Value inserted & Mail sent to'.$data['email'];
}else{
echo $i.'Value not inserted but Mail sent to'.$data['email'];
}
}else{
echo $i.'Mail sending fail to'.$data['email'];
}
$i++;
}
Примечание. Перед запуском вышеуказанного кода убедитесь, что установлено соединение с базой данных.
Других решений пока нет …