Как отправить новостную рассылку автоматически? - PullRequest
0 голосов
/ 13 мая 2019

Привет, я сейчас работаю над рассылкой для моего сайта.Я получил данные о пользователях в базе данных, и у меня есть следующая информация о пользователе:

  • Имя
  • 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...