PHP/HTML-Formular Daten zu versenden wie eine E-Mail von meinem GMAIL-Konto
Ich bin versucht, senden Sie eine E-Mail an mich, wenn jemand füllt das Formular auf meiner web-Seite. Meine form sieht wie folgt aus:
<form id="contactForm" action="#" method="post">
<fieldset>
<p>
<label for="name" >Name</label>
<input name="name" id="name" type="text" class="form-poshytip" title="Enter your full name" />
</p>
<p>
<label for="email" >Email</label>
<input name="email" id="email" type="text" class="form-poshytip" title="Enter your email address" />
</p>
<p>
<label for="web">Website</label>
<input name="web" id="web" type="text" class="form-poshytip" title="Enter your website" />
</p>
<p>
<label for="comments">Message</label>
<textarea name="comments" id="comments" rows="5" cols="20" class="form-poshytip" title="Enter your comments"></textarea>
</p>
<!-- send mail configuration -->
<input type="hidden" value=EMAIL" name="to" id="to" />
<input type="hidden" value="Email received from Website" name="subject" id="subject" />
<input type="hidden" value="send-mail.php" name="sendMailUrl" id="sendMailUrl" />
<!-- ENDS send mail configuration -->
<p><input type="button" value="Send" name="submit" id="submit" /> <span id="error" class="warning">Message</span></p>
</fieldset>
</form>
PHP ich habe sieht wie folgt aus:
<?php
//vars
$subject = $_POST['subject'];
$to = explode(',', $_POST['to'] );
$from = $_POST['email'];
//data
$msg = "NAME: " .$_POST['name'] ."<br>\n";
$msg .= "EMAIL: " .$_POST['email'] ."<br>\n";
$msg .= "WEBSITE: " .$_POST['web'] ."<br>\n";
$msg .= "COMMENTS: " .$_POST['comments'] ."<br>\n";
//Headers
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=UTF-8\r\n";
$headers .= "From: <".$from. ">" ;
$smtp = Mail::factory('smtp', array(
'host' => 'ssl://smtp.gmail.com',
'port' => '465',
'auth' => true,
'username' => 'EMAIL',
'password' => 'PASSWORD'
));
$mail = $smtp->send($to, $headers, $msg);
?>
Wo E-MAIL und PASSWORT werden dann ersetzt mit den Werten....
Kann jemand beraten, was zu tun ist?
- was ist hier das problem ?
- die E-Mail kommt nie durch
- versuchen
if($mail) echo "mail sent"; else echo "mail not sent";
dieses sagen obsend()
Probleme hat - Ich denke, dass der port für Gmail ist 587. Auch, warum nicht die SMTP-details sind in der php.ini in der E-mail Funktion, sendmail und dann @mail($to, $subject, $msg, $headers)
- Ich habe keine Erfahrung in PHP leider! gerade versucht, dies herauszufinden, ohne Freude!
- Ich dachte jemand mit mehr wissen würde in der Lage sein zu geben, eine Lösung einfach als wäre es eine häufige Anforderung
- Sie müssen ändern
action="#"
zuaction=""
und dann<input type="button" value="Send" name="submit" id="submit" />
zu<input type="submit" value="Send" name="submit" id="submit" />
@MarkMcK - Jedoch, wenn Sie zwei separate Dateien, dann benötigen Sie so etwas wieaction="sendmail.php"
zusammen mit meinem anderen Vorschlag über Ihre senden-Schaltfläche. - Und du bist auch fehlt ein Angebot für
value=EMAIL"
und warum machst du$to = explode(',', $_POST['to'] );
? - Sie können hinzufügen 'debug' => true, um die parameter-Liste, E-Mail::Factory dump debug info. Ich Stimme mit @Declan Greally über den Hafen, und ich möchte hinzufügen, dass der host sollte einfach sein 'smtp.gmail.com', (verhandeln muss, TLS automatisch).
- Ihre Parameter sind aus
($to, $headers, $msg)
Header geht letzten. Versuchen($to, $subject,$msg, $headers)
es ZU, dann Subjekt, dann Botschaft, dann-Header.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Update-host smtp.gmail.com und den port auf 587 und zu aktualisieren, uns mit den Ergebnissen.
Bearbeiten (all in one)
PHP - und HTML zusammen (und ersetzen Sie die
mail()
- Funktion mit Ihrem eigenen SMTP)I. e.:
Neuen code:
Ursprüngliche Antwort
Gab es durchaus ein paar Probleme mit dem code.
Ihre Parameter sind aus
($to, $headers, $msg)
Header geht letzten und die$subject
war nicht im Lieferumfang enthalten; es muss drin sein.Die syntax ist
($to, $subject,$msg, $headers)
es ist, dann Subjekt, dann Botschaft, dann-Header. Als pro
die mail () - Handbuch
Auch wenn Sie SMTP, E-mail ist E-mail.Und ich weiß nicht, warum Sie das tun:
Wird einfach in Ihre form ist
action=
Hier ist was für mich gearbeitet: und Sie ersetzen können:
mit (und wenn es für Sie arbeitet) scheint Es, gab es andere Antworten, die in Bezug auf diese.
PHP - getestet (send-mail.php)
HTML-Formular
Fußnoten:
Fehlende zitieren in
value=EMAIL"
aber, dass der ersetzt wurde, in mein PHP mit:send()
Funktion. Das ist eine Funktion, die scheinbar nicht genannt werden. Wie verwenden Sie es? @MarkMcKmail()
Funktion; hast du es ausprobiert? Und was ist drinnenMail.php
? @MarkMcK.html
da Sie mit PHP, es muss.php
für meinen code zu arbeiten. @MarkMcKSie haben zu prüfen, zuerst den Wert der Variablen $ist eine korrekte E-mail-Richtung. Basierend auf dem code, den Sie geschrieben wahrscheinlich falsch.
Auf dem php-code, den Sie rufen den class-E-Mail, aber Sie nicht include/require, fügen Sie diese:
Nach E-mail senden Sie nicht zeigen, das Ergebnis mit diesem:
Bitte prüfen Sie zunächst Ihren spam in Ihrem Postfach. Wenn gmail empfangenen E-Mails, muss es da sein. Wenn nicht, überprüfen Sie Ihre E-mail-server-Konfiguration und-wenn es berechtigt ist, senden Sie eine mail für Ihre domain an. Sie können auch die E-mail-server-Protokolle für mögliche Probleme.
In jedem Fall würde ich dir empfehlen die Verwendung von Lösungen wie Mailjet oder MailChimp. Können Sie sich für das basic-Paket und Holen Sie sich Ihre E-Mail. Der Vorteil bei der Lösung ist, dass Sie nicht brauchen, um die Aufrechterhaltung Ihrer E-mail-server, und Sie können überprüfen Sie den status jeder E-mail die bearbeitet.
Hier ist eine billige und einfache Möglichkeit, es zu tun.
In deiner php.ini ersetzen Sie die entsprechenden Teile der E-mail-Funktion mit
Ersetzen Sie sendmail.ini mit
Dann in Ihrem code haben, senden Sie eine E-Mail viel die gleiche, außer es schreiben als
oder zu modifizieren, um zu passen.
@mail
der@
sollte nicht verwendet werden.