Привет, я сейчас работаю над рассылкой для моего сайта.Я получил данные о пользователях в базе данных, и у меня есть следующая информация о пользователе:
- Имя
- email
- Дата подписки на рассылку
- и цикл, когда пользователь хочет получать новостную рассылку (у пользователя есть выбор между каждым месяцем, каждые 6 месяцев или каждый год)
Так что моя проблема в том, что я не знаюКак рассчитать точное время отправления почты.Моей первой идеей было что-то вроде добавления цикла к дате, когда пользователь подписался на новостную рассылку, и, если результатом будет текущая дата, отправьте новостную рассылку.Имеет ли это какой-то смысл?
У кого-нибудь есть идея?Помощь была бы очень признательна!
Вот моя функция для отправки информационного бюллетеня:
function sendNewsletter($userEmail, $username, $newsletterID)
{
include("../db_Data.php");
$dbMailSender = mysqli_connect($db_Data['server'], $db_Data['username'], $db_Data['password'], $db_Data['database']) or die("Datenbankverbindung gescheitert!");
$sql = "SELECT * FROM newsletter WHERE id = '$newsletterID'";
$newsletter = mysqli_query($dbMailSender, $sql) or die("Datenbankabfrage gescheitert!");
$newsletter = mysqli_fetch_assoc($newsletter);
$filePath = "../newsletters/";
$imgPath = "../uploads/";
$mail = new PHPMailer(true);
// Newsletter in objectBuffer laden, um Content der Datei in newsletterContent speichern zu können
ob_start();
include($filePath . $newsletter['htmlDatei']);
$newsletterContent = ob_get_contents();
ob_clean();
// SMTP Settings
$mail->Host = ""; // removed for security reasons
$mail->SMTPAuth = true;
$mail->Username = ""; // removed for security reasons
$mail->Password = ""; // removed for security reasons
$mail->SMTPSecure = "tls";
$mail->Port = 587;
// Mail Settings
$mail->addAddress($userEmail);
$mail->setFrom("newsletter@cankarka.com", "cankarka.com - Newsletter");
$mail->isHTML(true);
$mail->Subject = $newsletter['betreff'];
$mail->Body = $newsletterContent;
// Bilder für Newsletter laden
$mail->AddEmbeddedImage($imgPath . "logo.png", "logo");
$mail->AddEmbeddedImage($imgPath . "header.png", "header");
$mail->ADdEmbeddedImage($imgPath . "instagram.png", "instagram");
$mail->AddEmbeddedImage($imgPath . "youtube.png", "youtube");
$mail->AddEmbeddedImage($imgPath . "artstation.png", "artstation");
$mail->AddEmbeddedImage($imgPath . "sketchfab.png", "sketchfab");
$mail->AddEmbeddedImage($imgPath . "vorne.png", "3dChurch");
$mail->AddEmbeddedImage($imgPath . "He_Is_Damn_Close_Seq_canopy_Kamera_1.jpg", "dogfight");
$mail->AddembeddedImage($imgPath . "projectPreviewImage.jpg", "2dLogos");
$mail->AddembeddedImage($imgPath . "Agisoft_first_look.png", "agisoftScreenOne");
$mail->AddembeddedImage($imgPath . "Agisoft_second_look.png", "agisoftScreenTwo");
$mail->AddembeddedImage($imgPath . "Agisoft_final_look.png", "agisoftScreenThree");
$mail->AddembeddedImage($imgPath . "Cinema4D_look.png", "cinemaScreen");
// Email senden
if ($mail->send())
{
echo "<p>Sending Newsletter to $userEmail, the name is $username, the newsletterID is $newsletterID</p>";
$sql = "UPDATE newsletter SET used='true' WHERE id='$newsletterID'";
mysqli_query($dbMailSender, $sql) or die("Datenbankabfrage gescheitert!");
}
mysqli_close($dbMailSender);
}
И здесь я хочу вызвать функцию (Моя идея состояла в том, чтобы пройтись по пользовательской таблице и отправить каждомупользователь новостной рассылки):
$id = $_GET['id'];
include("../db_Data.php");
$db = mysqli_connect($db_Data['server'], $db_Data['username'], $db_Data['password'], $db_Data['database']) or die("Datenbankverbindung gescheitert!");
$sql = "SELECT * FROM member";
$users = mysqli_query($db, $sql) or die("Datenbankabfrage gescheitert!");
while ($row = mysqli_fetch_assoc($users))
{
$zeit = $row['datum_signed'];
$zeitraum = $row['zeitraum'];
$monateGone = date("m", time()) - date("m", $zeit);
$jahreGone = date("Y", time()) - date("Y", $zeit);
}
mysqli_close($db);