Antworten auf deine Fragen:
Neues Thema erstellen

PHP Mailer funktioniert zwar, aber Bestätigungsseite wird nicht augerufen...

Andimau

Nicht mehr ganz neu hier

Hallo

verwende den PHP Mailer, der auch soweit funktioniert. Aber was nicht funktioniert ist, das keine Bestätigungsseite aufgerufen wird, obwohl ich diese im Quelltext angegeben habe.

Formular kommt per Email an, aber wie gesagt beim Anklicken des Absende-Button bleibt die Seite..Es kommt gar nix.
----
<?php

// $email and $message are the data that is being
// posted to this page from our html contact form

$email = $_POST['email'] ;
$name = $_POST['name'] ;
$subject = $_POST['subject'] ;
$message = $_POST['message'] ;



// When we unzipped PHPMailer, it unzipped to
// public_html/PHPMailer_5.2.0
require("phpmailer/PHPMailerAutoload.php");


$mail = new PHPMailer();

$mail->CharSet = 'utf-8';

$mail->SetLanguage ("de");

// set mailer to use SMTP
$mail->IsSMTP();

// As this email.php script lives on the same server as our email server
// we are setting the HOST to localhost
$mail->Host = "localhost"; // specify main and backup server

$mail->SMTPAuth = true; // turn on SMTP authentication


$mail->Username = "xx@gmail.com"; // SMTP username
$mail->Password = "xx"; // SMTP password
$mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for GMail
$mail->Host = 'smtp.gmail.com';
$mail->Port = 465;


//Absenderadresse der Email setzen
$mail->From = "xxx@gmail.com";
//Name des Abenders setzen
$mail->FromName = "xx";
//Betreff der Email setzen
$mail->Subject = "Ihre Konfiguration bei xxx";

//Text der EMail setzen
$mail->Body = "<img src=\"http://xxx\"><br><br>Vielen Dank. Sie haben folgende Konfiguration f&uuml;r ihr neues System getroffen:<br><br>
\t<strong>Name:</strong>&nbsp; $name<br>
\t<strong>subject:</strong>&nbsp; $subject<br>
\t<strong>Anzahl der benötigten Systeme:</strong>&nbsp; $anzahl<br>
\t<strong>Testausdruck:</strong>&nbsp; $testausdruck<br>
\t<strong>Funktionen:</strong>&nbsp; $funktionen<br>
\t<strong>Druckvolumen:</strong>&nbsp; $druckvolumen<br>
\t<strong>Seitenformat:</strong>&nbsp; $seitenformat<br>
\t<strong>Farbe:</strong>&nbsp; $farbe<br>
\t<strong>Endverarbeitung:</strong>&nbsp; $Endverarbeitung<br>
\t<strong>Service:</strong>&nbsp; $service<br>
\t<strong>Gutschein:</strong>&nbsp; $gutschein<br>
\t<strong>Name:</strong>&nbsp; $name<br>
\t<strong>Ansprechpartner:</strong>&nbsp; $ansprechpartner<br>
\t<strong>Toner,Technikerflatrate:</strong>&nbsp; $flatrate<br>
\t<strong>Email:</strong>&nbsp; $email</br></br>
\t<strong>Nachricht:</strong>&nbsp; $nachricht<br><br><br>";


// below we want to set the email address we will be sending our email to.
$mail->AddAddress("xx@xxx", "xxx ");
$mail->AddAddress("$email");

// set word wrap to 50 characters
$mail->WordWrap = 50;
// set email format to HTML
$mail->IsHTML(true);

if(!$mail->Send())
{
$strReturnhtml = '



exit;
}

echo "Message has been sent";
print_r( $_POST );



?>
 

MyBad

localhorst

Wo soll denn auch in deinem Code die Bestätgungsseite aufgerufen werden? In deinem jetzigen Code gibt es lediglich ein echo und das POST-Array aus.

Deine aufzurufende Seiten-URL schreibst du in eine Variable, die du in deinem geposteten Code nicht weiter verarbeitest.

Edit: Und du füllst die Variable auch nur, wenn die Mail NICHT gesendet wurde. Ist das korrekt?
 
Zuletzt bearbeitet:

Curanai

Aktives Mitglied

Nabend,

meine zwei kurzen Fragen:

a) Verschickst Du Deine E-Mail asynchron?
b) Wer verarbeitet "$strReturnhtml"?

zu A: Solltest Du auf Deiner Seite eine asynchrone E-Mail-Versendung verwenden, empfehle ich Dir den reinen Umgang mit Statusflags - statt Strings. Verschickt: Gib 1 zurück ... nicht verschickt, gib 0 zurück! JavaScript wird dann von Dir befähigt werden müssen, die 0 und 1 zu erkennen als ResponseCode und entsprechend zu reagieren (1 = "Mail wurde verschickt" zeigen; 0 = window.location.href)

zu B: Du füllst zwar eine Variable, aber wer verarbeitet die noch?! Im Moment habe ich den Eindruck, dass Du nicht asynchron arbeitest und die Seite an sich selbst quasi schickst (via Angabe in "action" des Formulars bspw.). Wenn Du eine Umleitung aber machen willst, fehlt mir "header("Location: ZIEL-URL"); exit;" ...

Kleines Schmankerl noch für Dich: if(!$mail->Send()) ... wenn der fehlschlägt, solltest Du eine "alternative E-Mail" schicken - nämlich an Dich bzw. den Admin, dass das nicht funktionierte. Hier lässt sich natürlich auch eine alternative E-Mail-Zustellung für den Absender selbst einrichten. Der gute alte Befehl "mail()" als "plain text" ist da perfekt ...

Angenehmen Abend.
 

Andimau

Nicht mehr ganz neu hier

Hallo,

vielen Dank für Eure Antworten. Ich verwende ja den PHPmailer. Nun habe ich weiter unten per "header" die Weiterleitung eingebaut. Allerdings funktioniert es auch nicht.

Hat jemand noch einen Tip ?



// set word wrap to 50 characters
$mail->WordWrap = 50;
// set email format to HTML
$mail->IsHTML(true);



// $message is the user's message they typed in
// on our contact us page. We set this variable at
// the top of this page with:
// $message = $_REQUEST['message'] ;


if(!$mail->Send())
{
header("Location: ");
}


?>
 

Curanai

Aktives Mitglied

Grüße Dich,

was hast Du da denn getan? Da steht "wenn der Mailversand nicht funktioniert hat, leite weiter". Der biegt da also nur rein, wenn der phpMailer die E-Mail nicht verschicken konnte. Wie hast Du diese Weiterleitung getestet?

Tipp 1: Da ich nicht weiß, ob noch Quälcode unterhalb Deiner Bedingung kommt, setze bitte hinter header() ein exit(). Das verhindert, dass u. U. noch Funktionen etc. ausgeführt werden, die ich jetzt nicht sehen kann.

Tipp 2: Je nach htaccess-Steuerung kann es Sinn machen, die angegebene URL eindeutig zu setzen. Du ersparst dem Server damit u. U. eine Weiterleitung auf "index.php". :)

Tipp 3: Eine Normseite besteht aus 60 Zeichen á 30 Zeilen. Deinen WordWrap würde ich von 50 auf 60 erhöhen ... so wegen der Standards. :)

Viel Erfolg.
 

Andimau

Nicht mehr ganz neu hier

Hy

ein weiterer Code folgt nicht mehr.. In PHP bin ich nicht so bewandert.

Habe es abgeändert.

if(!$mail->Send())

{
echo "Message could not be sent. <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
}

header("Location: ");
exit;
?>

Leider tut sich noch nichts. Ich vermute mal, dass die Prozedur nicht weiß ob die Email jetzt gesendet wurde oder nicht..

(Die Email kommt im Postfach übrigens an)
Nur die Weiterleitung funktioniert nicht)
 

Curanai

Aktives Mitglied

Tag erneut,

scroll mal bitte ein Stück nach oben und beantworte mir, ob Du A oder B verwendest - aktuell gehe ich von A aus, wodurch die Weiterleitung auch gar nicht funktionieren kann, da Du an der falschen Stelle ansetzt.

Das Problem bei Deinem jetzigen Konstrukt: Die Weiterleitung wird immer ausgeführt. exit() ist unnötig, sofern wirklich nichts mehr nachkommt (auch nicht via Include o. ä.).

Dass die E-Mail ankommt, liegt am Umstand von phpMailer - Deine Abfrage heißt ja auch "wenn nicht verschickt". Aber ich sag's nochmal: Ich gehe von AJAX gerade aus ... lässt sich die Seite von außen irgendwo beschauen, die Dir Kopfweh macht? Das ist schnell geklärt ...

Grüße
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben