Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to send smtp mail from localhost

Tags:

php

email

smtp

I always get this message when trying to send email from my local host.

SMTP Error: Could not connect to SMTP host. Message could not be sent. Mailer Error: SMTP Error: Could not connect to SMTP host.

below is my code: please help

<?php

// $email and $message are the data that is being
// posted to this page from our html contact form
$email = $_REQUEST['email'] ;
$message = $_REQUEST['message'] ;

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

$mail = new PHPMailer();

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

// When sending email using PHPMailer, you need to send from a valid email address
// In this case, we setup a test email account with the following credentials:
// email: [email protected]
// pass: password
$mail->Username = "[email protected]";  // SMTP username
$mail->Password = "Nov112014"; // SMTP password

// $email is the user's email address the specified
// on our contact us page. We set this variable at
// the top of this page with:
// $email = $_REQUEST['email'] ;
$mail->From = $email;

// below we want to set the email address we will be sending our email to.
$mail->AddAddress("[email protected]", "Usman Ali Siddiqui");

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

$mail->Subject = "You have received feedback from your website Etutionhub!";

// $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'] ;
$mail->Body    = $message;
$mail->AltBody = $message;

if(!$mail->Send())
{
   echo "Message could not be sent. <p>";
   echo "Mailer Error: " . $mail->ErrorInfo;
   exit;
}

echo "Message has been sent";
?>
like image 555
Usman Ali Siddiqui Sabzwari Avatar asked Sep 20 '15 08:09

Usman Ali Siddiqui Sabzwari


People also ask

What is localhost SMTP?

localhost. mail. smtp. localhost specifies the name of the localhost that is used in the SMTP HELO or EHLO commands.

How do I host a localhost mail server?

Type the unique name of your SMTP server in the SMTP Server text box, or select the Use localhost check box to set the name to LocalHost. Setting the name to LocalHost means that ASP.NET uses an SMTP server on the local computer. Typically, this is the default SMTP virtual server. Enter a TCP port in the Port text box.


1 Answers

  1. Open the php.ini. For XAMPP, it is located in C:\XAMPP\php\php.ini. Find out if you are using WAMP or LAMP server.
    Note: Make a backup of php.ini file.

  2. Search [mail function] in the php.ini file.

    You can find like below.
    [mail function]
    ; For Win32 only.
    ; http://php.net/smtp
    SMTP = localhost
    ; http://php.net/smtp-port
    smtp_port = 25
    
    ; For Win32 only.
    ; http://php.net/sendmail-from
    ;sendmail_from = postmaster@localhost
    

    Change the localhost to the smtp server name of your ISP. No need to change the smtp_port. Leave it as 25. Change sendmail_from from postmaster@localhost to your domain email address which will be used as from address.

    So for me, it will become like this.

    [mail function]
    ; For Win32 only.
    SMTP = smtp.example.com
    smtp_port = 25
    ; For Win32 only.
    sendmail_from = [email protected]
    
  3. Restart the XAMPP or WAMP(apache server) so that changes will start working.

  4. Now try to send the mail using the mail() function.

    mail("[email protected]","Success","Great, Localhost Mail works");
    

Mail will be sent to [email protected] from the localhost with Subject line "Success" and body "Great, Localhost Mail works".

like image 146
urfusion Avatar answered Oct 15 '22 02:10

urfusion