Wie konfiguriere ich XAMPP zum Senden von E-Mails von localhost?


255

Ich versuche, E-Mails von localhost zu senden. Aber ich kann die Mail nicht von localhost senden, daher kann mir jemand sagen, wie ich meine xampp neu konfigurieren kann, um Mail von localhost zu senden


3
Können wir Ihren Code sehen?
Aizaz

2
Es ist unmöglich zu helfen, wenn Sie uns nicht die aktuelle Konfiguration geben.
Arkascha

1
Ist dies unter Einbeziehung von Mercury (ApacheFriends XAMPP 1.8.2) noch relevant? Ich würde ja denken, aber wenn es Leute gibt, die Merkur bevorzugen, geben Sie bitte unten an. :) Vielen Dank!
Eiswasser

Antworten:


371

Sie können E-Mails von localhost mit dem sendmail-Paket senden. Das sendmail-Paket ist in XAMPP integriert. Wenn Sie also XAMPP verwenden, können Sie problemlos E-Mails von localhost senden.

zum Beispiel können Sie konfigurieren C:\xampp\php\php.iniund c:\xampp\sendmail\sendmail.inifür gmail Mail zu versenden.

in C:\xampp\php\php.inifinden extension=php_openssl.dllund das Semikolon aus dem Anfang der Zeile entfernen SSL arbeitet für gmail für localhost zu machen.

in der Datei php.ini suchen [mail function]und ändern

SMTP=smtp.gmail.com
smtp_port=587
sendmail_from = my-gmail-id@gmail.com
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"

Jetzt öffnen C:\xampp\sendmail\sendmail.ini. Ersetzen Sie den gesamten vorhandenen Code in sendmail.ini durch den folgenden Code

[sendmail]

smtp_server=smtp.gmail.com
smtp_port=587
error_logfile=error.log
debug_logfile=debug.log
auth_username=my-gmail-id@gmail.com
auth_password=my-gmail-password
force_sender=my-gmail-id@gmail.com

Jetzt hast du es geschafft !! Erstellen Sie eine PHP-Datei mit Mail-Funktion und senden Sie Mail von localhost.

PS: Vergessen Sie nicht, meine-gmail-ID und mein-gmail-Passwort im obigen Code zu ersetzen . Vergessen Sie auch nicht, doppelte Schlüssel zu entfernen, wenn Sie die Einstellungen von oben kopiert haben. Beispiel: Kommentieren Sie die folgende Zeile, wenn es einen anderen sendmail_path gibt : sendmail_path="C:\xampp\mailtodisk\mailtodisk.exe"in der Datei php.ini

Denken Sie auch daran, den Server über das XAMMP-Kontrollfeld neu zu starten, damit die Änderungen wirksam werden.

Für Google Mail überprüfen Sie bitte https://support.google.com/accounts/answer/6010255 , um den Zugriff von weniger sicheren Apps aus zu ermöglichen.

Um E-Mails unter Linux (mit sendmail-Paket) über Google Mail von localhost zu senden, überprüfen Sie bitte PHP + Ubuntu. Senden Sie E-Mails mit dem Google Mail-Formular localhost .


3
Abgesehen von den oben genannten Konfigurationen musste ich meine sendmail glob.com.au/sendmail
kaz

1
Ich musste ein Upgrade von XAMMP 1.7.7 auf 2.8.2.3 durchführen - sendmail ist im neueren XAMPP enthalten. Ich habe vor einigen Monaten versucht, ein neueres sendmail mit 1.7.7 zu verwenden, konnte es jedoch nicht zum Laufen bringen. Schließlich habe ich die Kugel gebissen und das neue XAMPP verwendet, und es funktioniert wie beschrieben.
VanAlbert

2
Ich glaube, der Speicherort C: \ xampp \ php \ php.ini bezieht sich auf Windows-Umgebungen. Für Mac suchen Sie in xamppfiles / etc nach Ihrer php.ini-Datei.
Paul Trotter

3
@ Vikas Antwort war am besten, aber bitte beachten Sie, dass die Verwendung der Standard-SSL auf smtp_port unter bestimmten Bedingungen möglicherweise nicht funktioniert. Die Verwendung von 465 als Antwort von Thirumalai Murugan hat angegeben, dass dies tatsächlich für mich
behoben wurde

2
Es funktioniert perfekt mit XAMPP Version 7.0.15. Vergessen Sie nicht, das Semikolon daraus zu entfernen und sich mit derselben Google Mail-ID anzumelden , die Sie konfiguriert haben. Gehen Sie dann zum folgenden Link: myaccount.google.com/lesssecureapps?pli=1 und Weniger sichere Apps zulassen: EIN Jetzt können Sie die Mail direkt vom XAMPP localhost
senden

35

In XAMPP v3.2.1 können Sie zu Testzwecken die E-Mails sehen, die XAMPP in XAMPP / mailoutput sendet. In meinem Fall unter Windows 8 war keine zusätzliche Konfiguration erforderlich und eine einfache Lösung zum Testen von E-Mails


1
Und wenn dies nicht funktioniert, überprüfen Sie Ihre Zeile c:\xampp\php\php.ini, suchen Sie nach ihr [mail function]und kommentieren Sie sie aus mailtodisk.exe. Lassen Sie jede andere Zeile in diesem Abschnitt mit Ausnahme der mail.add_x_headereinen auskommentiert.
Tim Malone

3
Als Ergänzung zu meinem obigen Kommentar müssen Sie für die neueren Versionen von XAMPP möglicherweise die Mailtodisk-Zeile manuell hinzufügen. Es sollte ungefähr so ​​aussehen:sendmail_path="C:\xampp\mailtodisk\mailtodisk.exe"
Tim Malone

Ein zusätzlicher Nachtrag zum Kommentieren von @TimMalone. Ich fand, dass Mail nur an XAMPP / mailoutput geschrieben werden würde, wenn XAMPP als admin ausgeführt würde
sohail

@sohail: Sie müssen XAMPP nicht als Administrator ausführen, aber Sie müssen allen Benutzern die Erlaubnis geben, in den Ordner XAMPP / mailoutput zu schreiben (Rechtsklick auf Ordner> Sicherheit> Alle Benutzer> Bearbeitungsberechtigungen> Vollzugriff)
cheppsn

@ TimMalone Ich habe die beiden Vorschläge angewendet, aber nichts im Mailoutput-Verzeichnis, auch nach so vielen Versuchen
Vipul Hadiya

25

Es ist sehr einfach, E-Mails auf localhost oder einem lokalen Server zu senden

Hinweis: Ich verwende die Test-Mail-Server-Software unter Windows 7 64-Bit mit installiertem Xampp

Laden Sie einfach das Test Mail Server Tool herunter und installieren Sie es gemäß den Anweisungen auf der Website Test Mail Server Tool

Jetzt müssen Sie nur noch zwei Zeilen unter php.iniDatei ändern

  1. Suchen [mail function]und entfernen Sie das vorhergehende Semikolon;smtp = localhost
  2. Setzen Sie das Semikolon vor sendmail_path = "C:\xampp\mailtodisk\mailtodisk.exe"

Sie müssen nichts anderes ändern, aber wenn Sie immer noch keine E-Mails erhalten, als nach dem zu suchen SMTP port, muss die Portnummer dieselbe sein.

Die obige Methode gilt für Standardeinstellungen, die von der Xampp-Software bereitgestellt werden.


7
Wenn Sie dieser Site nicht vertrauen, möchten Sie möglicherweise stattdessen Papercut von Codeplex verwenden: papercut.codeplex.com .
Marcel Burkhard

Ich musste nichts tun, damit es funktioniert, installiere es einfach.
vonUbisch

Ich musste nur den Hafen wechseln
Pablo SG Pacheco

Was ist in diesem Fall Benutzername und Passwort?
Eoin

@Ein Benutzername & Passwort von was?
Vikas Khunteta

23

Sie können das Senden von E-Mails auf Ihrem PC ohne Internet testen

Sie sollten Papercut dieser einfachen Anwendung verwenden, um das Senden von E-Mails zu testen. und Sie müssen nichts konfigurieren.

Führen Sie es einfach aus und testen Sie das Senden von E-Mails:

test_sendmail.php

<?php
$to = "somebody@example.com";
$subject = "My subject";
$txt = "Hello world!";
$headers = "From: webmaster@example.com" . "\r\n" .
"CC: somebodyelse@example.com";

mail($to,$subject,$txt,$headers);
?>

und du wirst das sehen:

Geben Sie hier die Bildbeschreibung ein

Ich hoffe du hast einen guten Tag. Sie können mich auf Youtube für mehr Tutorial Piseth Sok finden

Jubeln!


1
Dies ist eine wirklich großartige Lösung, schnell und einfach, und ich kann sofort mit der Arbeit beginnen. Das lokale Herumspielen mit Mailservern ist ein Problem, wenn es nur für Entwickler ist.
AdheneManx

1
Danke, ich habe dies auch zum Testen meines Projekts verwendet.
Piseth Sok

19

Sie müssen SMTP auf Ihrem Server konfigurieren . Sie können G Suite SMTP von Google kostenlos verwenden:

<?php

$mail = new PHPMailer(true);

// Send mail using Gmail
if($send_using_gmail){
    $mail->IsSMTP(); // telling the class to use SMTP
    $mail->SMTPAuth = true; // enable SMTP authentication
    $mail->SMTPSecure = "ssl"; // sets the prefix to the servier
    $mail->Host = "smtp.gmail.com"; // sets GMAIL as the SMTP server
    $mail->Port = 465; // set the SMTP port for the GMAIL server
    $mail->Username = "your-gmail-account@gmail.com"; // GMAIL username
    $mail->Password = "your-gmail-password"; // GMAIL password
}

// Typical mail data
$mail->AddAddress($email, $name);
$mail->SetFrom($email_from, $name_from);
$mail->Subject = "My Subject";
$mail->Body = "Mail contents";

try{
    $mail->Send();
    echo "Success!";
} catch(Exception $e){
    // Something went bad
    echo "Fail :(";
}

?>

Lesen Sie mehr über PHPMailer hier .


@ Vikas Antwort war am besten, aber bitte beachten Sie, dass die Verwendung der Standard-SSL auf smtp_port unter bestimmten Bedingungen möglicherweise nicht funktioniert. Die Verwendung von 465, wie in dieser Antwort angegeben, wurde tatsächlich für mich
behoben

Ich habe die Antwort von @Vikas verwendet, aber ich habe ein Fragment von Ihnen verwendet, dh 465 als emtp_port verwendet.
Trotzdem

Schwerwiegender
Shafizadeh

7

Wie in meiner persönlichen Erfahrung habe ich festgestellt, dass die Antwort von Vikas Dwivedi sehr ähnlich funktioniert.

Schritt 1 (Datei php.ini)

In der php.ini Datei befindet sich in xampp\php\php.ini. Ändern Sie die Einstellungen wie folgt:

 extension=php_openssl.dll
 [mail function]
 sendmail_path =":\xampp7\sendmail\sendmail.exe -t"
 mail.add_x_header=On

Schalten Sie andere Variablen aus, mail funcitonindem Sie sie vorlegen ;. z.B;smtp_port=25

Schritt 2 (sendmail.ini Datei)

Ändern Sie in sendmail.ini unter xampp \ sendmail \ semdmail.ini Folgendes:

 smtp_server=smtp.gmail.com
 smtp_port=465
 smtp_ssl=auto
 auth_username=address@gmail.com
 auth_password=YourPassword

Schritt 3 (Code)

Erstellen Sie eine PHP-Datei und verwenden Sie die folgenden:

 <?php
    mail($to, "subject", "body", "From: ".$from);
 ?>

Beachten

  • Sie müssen Apache neu starten, damit php.ini neu geladen werden kann.
  • Sie müssen den sicheren App-Zugriff von Google Less unter https://myaccount.google.com/u/1/security aktivieren
  • Es kann hilfreich sein, Xampp mit Administratorrechten auszuführen.

2

Dieser Code wird für die E-Mails von Ihrem localhost XAMPP und Ihrem Google Mail-Konto verwendet. Dieser Code ist sehr einfach und funktioniert für mich. Versuchen Sie es selbst.

Unten Änderung in der php.ini-Datei

SMTP=smtp.gmail.com 
smtp_port=587 
sendmail_from = your@gmail.com 
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t" 
extension=php_openssl.dll 

Unter Ändern in sendmail.ini-Datei

smtp_server=smtp.gmail.com
smtp_port=587
error_logfile=error.log
debug_logfile=debug.log 
auth_username=yourmail@gmail.com 
auth_password=your-gmail-password 
force_sender=yourmail@gmail.com  

Bitte schreiben Sie den obigen Code in Ihre PHP-Datei, um eine E-Mail zu senden

<?php 
    $to = "tomail@gmail.com";
    $subject = "Test Mail";
    $headers = "From: from_mail@gmail.com\r\n";
    $headers .= "Reply-To: replytomail@gmail.com\r\n";
    $headers .= "CC: theassassin.edu@gmail.com\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
    $message = '<html><body>';
    $message .= '<img src="//css-tricks.com/examples/WebsiteChangeRequestForm/images/wcrf-header.png" alt="Website Change Request" />';
    $message .= '<table rules="all" style="border-color: #666;" cellpadding="10">';
    $message .= "<tr style='background: #eee;'><td><strong>Name:</strong> </td><td>Details</td></tr>";
    $message .= "<tr><td><strong>Email:</strong> </td><td>Details</td></tr>";
    $message .= "<tr><td><strong>Type of Change:</strong> </td><td>Details</td></tr>";
    $message .= "<tr><td><strong>Urgency:</strong> </td><td>Details</td></tr>";
    $message .= "<tr><td><strong>URL To Change (main):</strong> </td><td>Details</td></tr>";
    $addURLS = 'google.com';
    if (($addURLS) != '') {
        $message .= "<tr><td><strong>URL To Change (additional):</strong> </td><td>" . $addURLS . "</td></tr>";
    }
    $curText = 'dummy text';           
    if (($curText) != '') {
        $message .= "<tr><td><strong>CURRENT Content:</strong> </td><td>" . $curText . "</td></tr>";
    }
    $message .= "<tr><td><strong>NEW Content:</strong> </td><td>New Text</td></tr>";
    $message .= "</table>";
    $message .= "</body></html>";

    if(mail($to,$subject,$message,$headers))
    {
        echo "Mail Send Sucuceed";
    }
    else{
        echo "Mail Send Failed";    
    }
?>

0

SMTPDazu müssen Sie einen Server und einen Port definieren . Alle außer dem Versenden von Mails von Live-Hosts.

Dies ist ein nützlicher Link dazu .

NB: Der Port sollte nicht verwendet werden. Bitte beachten Sie, dass einige Anwendungen wie Skypedie Standardports verwenden und dort das Versenden von E-Mails verhindern.


Sie können verhindern, dass Skype Port 80 verwendet. Die Verbindungseinstellungen von Skype
Astroanu

0

Ich habe gerade über eine Stunde damit verbracht, diese Arbeit zu machen. Für alle, die die gleichen Probleme mit all den Vorschlägen haben, die nicht funktionieren: Sie müssen Apache in Ihrer XAMPP-Oberfläche neu starten! Nur ein Neustart von XAMPP funktioniert nicht !!


0

Ich habe viele Möglichkeiten ausprobiert, um eine E-Mail von XAMPP Localhost zu senden. Da XAMPP jedoch kein SSL-Zertifikat besitzt, wurde meine E-Mail-Anfrage von Google Mail oder ähnlichen SMTP-Dienstanbietern blockiert.

Dann habe ich MailHog für den lokalen SMTP-Server verwendet. Sie müssen es nur ausführen. localhost: 1025 ist für den SMTP-Server, localhost: 8025 für den Mailserver, auf dem Sie die von Ihnen gesendeten E-Mails überprüfen können.

Hier ist mein Code:

    require_once "src/PHPMailer.php";
    require_once "src/SMTP.php";
    require_once "src/Exception.php";

    $mail = new PHPMailer\PHPMailer\PHPMailer();

      //Server settings
    $mail->SMTPDebug = 3;                      // Enable verbose debug output
    $mail->isSMTP();                                            // Send using SMTP
    $mail->Host       = 'localhost';                    // Set the SMTP server to send through
    $mail->Port       = 1025;                                    // TCP port to connect to
    // $mail->Username   = '';                     // SMTP username
    // $mail->Password   = '';                               // SMTP password
    // $mail->SMTPAuth   = true;                                   // Enable SMTP authentication
    // $mail->SMTPSecure = 'tls';         // Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` also accepted

    //Recipients
    $mail->setFrom('testtoo@testto.com', 'Mailer');
    $mail->addAddress('testtoo@webbamail.com', 'Joe User');     // Add a recipient

    // 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';

    if(!$mail->Send()) {
        echo "Mailer Error: " . $mail->ErrorInfo;
    } else {
        echo "Message sent!";
    }

MailHog Github Repository Link


0

Bitte beachten Sie zusätzlich zu allen Antworten, dass in der sendmail.iniDatei:

auth_password = Dies ist nicht Ihr Google Mail-Passwort

Aufgrund neuer Sicherheitsbedenken bei Google sollten Sie die folgenden Schritte ausführen, um ein Anwendungskennwort für diesen Zweck zu erstellen:

  1. Gehen Sie auf der Registerkarte Sicherheit zu https://accounts.google.com/
  2. Aktivieren Sie die Bestätigung in zwei Schritten
  3. Gehen Sie zurück zur Registerkarte "Sicherheit" und geben Sie ein App-Passwort ein (im Dropdown-Menü "App auswählen" können Sie "Andere" auswählen).
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.