How to configure XAMPP to send mail from localhost?

后端 未结 11 2494
梦如初夏
梦如初夏 2020-11-21 05:17

I am trying to send mail from localhost. but i am unable to send the mail from localhost so can anybody tell me that how to reconfigure my xampp to send mail from localhost

相关标签:
11条回答
  • 2020-11-21 05:46

    You have to configure SMTP on your server. You can use G Suite SMTP by Google for free:

    <?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 :(";
    }
    
    ?>
    

    Read more about PHPMailer here.

    0 讨论(0)
  • 2020-11-21 05:46

    You have to define an SMTP server and a port for this. All except like sending mails from live hosts.

    This is a useful link regarding this.

    NB: The port should be unused. Please take care that, Some applications like Skype uses the default ports and there by prevents sending mail.

    0 讨论(0)
  • 2020-11-21 05:46

    in addition to all answers please note that in sendmail.ini file:

    auth_password=this-is-Not-your-Gmail-password

    due to new google security concern, you should follow these steps to make an application password for this purpose:

    1. go to https://accounts.google.com/ in security tab
    2. turn two-step-verification on
    3. go back to the security tab and make an App-password (in select-app drop-down menu you can choose 'other')
    0 讨论(0)
  • 2020-11-21 05:50

    As in my personal experience I found that very similar thing to Vikas Dwivedi answer will work just fine.

    Step 1 (php.ini file)

    In php.ini file located in xampp\php\php.ini. Change settings to the following:

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

    Turn off other variables under mail funciton by putting ; before them. e.g ;smtp_port=25

    Step 2 (sendmail.ini file)

    In sendmail.ini located in xampp\sendmail\semdmail.ini change to the following:

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

    Step 3 (code)

    Create a php file and use the following:

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

    Notice

    • You need to restart apache in order for php.ini to reload.
    • you need to activate Google Less secure app access in https://myaccount.google.com/u/1/security
    • It might help to run Xampp with Admin permission.
    0 讨论(0)
  • 2020-11-21 05:51

    I tried many ways to send a mail from XAMPP Localhost, but since XAMPP hasn't SSL Certificate, my email request blocked by Gmail or similar SMTP Service providers.

    Then I used MailHog for local smtp server, what you need to do is just run it. localhost:1025 is for smtp server, localhost:8025 is for mail server, where you can check the emails you sent.

    here is my 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 讨论(0)
提交回复
热议问题