| Current Path : /home/wirbesti/www/ |
| Current File : /home/wirbesti/www/mail-PDF-de3.php |
<?php
// Enable error reporting for debugging
error_reporting(E_ALL);
ini_set('display_errors', 1);
ini_set('max_execution_time', 300); // 5 minutes
// Start logging
$logFile = __DIR__ . '/debug.log';
function logMessage($message) {
global $logFile;
file_put_contents($logFile, date('Y-m-d H:i:s') . " - $message\n", FILE_APPEND);
}
logMessage("Script started");
// Prevent multiple executions using a session
session_start();
logMessage("Session started");
// Check if the email has already been sent for this request
if (isset($_SESSION['email_sent_de_' . $_GET['campaign'] . '_' . $_GET['email']])) {
logMessage("Email already sent, redirecting");
header('Location: https://wirbestimmen.ch/de/unterschriftsbogen-dl-de');
exit;
}
ob_start();
logMessage("Output buffering started");
$nachname = $_GET['nachname'];
$vorname = $_GET['vorname'];
$email = $_GET['email'];
$campaign = $_GET['campaign'];
logMessage("Parameters: nachname=$nachname, vorname=$vorname, email=$email, campaign=$campaign");
// Validate email
if (empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
logMessage("Invalid email: $email");
ob_end_clean();
die('Invalid email address');
}
require_once 'php/Metadata.php';
require_once 'php/DBConnection.php';
require_once 'php/setting.config.php';
require_once 'vendor/autoload.php'; // PHPMailer autoload
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
logMessage("Required files loaded");
$db = new DBConnection($config);
logMessage("Database connection established");
$meta = new Metadata($db);
$metaEntry = $meta->getMetadataByCampaignid($campaign);
logMessage("Metadata query executed");
if ($metaEntry) {
$filename = $metaEntry['signature-form-path-pdf-de'];
$subjectname = $metaEntry['slogan-de'];
} else {
$filename = 'Name.pdf';
$subjectname = '"Text der initiative"';
}
logMessage("Metadata: filename=$filename, subjectname=$subjectname");
// Recipient
$to = $email;
// Sender
$from = 'kontakt@wirbestimmen.ch';
$fromName = 'Wir bestimmen';
// Email subject
$subject = 'Unterschriftsbogen leer - ' . $subjectname;
$path = getcwd();
// Attachment file path
$file = $path . '/' . $filename;
logMessage("Attachment file path: $file");
// Check if file exists
if (!empty($file) && !is_file($file)) {
logMessage("Attachment file not found: $file");
ob_end_clean();
die('Attachment file not found');
}
$htmlContent = '<p><strong>Hallo ' . $vorname . ' ' . $nachname . '</strong></p>
<p>Wir danken Ihnen im Namen des Initiativekomitees.</p>
<p>Wir haben Ihnen im Anhang ein leeres Unterschriftsblatt, resp. einen Strassenbogen zugestellt.</p>
<p><strong>WICHTIG:</strong><br />Damit Ihre Mühe nicht umsonst war und die <strong>Unterschriften gültig sind</strong>, müssen wenige aber <strong>WICHTIGE</strong> Regeln beachtet werden:</p>
<ol>
<li>Alle Personen müssen aus dem gleichen Dorf oder aus der gleichen Stadt (PLZ) sein, wie oben in Politische Gemeinde eingetragen.</li>
<li>Alle Felder "Name, Vorname, Geburtsdatum, Strasse & Nr." müssen ausgefüllt und zuhinterst mit der Unterschrift der Person versehen sein.</li>
<li>Das Feld "Namen und Vornamen" muss von der unterzeichnenden Person handschriftlich ausgefüllt werden.</li>
</ol>
<p>Weitere Bögen können bei uns auf kontakt@wirbesimmen.ch oder unter +41 840 123 456 bestellt werden.</p>
<p>Dürfen wir Sie bitten, uns den Unterschriftsbogen gefalten in einem Couvert, oder gefalten und mit einem Klebestreifen verschlossen in den nächsten Briefkasten zu werfen. Sie machen den Organisatoren der Volksinitiative <strong>einen grossen Gefallen</strong>, wenn diese die Unterschriften nicht in aller letzten Sekunde erhalten. Die Prüfung auf Fehler nimmt einige Zeit in Anspruch.<br />Dafür danken wir Ihnen herzlich.</p>
<p>Wenn Sie mögen, bitte unterstützen Sie unsere Sammlung mit einer Briefmarke. Auch dafür danken wir Ihnen herzlich.</p>
<p>Wir wünschen Ihnen weiterhin grossen Elan für die Schweiz und die Zukunft einzustehen und Grüssen Sie herzlich.<br /><a href="http://www.wirbestimmen.ch" target="_blank" rel="noopener noreferrer"><br />Wir bestimmen<br /></a>Tel.: +41 840 123 456<br />Mail: <a href="mailto:kontakt@wirbestimmen.ch">kontakt@wirbestimmen.ch</a></p>
<p> </p>
<p>Unser Engagement für eine starke und breite direkte Demokratie kostet viel Geld. <br />Für Ihre Unterstützung durch eine Spende sind wir sehr dankbar.<br /><br /><em><strong>Spenden können Sie direkt auf folgendes Konto einzahlen:</strong></em></p>
<p>Wir bestimmen<br />3006 Bern<br /><br />Konto: 61-933005-1<br />IBAN: CH68 0900 0000 6193 3005 1</p>';
$mail = new PHPMailer(true);
try {
// Enable PHPMailer debugging
$mail->SMTPDebug = 2; // 2 = client and server messages
$mail->Debugoutput = function($str, $level) use ($logFile) {
file_put_contents($logFile, date('Y-m-d H:i:s') . " - [PHPMailer] $str\n", FILE_APPEND);
};
/*
// Server settings
$mail->isSMTP(); // Use SMTP
$mail->Host = 'mail.wirbestimmen.ch';
$mail->SMTPAuth = true;
$mail->Username = 'service@wirbestimmen.ch';
$mail->Password = 'FW%24VdqY1~l';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 465;
$mail->Timeout = 10; // Timeout for individual SMTP commands
$mail->SMTPOptions = [
'ssl' => [
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
]
]; // Bypass SSL verification (use cautiously, only for testing)
$mail->SMTPDebug = 4; // 4 = full debug output, including low-level connection details
$mail->Debugoutput = function($str, $level) use ($logFile) {
file_put_contents($logFile, date('Y-m-d H:i:s') . " - [PHPMailer Level $level] $str\n", FILE_APPEND);
};
*/
logMessage("SMTP settings configured");
// Recipients
$mail->setFrom($from, $fromName);
$mail->addAddress($to);
// Attachments
if (!empty($file) && is_file($file)) {
$mail->addAttachment($file);
logMessage("Attachment added: $file");
}
// Content
$mail->isHTML(true);
$mail->CharSet = 'UTF-8';
$mail->Subject = $subject;
$mail->Body = $htmlContent;
logMessage("Email content prepared");
// Send the email
$mail->send();
logMessage("Email sent successfully");
// Mark email as sent
$_SESSION['email_sent_de_' . $_GET['campaign'] . '_' . $_GET['email']] = true;
// Clean output buffer and redirect
ob_end_clean();
header('Location: https://wirbestimmen.ch/de/unterschriftsbogen-dl-de');
exit;
} catch (Exception $e) {
logMessage("Mailer Error: {$mail->ErrorInfo}");
ob_end_clean();
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
exit;
}
?>