1
Hallo zusammen,
ich würde gerne SMTP Versand bei meinem Formular nutzen.
Ich habe mir mal das Beispiel angeschaut
und versucht zu testen. Klappt.
Nun zu meinem:
Ich habe in Zeile 14 bis 36 Zugangsdaten usw. eingebunden.
In Zeile 191 und 265 hab ich
Ich sehe im Beispiel noch
wo muß ich dies bei mir einbauen?
Über Denkanstöße oder Lösungen würde ich mich sehr freuen.
Gruß
ich würde gerne SMTP Versand bei meinem Formular nutzen.
Ich habe mir mal das Beispiel angeschaut
<?php
// Import PHPMailer classes into the global namespace
// These must be at the top of your script, not inside a function
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
// Load Composer's autoloader
//require 'vendor/autoload.php';
require 'PHPMailer/src/PHPMailer.php';
require 'PHPMailer/src/Exception.php';
require 'PHPMailer/src/SMTP.php';
// Instantiation and passing `true` enables exceptions
$mail = new PHPMailer(true);
try {
//Server settings
// 0 = off (for production use)
// 1 = client messages
// 2 = client and server messages
$mail->SMTPDebug = 2; // Enable verbose debug output
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = ''; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = ''; // SMTP username
$mail->Password = 'test'; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587; // TCP port to connect to
//Recipients
$mail->setFrom('', '');
$mail->addAddress('', ''); // Add a recipient
// $mail->addAddress('ellen@example.com'); // Name is optional
$mail->addReplyTo('@', '');
// $mail->addCC('cc@example.com');
// $mail->addBCC('bcc@example.com');
// Attachments
// $mail->addAttachment('/var/tmp/file.tar.gz'); // Add attachments
// $mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name
// Content
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'Here is the subject';
$mail->Body = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
$mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
?>
und versucht zu testen. Klappt.
Nun zu meinem:
Ich habe in Zeile 14 bis 36 Zugangsdaten usw. eingebunden.
In Zeile 191 und 265 hab ich
$mail = new PHPMailer(true);
eingebaut und <?php
//Fehlermeldungen ausgeben falls vorhanden
ini_set('display_errors', 1);
error_reporting(E_ALL);
//include des Kopfbereiches
include("include/kopf.php");
//include der Navigation
include("include/navigation.php");
//include Anfang des ganzen Inhaltes
include("include/anfang-ganzer-inhalt.php");
?>
<?php
// Import PHPMailer classes into the global namespace
// These must be at the top of your script, not inside a function
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'PHPMailer/src/PHPMailer.php';
require 'PHPMailer/src/Exception.php';
require 'PHPMailer/src/SMTP.php';
// Instantiation and passing `true` enables exceptions
$mail = new PHPMailer(true);
try {
//Server settings
// 0 = off (for production use)
// 1 = client messages
// 2 = client and server messages
$mail->SMTPDebug = 2; // Enable verbose debug output
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = ''; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = ''; // SMTP username
$mail->Password = 'test'; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587; // TCP port to connect to
?>
<!-- Anfang Linker Inhalt -->
<div id="linkerinhalt">
<title>Anmeldung</title>
<?php
include_once('zugang_ppc.php.inc');
$max_jugenda = 40;
$max_jugendb = 40;
$max_dklasse = 64;
// sql-Abfrage 1 - Ermitteln Anzahl Jugend B (Turnierklasse = 1)
$query = mysqli_query($mysqli, 'SELECT Count(*) FROM anmeldungen_2019_samstag WHERE gemeldeteKlasse = \'1\'');
list($num_jugendb) = mysqli_fetch_row($query);
// sql-Abfrage 2 - Ermitteln Anzahl Jugend A (Turnierklasse = 2)
$query = mysqli_query($mysqli, 'SELECT Count(*) FROM anmeldungen_2019_samstag WHERE gemeldeteKlasse = \'2\'');
list($num_jugenda) = mysqli_fetch_row($query);
// sql-Abfrage 3 - Ermitteln Anzahl D-Klasse + Teilweise Damen B (Turnierklasse = 3)
$query = mysqli_query($mysqli, 'SELECT Count(*) FROM anmeldungen_2019_samstag WHERE gemeldeteKlasse = \'3\'');
list($num_dklasse) = mysqli_fetch_row($query);
unset($query);
?>
<?php
//begin POST form check
$show_form = false;
//entweder einfacher Check (nur namen angeben), oder erweiterter via Regularexpression ([name,regex,errormsg])
$frm_field = array(
array(
'email',
'/^[\w\-\.\+]+@([\w\-]+\.?)+$/',
'Bitte gültige E-Mail eintragen!'
),
'vorname',
'nachname',
array(
'geschlecht',
'/^(M|W)$/',
'Bitte Geschlecht auswählen!'
),
array(
'geburtsjahr',
'/^(19|20)\d\d$/',
'Bitte gültiges Geburtsjahr eintragen (z.B. 1967)!'
),
'ttr',
'verein',
array(
'turnierklasse',
'/^[1-5]$/',
'Bitte gültige Turnierklasse auswählen!'
),
array(
'email_alt',
'/(^[\w\-\.\+]+@([\w\-]+\.?)+$|^$)/',
'Optionales Feld, darf leer gelassen werden oder weitere gültige E-Mail eintragen!'
)
);
$frm_error = array();
if (isset($_POST['email'])) {
foreach ($frm_field as $val) {
if (!is_array($val)) {
if (empty($_POST[$val])) {
$_POST[$val] = '';
$frm_error[$val] = ' <span class="rot">Bitte ausfüllen!</span>';
$show_form = true;
} else
$frm_error[$val] = '';
} else {
if (!isset($_POST[$val[0]])) {
$_POST[$val[0]] = '';
$frm_error[$val[0]] = ' <span class="rot">Bitte ausfüllen!</span>';
$show_form = true;
} elseif (!preg_match($val[1], $_POST[$val[0]])) {
$frm_error[$val[0]] = ' <span class="rot">' . $val[2] . '</span>';
$show_form = true;
} else
$frm_error[$val[0]] = '';
}
}
} else {
foreach ($frm_field as $val) {
if (is_array($val)) {
if (!isset($_POST[$val[0]]))
$_POST[$val[0]] = '';
$frm_error[$val[0]] = '';
} elseif (!isset($_POST[$val])) {
$_POST[$val] = '';
$frm_error[$val] = '';
}
}
$show_form = true;
}
unset($frm_field);
//vom check oben nicht betroffen (da optional)
if (!isset($_POST['eintrag']))
$_POST['eintrag'] = '';
if (!isset($_POST['turnierklasse_ex']))
$_POST['turnierklasse_ex'] = '';
//end POST form check
if (!$show_form) { //sende anfrage / eintragen
$_POST['turnierklasse'] = intval($_POST['turnierklasse']);
$turnierklassestr = '';
// $altSignUp = ($num_sonntag >= $max_sonntag); //case 1&2 change it again
$altSignUp = ($num_jugendb >= $max_jugendb || $num_jugenda >= $max_jugenda || $num_dklasse >= $max_dklasse);
switch ($_POST['turnierklasse']) {
case 1:
$turnierklasse = 'Jugend U18 B';
$turnierklassestr = 'Jugend U18 B mit QTTR von 0 bis 1150 - Turniertag 1 - Samstag 12. September 2020';
$startgeld = '10€';
$vorkasse = '9€';
$altSignUp = ($num_jugendb >= $max_jugendb);
break;
case 2:
$turnierklasse = 'Jugend U18 A';
$turnierklassestr = 'Jugend U18 A mit QTTR von 1050 bis 3000 - Turniertag 1 - Samstag 12. September 2020';
$startgeld = '10€';
$vorkasse = '9€';
$altSignUp = ($num_jugenda >= $max_jugenda);
break;
case 3:
$turnierklasse = 'Aktive D';
$turnierklassestr = 'Aktive D mit QTTR von 0 bis 1350 - Turniertag 1 - Samstag 12. September 2020';
$startgeld = '12€';
$vorkasse = '11€';
$altSignUp = ($num_dklasse >= $max_dklasse);
break;
}
if (mysqli_fetch_object(mysqli_query($mysqli, 'SELECT * FROM `anmeldungen_2019_samstag` WHERE `vorname` = \'' . mysqli_real_escape_string($mysqli, $_POST['vorname']) . '\' AND `nachname` = \'' . mysqli_real_escape_string($mysqli, $_POST['nachname']) . '\' LIMIT 1'))) {
?><p><span class="rot"><b>Die Anmeldung ist Fehlgeschlagen!<br/>Die von dir angegebene Person <?php
echo $_POST['vorname'] . ' ' . $_POST['nachname'];
?> ist bereits angemeldet.</b></span></p>
<p>Falls dem nicht so seien sollte, kontaktiere uns bitte via E-Mail!</p>
</p><?php
$show_form = false;
} else { //eintragen
$mysqli_query = '
INSERT INTO `anmeldungen_2019_samstag`
(`vorname`, `nachname`, `geschlecht`, `geburtsjahr`, `ttr`, `email`, `verein`, `gemeldeteKlasse`, `anmerkung`, `timestamp`)
VALUES
(\'' . mysqli_real_escape_string($mysqli, $_POST['vorname']) . '\', \'' . mysqli_real_escape_string($mysqli, $_POST['nachname']) . '\', \'' . mysqli_real_escape_string($mysqli, $_POST['geschlecht']) . '\', \'' . mysqli_real_escape_string($mysqli, $_POST['geburtsjahr']) . '\', \'' . mysqli_real_escape_string($mysqli, $_POST['ttr']) . '\', \'' . mysqli_real_escape_string($mysqli, $_POST['email']) . '\', \'' . mysqli_real_escape_string($mysqli, $_POST['verein']) . '\', \'' . $_POST['turnierklasse'] . '\', \'' . mysqli_real_escape_string($mysqli, $_POST['eintrag']) . '\', NOW())';
if (mysqli_query($mysqli, $mysqli_query)) { //Bestätigungsemail an den Anmeldenden
$mail = new PHPMailer(true);
//Betreff in der E-Mail ermitteln, je nach Teilnehmeranzahl
$subject = 'Bestätigung der Anmeldung zum PPC 23';
if ($altSignUp)
$subject = 'Warteliste - PPC 23';
//Zeit ermittelt an dem das Formular ausgefüllt wurde
$today_Wochentag = date('l');
$today_Datum = date('d.m.Y');
$today_Uhrzeit = date('H:i');
$t = date('w');
$wochentage = array(
'Sonntag',
'Montag',
'Dienstag',
'Mittwoch',
'Donnerstag',
'Freitag',
'Samstag'
);
$wochentag = $wochentage[$t];
//Anmeldung oder Anfrage ausgegeben, je nach Teilnehmeranzahl
$anmeldung_oder_warteliste = 'Anmeldung';
if ($altSignUp)
$anmeldung_oder_warteliste = 'Anfrage';
$text = "
Hallo {$_POST['vorname']} {$_POST['nachname']},<br />
Text .....
Vielen Dank!<br />
";
if ($altSignUp)
$text = "
Hallo {$_POST['vorname']} {$_POST['nachname']},<br />
Text....";
//UTF-8 Kodierung festlegen
$mail->CharSet = "utf-8";
//Absenderadresse der Email setzen
$mail->setFrom("zensiert");
$mail->addReplyTo("zensiert");
//Name des Abenders setzen
$mail->FromName = ("Zensiert");
//Empfängeradresse setzen
$mail->AddAddress($_POST['email']);
//möglicher Empfänger einer Kopie setzen
$mail->AddCC($_POST['email_alt']);
// html
$mail->isHTML(true);
//Betreff der Email setzen
$mail->Subject = $subject;
//Text der EMail setzen
$mail->Body = $text;
//EMail senden und überprüfen ob sie versandt wurde
if (!$mail->Send()) {
//$mail->Send() liefert FALSE zurück: Es ist ein Fehler aufgetreten
echo "Es gab bei der übermittelung der Daten ein kleines Problem. Bitte wiederhole den Vorgang oder kontaktiere uns bitte via E-Mail";
echo "Fehler: " . $mail->ErrorInfo;
} else {
//$mail->Send() liefert TRUE zurück: Die Email ist unterwegs
echo "<br />Eine Bestätigung deiner Anmeldung/Anfrage ist soeben an dich gesendet worden.";
} { //Mail an die Turnierleitung
$mail = new PHPMailer(true);
//Betreff in der E-Mail ermitteln, je nach Teilnehmeranzahl
$subject = 'Neue Anmeldung zum PPC 23';
if ($altSignUp)
$subject = 'Warteliste - Neue Anfrage';
//Zeit ermittelt an dem das Formular ausgefüllt wurde
$today_Wochentag = date('l');
$today_Datum = date('d.m.Y');
$today_Uhrzeit = date('H:i');
$t = date('w');
$wochentage = array(
'Sonntag',
'Montag',
'Dienstag',
'Mittwoch',
'Donnerstag',
'Freitag',
'Samstag'
);
$wochentag = $wochentage[$t];
//Anmeldung oder Anfrage ausgegeben, je nach Teilnehmeranzahl
$anmeldung_oder_warteliste = 'Anmeldung';
if ($altSignUp)
$anmeldung_oder_warteliste = 'Anfrage';
$text = " ANMELDUNG!!!<br />
<br />
Hallo Turnierleitung,<br />
Text...
Mit sportlichen Grüßen<br />
{$_POST['vorname']} {$_POST['nachname']}
";
if ($altSignUp)
$text = " WARTELISTE!!!<br />
<br />
Hallo Turnierleitung,<br />
Text ...
Mit sportlichen Grüßen<br />
{$_POST['vorname']} {$_POST['nachname']}
";
//UTF-8 Kodierung festlegen
$mail->CharSet = "utf-8";
//Absenderadresse der Email setzen
$mail->setFrom("zenisert");
$mail->addReplyTo($_POST['email']);
//Name des Abenders setzen
$mail->FromName = ($_POST['vorname'] . ' ' . $_POST['nachname']);
// $mail->FromName = ("Turnierportal");
//Empfängeradresse setzen
$mail->AddAddress("zensiert");
// html
$mail->isHTML(true);
//Betreff der Email setzen
$mail->Subject = $subject;
//Text der EMail setzen
$mail->Body = $text;
//EMail senden und überprüfen ob sie versandt wurde
if (!$mail->Send()) {
//$mail->Send() liefert FALSE zurück: Es ist ein Fehler aufgetreten
echo "Es gab bei der übermittelung der Daten ein kleines Problem. Bitte wiederhole den Vorgang oder kontaktiere uns bitte via E-Mail";
echo "Fehler: " . $mail->ErrorInfo;
} else {
//$mail->Send() liefert TRUE zurück: Die Email ist unterwegs
echo "<br />Die Anmeldung/Anfrage ist an die Turnierleitung übermittelt worden.";
}
// $show_form=true;
}
} else {
die('<b>MySQL Error:</b><div class="rot">' . mysqli_error($mysqli) . '</div><br/>');
$show_form = true;
}
}
}
if ($show_form) //zeige Formular
{ //führt das aus, wenn die mail adresse noch ned angegeben wurde oder sonst wie das Formular nicht stimmt.
//ausgabe bzw. setzen von "turnierklasse" vereinfachen
//Formular für Zusatzangaben wie E-Mail-Adresse, Mitteilung, etc.
?>
<h1>Anmeldung: Turniertag 1, Samstag 12.09.2020</h1>
<p>Bitte alle mit einem * versehenen Felder ausfüllen.<br />
Die Teilnahme ist grundsätzlich nur in einem Wettbewerb möglich und auch nur in dem Wettbewerb, in welchem der Q-TTR passt.<br />
Die Angabe der E-Mail-Adresse ist von Nöten, da wir an diese Adresse die Bestätigungsemail verschicken.</p>
<form name="blub" method="post" action="anmeldung-samstag.php">
<p><label for="vorname">Vorname*:</label><br />
<input name="vorname" type="text" id="vorname" size="70" maxlength="50" class="eingabe" value="<?php
echo ($_POST['vorname'] . '"/>' . $frm_error['vorname']);
?></p>
<p><label for="nachname">Nachname*:</label><br />
<input name="nachname" type="text" id="nachanme" size="70" maxlength="50" class="eingabe" value="<?php
echo ($_POST['nachname'] . '"/>' . $frm_error['nachname']);
?></p>
<p>Geschlecht*:<br />
<select name="geschlecht"><option value="1">Bitte auswählen</option><option value="M"<?php
echo (($_POST['geschlecht'] == 'M' ? ' selected="selected"' : ''));
?>>männlich</option><option value="W"<?php
echo (($_POST['geschlecht'] == 'W' ? ' selected="selected"' : ''));
?>>weiblich</option></select><?php
echo $frm_error['geschlecht'];
?> </p>
<p><label for="ttr">(Q-)TTR (11.08.2020)*:</label><br />
<input name="ttr" type="text" id="ttr" size="70" maxlength="50" class="eingabe" value="<?php
echo ($_POST['ttr'] . '"/>' . $frm_error['ttr']);
?><p/>
<p>Turnierklasse*:<br />
<select name="turnierklasse">
<option>Bitte auswählen</option>
<?php
/*Samstag*/
$sunfull_jugendb = ($num_jugendb >= $max_jugendb ? 'full' : 'gruen');
$sunfull_jugenda = ($num_jugenda >= $max_jugenda ? 'full' : 'gruen');
$sunfull_dklasse = ($num_dklasse >= $max_dklasse ? 'full' : 'gruen');
?>
<option value="1" class="<?php
echo $sunfull_jugendb;
?>"
<?php
echo ($_POST['turnierklasse'] == 1 ? ' selected="selected"' : '');
?>
>Jugend U18 B mit QTTR von 0 bis 1150 - Turniertag 1 - Samstag 12. September 2020</option>
<option value="2" class="<?php
echo $sunfull_jugenda;
?>"
<?php
echo ($_POST['turnierklasse'] == 2 ? ' selected="selected"' : '');
?>
>Jugend U18 A mit QTTR von 1050 bis 3000 - Turniertag 1 - Samstag 12. September 2020</option>
<option value="3" class="<?php
echo $sunfull_dklasse;
?>"
<?php
echo ($_POST['turnierklasse'] == 3 ? ' selected="selected"' : '');
?>
>Aktive D mit QTTR von 0 bis 1350 - Turniertag 1 - Samstag 12. September 2020</option>
</select><?php
echo $frm_error['turnierklasse'];
?>
<br />
<?php
if (in_array('full', array(
$sunfull_jugendb,
$sunfull_jugenda,
$sunfull_dklasse
))) {
?><colspan="2" class="rot" style="text-align:center;font-size:80%;">Hinweis:<br />eine oder mehrere Turnierklassen sind derzeit belegt.<br />Eine Anfrage für die gewünschte Turnierklasse ist dennoch möglich!<?php
}
?> <p/>
<p><label for="email">E-Mail*:</label><br />
<input name="email" type="text" id="email" size="70" maxlength="50" class="eingabe" value="<?php
echo ($_POST['email'] . '"/>' . $frm_error['email']);
?></p>
<p><label for="geburtsjahr">Geburtsjahr*:</label><br />
<input name="geburtsjahr" type="text" id="geburtsjahr" size="70" maxlength="50" class="eingabe" value="<?php
echo ($_POST['geburtsjahr'] . '"/>' . $frm_error['geburtsjahr']);
?></p>
<p><label for="verein">Verein:*</label><br />
<input name="verein" type="text" id="verein" size="70" maxlength="50" class="eingabe" value="<?php
echo ($_POST['verein'] . '"/>' . $frm_error['verein']);
?></p>
<p><label for="email">Anmerkung:</label><br />
<textarea name="eintrag" cols="65" rows="7" id="eintrag" class="eingabe"><?php
echo ($_POST['eintrag']);
?></textarea><p/>
<p>Falls gewünscht, kann hier eine weitere E-Mail-Adresse angegeben werden, welche dann ebenfalls eine Kopie der Anmeldung/Anfrage erhält.<br />
<label for="email_alt">E-Mail 2 (optional):</label><br />
<input name="email_alt" type="text" id="email_alt" size="70" maxlength="50" class="eingabe" value="<?php
echo ($_POST['email_alt'] . '"/>' . $frm_error['email_alt']);
?></p>
<p><input type="checkbox" name="Verarbeitung_Bestaetigung" value="Ja">Mit der Nutzung dieses Formulars erklärst du dich mit der Speicherung und Verarbeitung deiner Daten durch diese Website einverstanden</p>
<p><input type="checkbox" name="Turnierinfos_Bestaetigung" value="Ja">Ebenso die Erlaubnis, dir Informationen rund um das Turnier via E-Mail zukommen zu lassen.</p>
<p><input type="checkbox" name="Datenschutz_Bestaetigung" value="Ja"><a href="datenschutz.php" target="_blank">Datenschutz</a> gelesen und akzeptieren</p>
<p><input type="submit" value="Anmeldung abschließen"/></form></p><?php
}
?>
<div class="clear"></div>
</div>
<!-- Ende Linker Inhalt -->
<?php
//include des rechten Bereiches
include("include/rechter-inhalt.php");
//include Ende des ganzen Inhaltes
include("include/ende-ganzer-inhalt.php");
//include Fuss
include("include/fuss.php");
//include Ende
include("include/ende.php");
?>
Ich sehe im Beispiel noch
$mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
wo muß ich dies bei mir einbauen?
Über Denkanstöße oder Lösungen würde ich mich sehr freuen.
Gruß