6

Hello guys i get this error,

Message could not be sent.Mailer Error: The following From address failed: hehe.gmail.com : Called Mail() without being connected.

<?php
require '/PHPMailer_5.2.4/class.phpmailer.php';

$mail = new PHPMailer;

$mail->IsSMTP();                                      // Set mailer to use SMTP
$mail->Host = 'smtp.gmail.com';  // Specify main and backup server
$mail->SMTPAuth = true;                               // Enable SMTP authentication
$mail->Username = 'hehe@gmail.com';                            // SMTP username
$mail->Password = 'xxx';                           // SMTP password
$mail->SMTPSecure = 'ssl';                            // Enable encryption, 'ssl' also accepted
$mail->Port = 465;

$mail->From = 'hehe@gmail.com';
$mail->FromName = 'Mailer';
$mail->AddAddress('hehe@gmail.com');  // Add a recipient

$mail->WordWrap = 50;                                 // Set word wrap to 50 characters
$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 'Message could not be sent.';
   echo 'Mailer Error: ' . $mail->ErrorInfo;
   exit;
}

echo 'Message has been sent';

How can i fix it? Thanks!

user3209031
  • 837
  • 1
  • 14
  • 38
geds13
  • 181
  • 2
  • 5
  • 21
  • Can you add `$mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only ` so you can see some dbug statements? – Jens Aug 25 '14 at 06:21
  • @Jens Hello, here you go. SMTP -> ERROR: Failed to connect to server: Unable to find the socket transport "ssl" - did you forget to enable it when you configured PHP? (1302733632) – geds13 Aug 25 '14 at 06:33
  • @Jens I am also using WAMP – geds13 Aug 25 '14 at 06:34
  • Look [here](http://stackoverflow.com/questions/1705856/socket-transport-ssl-in-php-not-enabled) maybe this helps. – Jens Aug 25 '14 at 06:35
  • It still did not work. I dont know why. – geds13 Aug 25 '14 at 06:44
  • Next try. Look [here](http://stackoverflow.com/questions/21962849/unable-to-find-the-socket-transport-ssl-did-you-forget-to-enable-it-when-you) – Jens Aug 25 '14 at 06:45
  • Just came in to my mind that HTML sending requires `MsgHTML()` rather than `Body()`. Give it a try. (note: your message `must` have `` tags in it) –  Aug 25 '14 at 06:50
  • Why are you using such an old version? [Get the latest](https://github.com/PHPMailer/PHPMailer). `msgHTML()` is a convenience function for setting `Body` and `AltBody`; there is no `Body()`. – Synchro Aug 25 '14 at 08:06
  • This looks like a connection-level issue, so set `$mail->SMTPDebug = 4;`. Also try using `$mail->SMTPSecure = 'tls';$mail->Port = 587;` rather than the obsolete ssl/465. All this is covwered in the gmail example code in the PHPMailer docs. – Synchro Aug 25 '14 at 08:08
  • I was getting the same error and turned out that I had to edit my gmail account permissions. Trying enabling the 'Access for less secure apps' Security setting. – Komal Waseem Sep 21 '14 at 18:06
  • @KomalWaseem they've recently stated doing that to tighten gmail security. – unixmiah Jul 31 '16 at 03:36
  • @geds13 make sure you do that, try loggin into your normal gmail and look out for any steps you may need to take in order for you to use your gmail account for smtp relay. – unixmiah Jul 31 '16 at 03:37

4 Answers4

1

Have you enabled access to less secure apps from your gmail id??

shivamag00
  • 661
  • 8
  • 13
0

Please try this

<?php
include "PHPMailer_5.2.4/class.phpmailer.php"; // include the class name
$mail = new PHPMailer(); // create a new object
$mail->IsSMTP(); // enable SMTP
$mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; // authentication enabled
$mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for GMail
$mail->Host = "smtp.gmail.com";
$mail->Port = 465; // or 587
$mail->IsHTML(true);
$mail->Username = "gmailusername@gmail.com";
$mail->Password = "**********";
$mail->SetFrom("anyemail@gmail.com");
$mail->Subject = "Here is the subject";
$mail->Body = "This is the HTML message body <b>in bold!</b>";
 if(!$mail->Send()){
    echo "Mailer Error: " . $mail->ErrorInfo;
}
else{
    echo "Message has been sent";
}
?>

Please edit your gmail and password correctly.

You may see the demo on Click here

0

You need to use TLS, not SSL if you're using going to use gmail. Here is an example below

//Create a new PHPMailer instance
$mail = new PHPMailer;
//Tell PHPMailer to use SMTP
$mail->isSMTP();
//Enable SMTP debugging
// 0 = off (for production use)
// 1 = client messages
// 2 = client and server messages
$mail->SMTPDebug = 2;
//Ask for HTML-friendly debug output
$mail->Debugoutput = 'html';
//Set the hostname of the mail server
$mail->Host = 'smtp.gmail.com';
// use
// $mail->Host = gethostbyname('smtp.gmail.com');
// if your network does not support SMTP over IPv6
//Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission
$mail->Port = 587;
//Set the encryption system to use - ssl (deprecated) or tls
$mail->SMTPSecure = 'tls';
//Whether to use SMTP authentication
$mail->SMTPAuth = true;
//Username to use for SMTP authentication - use full email address for gmail
$mail->Username = "username@gmail.com";
//Password to use for SMTP authentication
$mail->Password = "yourpassword";
//Set who the message is to be sent from
$mail->setFrom('from@example.com', 'First Last');
//Set an alternative reply-to address
$mail->addReplyTo('replyto@example.com', 'First Last');
//Set who the message is to be sent to
$mail->addAddress('whoto@example.com', 'John Doe');
//Set the subject line
$mail->Subject = 'PHPMailer GMail SMTP test';
//Read an HTML message body from an external file, convert referenced images to embedded,
//convert HTML into a basic plain-text alternative body
$mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__));
//Replace the plain text body with one created manually
$mail->AltBody = 'This is a plain-text message body';
//send the message, check for errors
if (!$mail->send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
} else {
    echo "Message sent!";
}

@ref: https://github.com/PHPMailer/PHPMailer/blob/master/examples/gmail.phps

unixmiah
  • 3,081
  • 1
  • 12
  • 26
0

In my case it was because of virus guard..I disabled it and checked.It worked.

Siriw
  • 11
  • 7