Home » Php » php – SMTP ERROR: Failed to connect to server: Connection refused (111) with Office365

php – SMTP ERROR: Failed to connect to server: Connection refused (111) with Office365

Posted by: admin July 12, 2020 Leave a comment

Questions:

Sorry if this is a road heavily traveled. I’ve seen the other posts about this but nothing in them has either solved the problem I’m having or ignited a lightbulb that helped me solve it myself.

Here’s my code:

require 'PHPMailerAutoload.php';
$config = parse_ini_file('/path/to/file/config.ini', true);
$mail = new PHPMailer;
$mail->SMTPDebug = 3;
$mail->Debugoutput = 'html';
$mail->isSMTP();
$mail->Host = $config['host']; //smtp.office365.com
$mail->SMTPAuth = true;
$mail->Username = $config['username']; //[email protected]
$mail->Password = $config['password']; //confirmed this is being passed correctly
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->From = $config['username'];
$mail->FromName = 'Website Forms';
$mail->addAddress('[email protected]', 'Some Name');
$mail->addReplyTo('[email protected]', 'SenderFirst SenderLast');
$mail->addBCC('[email protected]');
$mail->isHTML(true);
$mail->Subject = 'Contact Form Submission';
$mail->Body = 'Some html here';
$mail->AltBody = 'Some alt content here';
if(!$mail->send()) {
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    //perform success actions
    exit();
}

I’ve confirmed that the domain, username and password are all correct and being passed in correctly. Important to note that this worked on our local dev server prior to launch. Once the site was moved to our hosting account (Hostgator) is when it stopped working. I’ve confirmed with HG that port 587 is open on our server.

Here is the error message I’m seeing:

Connection: opening to smtp.office365.com:587, t=10, opt=array ()
SMTP ERROR: Failed to connect to server: Connection refused (111)
SMTP connect() failed.
Message could not be sent.Mailer Error: SMTP connect() failed.

Any help that can be provided is very much appreciated, even if it’s just a link to an article that explains why it won’t work now that it’s in our production environment.

How to&Answers:

None of the answers worked for me.
After many hours, I found the problem, but only works for Cpanel/WHM

  • Login into WHM.
  • Go to ConfigServer Security & Firewall inside plugins option.
  • Click on Firewall configuration
  • Filter by SMTP Settings
  • Look for SMTP_ALLOWUSER option and add the Cpanel account’s username separated by coma
  • Restart the firewall.

If you don’t have access to WHM ask your provider.

Answer:

In PHP 5.5 and phpmailer there’s a bug with the port number. Don’t set port number ( mail->port = ….) this causes the error:
“smtp error failed to connect to server connection refused 111”

Leave it at the default port number of 25 and it works !

Answer:

It turns out that HG needed to modify the settings to the firewall on our server. Once they did that, it worked great. So, if you’re having a similar problem, I’d recommend making sure everything is correct on your end, but then to check with your hosting provider to see what needs to be done on their end.

Answer:

If you are using cPanel/WHM you need to make sure:

Restrict outgoing SMTP to root, exim, and mailman (FKA SMTP Tweak) – is set to OFF. (This can be edited inside “Server Configuration » Tweak Settings” (Search: SMTP))

If you also have the ConfigServer Security & Firewall enabled, you will need to edit your Firewall configuration. Click ‘Firewall Configuation’ then choose “Filter by SMTP Settings”. Now look for SMTP_ALLOWUSER option and add the cPanel account’s username separated by coma. Hit “Change” and then restart the firewall.