Kontaktformular

Diskutiere Kontaktformular im CSS Forum im Bereich Programmierung; Servus zusammen :) Ich bin Anfänger und versuche mich gerade an meiner eigenen Website für unser Kleinunternehmen. Kürzlich hatte ich ein schönes...
  • Kontaktformular Beitrag #1
W
Wassernelone
Member
Beiträge
12
Punkte Reaktionen
0
Servus zusammen :)

Ich bin Anfänger und versuche mich gerade an meiner eigenen Website für unser Kleinunternehmen.
Kürzlich hatte ich ein schönes fertiges Design gefunden, welches perfekt zu uns passen würde, habs
auch schon fertig bearbeitet, allerdings zerbreche ich mir jetzt seit einer Woche den Kopf weil das eingebaute
Kontaktformular nicht funktioniert. Das Design ist ja vorgefertigt, allerdings wenn man auf senden klickt,
passiert nichts. Mit dem Upgrade auf PHP8 hat IONOS die PHP Mailfunktion abgeschaltet. Nun solle man
die SMTP Funktion nutzen, allerdings kenne ich mich damit echt nicht so gut aus.

Ich erhalte nun folgendes Problem:

The SMTP server requires a secure connection or the client was not authenticated. The server response was: Authentication required

Hier ein Auszug aus meiner kontakt.html

Code:
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Hallo</title>
    <link rel="stylesheet" href="style.css">
    </head>
    <body>
                <div class="container">
                <form onsubmit="sendEmail(); reset(); return false;">
                <h1>Hallo</h1>
                <input type="text" id="name" placeholder="Name" required>
                <input type="email" id="email" placeholder="Email" required>
                <input type="text" id="phone" placeholder="Phone" required>
                <textarea id="message" rows="4" placeholder="Wie können wir helfen?"></textarea>
                <button type="submit">Senden</button>
                </form>
                </div>
                <script src="https://smtpjs.com/v3/smtp.js"></script>
                <script>
                function sendEmail(){
                Email.send({
                                    Host : "smtp.elasticemail.com",
                                    Username : "[email protected]",
                                    Port : 587,
                                    Password : "XXXX",
                                    To : '[email protected]',
                                    From : document.getElementById("email").value,
                                    Subject : "This is the subject",
                                    Body : "And this is the body"
                                }).then(
                                message => alert(message)
                );
                }
                </script>
    </body>
    </html>
 
Zuletzt bearbeitet:
  • Kontaktformular Beitrag #2
S
scatello
Well-known member
Beiträge
528
Punkte Reaktionen
44
Die ???? müssen durch den Namen des Scripts ersetzt werden, in dem die Formulardaten verarbeitet werden sollen und die Mail gesendet wird.

Mails per SMTP versenden kann man relativ einfach mit der Mailer-Klasse phpMailer
 
  • Kontaktformular Beitrag #3
S
Sempervivum
Well-known member
Beiträge
760
Punkte Reaktionen
125
@Wassernelone Besser ein Posting nicht editieren, dadurch geht der Zusammenhang für die weiteren Postings verloren.

Die Methode über dieses Javascript kann man sicher zum Laufen bringen aber ich bezweifle, dass das zu empfehlen ist: Username und Password kann man zwar verbergen aber die Emails laufen über einen fremden Server wo Du nicht weißt, was damit passiert. Ob das deinen Kunden recht ist? Außerdem gerätst Du in rechtliche Schwierigkeiten.

PHPMailer findest Du auf Github:
https://github.com/PHPMailer/PHPMailer
Dort gibt es auch zwei Beispiele für ein Kontaktformular.
 
Zuletzt bearbeitet:
  • Kontaktformular Beitrag #4
L
Lupus
Member
Beiträge
24
Punkte Reaktionen
0
Und hier findest Du noch eine schöne Anleitung die funktioniert =>
 
  • Kontaktformular Beitrag #5
S
scatello
Well-known member
Beiträge
528
Punkte Reaktionen
44
Und hier findest Du noch eine schöne Anleitung die funktioniert
Tja, leider knapp daneben, die Mail-Funktion von PHP ist nur eine Krücke, die man eigentlich nicht benutzen sollte. Und dann kommt noch dazu, dass in diesem Fall Mails per SMTP gesendet werden sollen, da bist du mit der mail-Funktion schon aufgeschmissen.
 
  • Kontaktformular Beitrag #6
W
Wassernelone
Member
Beiträge
12
Punkte Reaktionen
0
Der Anbieter hat die PHP Funktion abgeschaltet
 
  • Kontaktformular Beitrag #8
W
Wassernelone
Member
Beiträge
12
Punkte Reaktionen
0
Sorry ich verstehs nicht.

Der eigentliche Code für das Formular sieht so aus

Code:
<div class="row">
                            <div class="col-md-5">
                                <form action="???" class="contact-form">
                                    <input type="text" id="name" placeholder="Name...">
                                    <input type="text" id="email" placeholder="Email...">
                                    <input type="text" id="website" placeholder="Website...">
                                    <textarea name="" id="message" placeholder="Message..."></textarea>
                                    <div class="text-right">
                                        <input type="submit" value="Send message">
                                    </div>
                                </form>
                            </div>

Allerdings weiß ich nicht, wie das sich realisieren lässt und welche Datei sich hinter den "???" verbirgt, bzw was da noch fehlt.
 
  • Kontaktformular Beitrag #9
S
Sempervivum
Well-known member
Beiträge
760
Punkte Reaktionen
125
Für das Senden einer Email brauchst du ein Skript, das auf dem Server läuft. Und eine Bibliothek, die dich dabei unterstützt: PHPMailer. Du findest diese auf Github:
https://github.com/PHPMailer/PHPMailer
wie früher schon erwähnt.
Du findest dort außerdem, wenn Du "examples" öffnest, ein "contactform.phps", in dem Du ablesen kannst, wie Du die Werte aus dem Kontaktformular auswertest und als Email verschickst.
D. h. wenn Du den Namen contactform.php für dein Skript wählst, musst Du diesen im form-Tag als action angeben:
PHP:
<form action="contactform.php" class="contact-form" method="post">
Außerdem als method "post" angeben weil das Beispiel POST-Parameter erwartet.

Edit: Wahrscheinlich kann es nicht schaden, wenn Du dich am Anfang hier:
https://wiki.selfhtml.org/wiki/HTML/Tutorials/Formulare/Was_ist_ein_Webformular?
über die Grundlagen von Formularen informierst.
 
Zuletzt bearbeitet:
  • Kontaktformular Beitrag #10
W
Wassernelone
Member
Beiträge
12
Punkte Reaktionen
0
Soweit bin ich nun

Ich habe eine formular.php angelegt, mit diesem Code hinterlegt

Code:
<?php

//Import PHPMailer class into the global namespace
use PHPMailer\PHPMailer\PHPMailer;

$msg = '';
//Don't run this unless we're handling a form submission
if (array_key_exists('email', $_POST)) {
    date_default_timezone_set('Etc/UTC');

    require '../vendor/autoload.php';

    //Create a new PHPMailer instance
    $mail = new PHPMailer();
    //Send using SMTP to localhost (faster and safer than using mail()) – requires a local mail server
    //See other examples for how to use a remote server such as gmail
    $mail->isSMTP();
    $mail->Host = 'localhost';
    $mail->Port = 25;

    //Use a fixed address in your own domain as the from address
    //**DO NOT** use the submitter's address here as it will be forgery
    //and will cause your messages to fail SPF checks
    $mail->setFrom('[email protected]', 'First Last');
    //Choose who the message should be sent to
    //You don't have to use a <select> like in this example, you can simply use a fixed address
    //the important thing is *not* to trust an email address submitted from the form directly,
    //as an attacker can substitute their own and try to use your form to send spam
    $addresses = [
        'sales' => '[email protected]',
        'support' => '[email protected]',
        'accounts' => '[email protected]',
    ];
    //Validate address selection before trying to use it
    if (array_key_exists('dept', $_POST) && array_key_exists($_POST['dept'], $addresses)) {
        $mail->addAddress($addresses[$_POST['dept']]);
    } else {
        //Fall back to a fixed address if dept selection is invalid or missing
        $mail->addAddress('[email protected]');
    }
    //Put the submitter's address in a reply-to header
    //This will fail if the address provided is invalid,
    //in which case we should ignore the whole request
    if ($mail->addReplyTo($_POST['email'], $_POST['name'])) {
        $mail->Subject = 'PHPMailer contact form';
        //Keep it simple - don't use HTML
        $mail->isHTML(false);
        //Build a simple message body
        $mail->Body = <<<EOT
Email: {$_POST['email']}
Name: {$_POST['name']}
Message: {$_POST['message']}
EOT;
        //Send the message, check for errors
        if (!$mail->send()) {
            //The reason for failing to send will be in $mail->ErrorInfo
            //but it's unsafe to display errors directly to users - process the error, log it on your server.
            $msg = 'Sorry, something went wrong. Please try again later.';
        } else {
            $msg = 'Email versendet.';
        }
    } else {
        $msg = 'Invalid email address, message ignored.';
    }
}
?>

Zusätzlich noch hier verlinkt
<form action="formular.php" class="contact-form" method="post">

Allerdings weiß ich nicht ganz genau wie ich die PHPMailer Funktion installieren kann

Ich hatte jetzt auch Kontakt mit IONOS, ein Formular mit PHP8 ist weiterhin möglich
 
Zuletzt bearbeitet:
  • Kontaktformular Beitrag #11
S
Sempervivum
Well-known member
Beiträge
760
Punkte Reaktionen
125
Allerdings weiß ich nicht ganz genau wie ich die PHPMailer Funktion installieren kann
Das ist leider beim PHP-Mailer und vielen anderen Skripts nicht besonders einsteigerfreundlich weil sie das Installieren mit Composer empfehlen.
Versuche, statt dessen den zweiten Weg, den sie bei Github angeben:

Alternatively, if you're not using Composer, you can download PHPMailer as a zip file, (note that docs and examples are not included in the zip file), then copy the contents of the PHPMailer folder into one of the include_path directories specified in your PHP configuration and load each class file manually:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'path/to/PHPMailer/src/Exception.php';
require 'path/to/PHPMailer/src/PHPMailer.php';
require 'path/to/PHPMailer/src/SMTP.php';
 
  • Kontaktformular Beitrag #12
W
Wassernelone
Member
Beiträge
12
Punkte Reaktionen
0
Danke

wie verlinke ich das richtig?
require 'path/to/PHPMailer/src/SMTP.php';
 
Thema:

Kontaktformular

Oben Unten