KathyS88 Posted December 11, 2022 Share Posted December 11, 2022 (edited) I'm still in the testing mode version of my website (it's LIVE on GoDaddy's servers), and apparently I have a problem with the contact page, I try to send an email and I get this message: There was an error while submitting the form. Please try again later. Mailer Error: SMTP Error: Could not connect to SMTP host. I talked to GoDaddy and they checked the server and everything is 100% fine, The SMTP settings are correct too. The e-mail is fine too, it's sending and recieving any other mails. I'm so sure from the code lines, I tried to change it code several times and I didn't find any error on the written lines, please I would appreciate it if you could tell me what I missed? Attached PHP code: <?php // PHP Mailer use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; try { require 'PHPMailer/Exception.php'; require 'PHPMailer/PHPMailer.php'; require 'PHPMailer/SMTP.php'; $mail = new PHPMailer(true); //Server settings //$mail->SMTPDebug = SMTP::DEBUG_SERVER; // Enable verbose debug output $mail->isSMTP(); // Send using SMTP $mail->Host = 'localhost'; // Set the SMTP server to send through $mail->SMTPAuth = false; // Enable SMTP authentication $mail->Username = 'myemail@here.com'; // SMTP username $mail->Password = 'myPasswordHere'; // SMTP password $mail->SMTPSecure = 'None'; // 'ssl' or 'tls' or Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` also accepted $mail->Port = 25; // TCP port to connect to. For Example: 25 - Simple SMTP. 465 - SSL SMTP. 587 - TLS SMTP. //From $mail->setFrom('myemail@here.com', 'Mailer'); // Add your hosting account email or server admin email //Recipient $mail->addAddress('myemail@here.com', 'My Name'); // Add a recipient (your email). Add your name //ReplyTo $mail->addReplyTo($_POST['email'], $_POST['name']); // Do not change this line // Content $mail->isHTML(true); // Set email format to HTML $mail->Subject = 'New message from contact form'; // Email subject. You can change this text $fields = array('name' => 'Name', 'email' => 'Email', 'message' => 'Message'); // array variable name => Text to appear in the email $emailText = nl2br("You have new message from Contact Form\n"); foreach ($_POST as $key => $value) { if (isset($fields[$key])) { $emailText .= nl2br("$fields[$key]: $value\n"); } } $mail->Body = $emailText; $mail->send(); $okMessage = 'Contact form successfully submitted. Thank you, I will get back to you soon!'; // You can change this text (message) $responseArray = array('type' => 'success', 'message' => $okMessage); } catch (Exception $e) { $errorMessage = "There was an error while submitting the form. Please try again later. Mailer Error: {$mail->ErrorInfo}"; // You can change this text (message) $responseArray = array('type' => 'danger', 'message' => $errorMessage); } if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { $encoded = json_encode($responseArray); header('Content-Type: application/json'); echo $encoded; } else { echo $responseArray['message']; } Edited December 11, 2022 by KathyS88 Quote Link to comment Share on other sites More sharing options...
gizmola Posted December 11, 2022 Share Posted December 11, 2022 The error you are getting is saying no smtp connection could be made to localhost. Does your server have an mta running (sendmail or postfix)? Does your server have any sort of firewall running that might be blocking port 25? Email configuration for a domain and server is a highly complicated endeavor that involves many different moving parts. It also depends a lot on the type of hosting you have. When you state that "it's sending and receiving other emails" I don't know what that means exactly in your case. There are many things this could be, all of which require a fair degree of system administration skills, and an understanding of your hosting. One possible issue is that "localhost" is not being resolved by your server to the loopback address. About the only suggestion I could make, pretty much as a hail mary attempt, would be to change your script to use '127.0.0.1' instead of 'localhost'. Assuming this is a linux based server, you can check the contents of the /etc/hosts file to see if there is a proper entry mapping localhost to that ip. For mail to have any degree of deliverability direct from a domain, requires lot of things to be setup correctly. This site is an excellent aid in testing and diagnosing deliverability: https://www.mail-tester.com/ If GoDaddy is acting as your MTA, then I would expect that your scripts would be delivering mail to a godaddy mail server, and not to localhost at all, so again, email is complicated, and we really don't have enough information to provide more than a couple of educated guesses as to what your issue is. Quote Link to comment Share on other sites More sharing options...
KathyS88 Posted December 12, 2022 Author Share Posted December 12, 2022 12 hours ago, gizmola said: The error you are getting is saying no smtp connection could be made to localhost. Does your server have an mta running (sendmail or postfix)? Does your server have any sort of firewall running that might be blocking port 25? Email configuration for a domain and server is a highly complicated endeavor that involves many different moving parts. It also depends a lot on the type of hosting you have. When you state that "it's sending and receiving other emails" I don't know what that means exactly in your case. There are many things this could be, all of which require a fair degree of system administration skills, and an understanding of your hosting. One possible issue is that "localhost" is not being resolved by your server to the loopback address. About the only suggestion I could make, pretty much as a hail mary attempt, would be to change your script to use '127.0.0.1' instead of 'localhost'. Assuming this is a linux based server, you can check the contents of the /etc/hosts file to see if there is a proper entry mapping localhost to that ip. For mail to have any degree of deliverability direct from a domain, requires lot of things to be setup correctly. This site is an excellent aid in testing and diagnosing deliverability: https://www.mail-tester.com/ If GoDaddy is acting as your MTA, then I would expect that your scripts would be delivering mail to a godaddy mail server, and not to localhost at all, so again, email is complicated, and we really don't have enough information to provide more than a couple of educated guesses as to what your issue is. Thanks for your explaination and support I'm so sure about all the SMTP configuration settings, Because this is what Godaddy's agents sent me. I did a mail-tester and got total: 6.9/10 and this is what I've got. is this helpful to get resolve the problem? Quote Link to comment Share on other sites More sharing options...
mac_gyver Posted December 12, 2022 Share Posted December 12, 2022 the following is the only documentation that i found - https://www.godaddy.com/help/send-form-mail-using-an-smtp-relay-server-953 so, first question, which type of hosting do you have, since it determines what hostname you use? next, you can get the phpmailer to use php's mail() by calling the isMail() method, instead of the isSMTP() method. if using the isMail() method, you would not use any of the settings. if using the isSMTP() method, i would not use the username and password settings. Quote Link to comment Share on other sites More sharing options...
gizmola Posted December 12, 2022 Share Posted December 12, 2022 So according to Mac's link, as I surmised, you can't relay mail directly from your server via it's mta. Port: 25 SMTP Authentication: False or none SSL or Secure Connection: None Server or Host: The relay server you need to use depends on the type of hosting and script you use. This is apparently why your script doesn't work. It is trying to send mail to your local mta via the smtp protocol. There should be instructions on what the relay server is for your email domain. It is not going to be localhost, but rather some domain name they specify. Changing the script to use the right server should allow it to work. While this has nothing to do with your contact script, as far as the other issues with deliverability, one main issue from the report you provided is that DKIM is not being used. There is nothing you can do about that, as DKIM has to be implemented by the email administrator. I don't know if there is any possibility of having it supported by GoDaddy hosting or not, as it is non-trivial. If you want to know more about it, this article does a good job of explaining the basics so you have a frame of reference: https://www.uriports.com/blog/introduction-to-spf-dkim-and-dmarc/ I don't know the purpose of your server or what types of emails you intend to send, but they will not have a high deliverability score, and thus will likely be spam filtered by some email systems. For the purposes of a contact page, that is not a concern, as you can whitelist your address, but if you will be sending regular/automated emails from your domain, you may encounter problems with other people receiving them. Candidly, Godaddy is not a well regarded hosting company, although many people do use it. Hopefully at very least you are not using shared hosting. Quote Link to comment Share on other sites More sharing options...
KathyS88 Posted December 13, 2022 Author Share Posted December 13, 2022 (edited) 16 hours ago, mac_gyver said: the following is the only documentation that i found - https://www.godaddy.com/help/send-form-mail-using-an-smtp-relay-server-953 so, first question, which type of hosting do you have, since it determines what hostname you use? next, you can get the phpmailer to use php's mail() by calling the isMail() method, instead of the isSMTP() method. if using the isMail() method, you would not use any of the settings. if using the isSMTP() method, i would not use the username and password settings. I'm using Linux (cPanel) plan. can you help me with the code? I'm newbie on PHP Edited December 13, 2022 by KathyS88 Quote Link to comment Share on other sites More sharing options...
KathyS88 Posted December 13, 2022 Author Share Posted December 13, 2022 12 hours ago, gizmola said: So according to Mac's link, as I surmised, you can't relay mail directly from your server via it's mta. Port: 25 SMTP Authentication: False or none SSL or Secure Connection: None Server or Host: The relay server you need to use depends on the type of hosting and script you use. This is apparently why your script doesn't work. It is trying to send mail to your local mta via the smtp protocol. There should be instructions on what the relay server is for your email domain. It is not going to be localhost, but rather some domain name they specify. Changing the script to use the right server should allow it to work. While this has nothing to do with your contact script, as far as the other issues with deliverability, one main issue from the report you provided is that DKIM is not being used. There is nothing you can do about that, as DKIM has to be implemented by the email administrator. I don't know if there is any possibility of having it supported by GoDaddy hosting or not, as it is non-trivial. If you want to know more about it, this article does a good job of explaining the basics so you have a frame of reference: https://www.uriports.com/blog/introduction-to-spf-dkim-and-dmarc/ I don't know the purpose of your server or what types of emails you intend to send, but they will not have a high deliverability score, and thus will likely be spam filtered by some email systems. For the purposes of a contact page, that is not a concern, as you can whitelist your address, but if you will be sending regular/automated emails from your domain, you may encounter problems with other people receiving them. Candidly, Godaddy is not a well regarded hosting company, although many people do use it. Hopefully at very least you are not using shared hosting. How do I whitelist my email? Quote Link to comment Share on other sites More sharing options...
gizmola Posted December 14, 2022 Share Posted December 14, 2022 These are the parameters you provided in the script: $mail->Host = 'localhost'; // Set the SMTP server to send through $mail->SMTPAuth = false; // Enable SMTP authentication $mail->Username = 'myemail@here.com'; // SMTP username $mail->Password = 'myPasswordHere'; // SMTP password $mail->SMTPSecure = 'None'; // 'ssl' or 'tls' or Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` also accepted $mail->Port = 25; // TCP port to connect to. For Example: 25 - Simple SMTP. 465 - SSL SMTP. 587 - TLS SMTP. Based on information you get from GoDaddy, $mail->Host should be one of their hostnames. You either need a user/password or you don't. This is information you need to get from GoDaddy. Let's assume that the mail relay server for your hosting plan is 'mail3.godaddy.com'. Then you would need to change this line of code in the script: $mail->Host = 'localhost'; To whatever the actual host is. In the example I provided, then that line needs to be changed to be: $mail->Host = 'mail3.godaddy.com'; This is not an actual godaddy host, so don't try and use that. You need to get the correct mail server host name from your hosting information provided to you by godaddy. As for whitelisting, that depends on the email client you use. For example, I used gmail for most things, so a search on "whitelist {your email client}" should provide you some documentation or articles showing you how to do it. For gmail that would be an article like this one: https://www.whitelist.guide/gmail/ Quote Link to comment Share on other sites More sharing options...
KathyS88 Posted December 14, 2022 Author Share Posted December 14, 2022 (edited) 4 hours ago, gizmola said: These are the parameters you provided in the script: $mail->Host = 'localhost'; // Set the SMTP server to send through $mail->SMTPAuth = false; // Enable SMTP authentication $mail->Username = 'myemail@here.com'; // SMTP username $mail->Password = 'myPasswordHere'; // SMTP password $mail->SMTPSecure = 'None'; // 'ssl' or 'tls' or Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` also accepted $mail->Port = 25; // TCP port to connect to. For Example: 25 - Simple SMTP. 465 - SSL SMTP. 587 - TLS SMTP. Based on information you get from GoDaddy, $mail->Host should be one of their hostnames. You either need a user/password or you don't. This is information you need to get from GoDaddy. Let's assume that the mail relay server for your hosting plan is 'mail3.godaddy.com'. Then you would need to change this line of code in the script: $mail->Host = 'localhost'; To whatever the actual host is. In the example I provided, then that line needs to be changed to be: $mail->Host = 'mail3.godaddy.com'; This is not an actual godaddy host, so don't try and use that. You need to get the correct mail server host name from your hosting information provided to you by godaddy. As for whitelisting, that depends on the email client you use. For example, I used gmail for most things, so a search on "whitelist {your email client}" should provide you some documentation or articles showing you how to do it. For gmail that would be an article like this one: https://www.whitelist.guide/gmail/ According to the host you can see here in the attachment and link that it should be localhost, I’ve contacted them about this and they said the same (localhost), I was confused too. here: Link . I also have tried Outgoing server and ports Outgoing server (SMTP):smtpout.secureserver.net SSL Port: 465 or 587 and Unfortunately it didn’t work too. Edited December 14, 2022 by KathyS88 Quote Link to comment Share on other sites More sharing options...
KathyS88 Posted December 29, 2022 Author Share Posted December 29, 2022 I did fixed the issue. Thanks all for your support the problem was the host, the right one is: mail.mydomain.com Even Godaddy's guides didn't know this I have tried for weeks and finally resolved. Quote Link to comment Share on other sites More sharing options...
KathyS88 Posted December 29, 2022 Author Share Posted December 29, 2022 On 12/12/2022 at 10:25 PM, gizmola said: So according to Mac's link, as I surmised, you can't relay mail directly from your server via it's mta. Port: 25 SMTP Authentication: False or none SSL or Secure Connection: None Server or Host: The relay server you need to use depends on the type of hosting and script you use. This is apparently why your script doesn't work. It is trying to send mail to your local mta via the smtp protocol. There should be instructions on what the relay server is for your email domain. It is not going to be localhost, but rather some domain name they specify. Changing the script to use the right server should allow it to work. While this has nothing to do with your contact script, as far as the other issues with deliverability, one main issue from the report you provided is that DKIM is not being used. There is nothing you can do about that, as DKIM has to be implemented by the email administrator. I don't know if there is any possibility of having it supported by GoDaddy hosting or not, as it is non-trivial. If you want to know more about it, this article does a good job of explaining the basics so you have a frame of reference: https://www.uriports.com/blog/introduction-to-spf-dkim-and-dmarc/ I don't know the purpose of your server or what types of emails you intend to send, but they will not have a high deliverability score, and thus will likely be spam filtered by some email systems. For the purposes of a contact page, that is not a concern, as you can whitelist your address, but if you will be sending regular/automated emails from your domain, you may encounter problems with other people receiving them. Candidly, Godaddy is not a well regarded hosting company, although many people do use it. Hopefully at very least you are not using shared hosting. Would you please tell me what is the best/recommended hosting ? I live in Israel if this change anything Quote Link to comment Share on other sites More sharing options...
gizmola Posted January 17, 2023 Share Posted January 17, 2023 On 12/29/2022 at 6:47 AM, KathyS88 said: Would you please tell me what is the best/recommended hosting ? I live in Israel if this change anything My experience is with larger Hosting companies, using VPS servers. What is right for you depends a lot on what you are doing with your server. What does the server do for you? Is it a business, and if so what market(s) does it serve? The location of the server is important to any decision you make. I have experience with all 4 of these services and can recommend them for someone who is not based in the US. Amazon Web Services (AWS) Microsoft Azure Linode Vultr All of these services have a presence that should be suitable for you in Israel, although you might need to experiment. With a VPS provider, you can easily create VPS server, and experiment with it, and shut it down if you don't feel it's providing the performance you want, given your location. AWS in particular is soon to open a Tel Aviv "Region" which means one or more data centers located in that city. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.