Skip to main content
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
DustinM
New

GoDaddy no cooperating with PHPMailer

I have economy linux hosting with cpanel.  I have email accounts hosted by gmail, but using my domain name: dukecitysecurity.com.  Our site uses a contact form that runs off PHPMailer.  Messages are supposed to be sent to info@dukecitysecurity.com.   Using the form reports a successful send, but no messages ever make it to the destination.  GoDaddy support sent me to this page which was unhelpful (settings were already correct): https://www.godaddy.com/help/send-form-mail-using-an-smtp-relay-server-953.  Then they said the problem must be with the code.  The company I bought the code from says that the problem lies with GoDaddy not processing the form correctly, but they won't give me any details on what needs to be done to fix it. 

Contents of  rd-mailform.config.js:

{
"useSmtp": false,
"host": "localhost",
"port": 25,
"username": "",
"password": "",
"recipientEmail": "info@dukecitysecurity.com"
}

 

When I change smtp to "true," I get an error and browser console XHR entry reports the following: "SERVER -> CLIENT: 220-p3plzcpnl450427.prod.phx3.secureserver.net ESMTP Exim 4.93 #2 Sun, 04 Apr 2021 15:05:07 -0700 220-We do not authorize the use of this system to transport unsolicited, 220 and/or bulk e-mail. "

 

Contents of rd-mIailform.php:

"

<?php

$formConfigFile = file_get_contents("rd-mailform.config.json");
$formConfig = json_decode($formConfigFile, true);

date_default_timezone_set('Etc/UTC');

try {
require './phpmailer/PHPMailerAutoload.php';

$recipients = $formConfig['recipientEmail'];

preg_match_all("/([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)/", $recipients, $addresses, PREG_OFFSET_CAPTURE);

if (!count($addresses[0])) {
die('MF001');
}

function getRemoteIPAddress() {
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
return $_SERVER['HTTP_CLIENT_IP'];

} else if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
return $_SERVER['HTTP_X_FORWARDED_FOR'];
}
return $_SERVER['REMOTE_ADDR'];
}

if (preg_match('/^(127\.|192\.168\.|::1)/', getRemoteIPAddress())) {
die('MF002');
}

$template = file_get_contents('rd-mailform.tpl');

if (isset($_POST['form-type'])) {
switch ($_POST['form-type']){
case 'contact':
$subject = 'A message from your site visitor';
break;
case 'subscribe':
$subject = 'Subscribe request';
break;
case 'order':
$subject = 'Order request';
break;
default:
$subject = 'A message from your site visitor';
break;
}
}else{
die('MF004');
}

if (isset($_POST['email'])) {
$template = str_replace(
array("<!-- #{FromState} -->", "<!-- #{FromEmail} -->"),
array("Email:", $_POST['email']),
$template);
}

if (isset($_POST['message'])) {
$template = str_replace(
array("<!-- #{MessageState} -->", "<!-- #{MessageDescription} -->"),
array("Message:", $_POST['message']),
$template);
}

// In a regular expression, the character \v is used as "anything", since this character is rare
preg_match("/(<!-- #\{BeginInfo\} -->)([^\v]*?)(<!-- #\{EndInfo\} -->)/", $template, $matches, PREG_OFFSET_CAPTURE);
foreach ($_POST as $key => $value) {
if ($key != "counter" && $key != "email" && $key != "message" && $key != "form-type" && $key != "g-recaptcha-response" && !empty($value)){
$info = str_replace(
array("<!-- #{BeginInfo} -->", "<!-- #{InfoState} -->", "<!-- #{InfoDescription} -->"),
array("", ucfirst($key) . ':', $value),
$matches[0][0]);

$template = str_replace("<!-- #{EndInfo} -->", $info, $template);
}
}

$template = str_replace(
array("<!-- #{Subject} -->", "<!-- #{SiteName} -->"),
array($subject, $_SERVER['SERVER_NAME']),
$template);

$mail = new PHPMailer();


if ($formConfig['useSmtp']) {
//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 = 3;

$mail->Debugoutput = 'html';

// Set the hostname of the mail server
$mail->Host = $formConfig['host'];

// Set the SMTP port number - likely to be 25, 465 or 587
$mail->Port = 25;

// Whether to use SMTP authentication
$mail->SMTPAuth = false;
$mail->SMTPSecure = "";
$mail->SMTPAutoTLS = false;

// Username to use for SMTP authentication
$mail->Username = $formConfig['username'];

// Password to use for SMTP authentication
$mail->Password = $formConfig['password'];
}

$mail->From = $_POST['email'];

# Attach file
if (isset($_FILES['file']) &&
$_FILES['file']['error'] == UPLOAD_ERR_OK) {
$mail->AddAttachment($_FILES['file']['tmp_name'],
$_FILES['file']['name']);
}

if (isset($_POST['name'])){
$mail->FromName = $_POST['name'];
}else{
$mail->FromName = "Site Visitor";
}

foreach ($addresses[0] as $key => $value) {
$mail->addAddress($value[0]);
}

$mail->CharSet = 'utf-8';
$mail->Subject = $subject;
$mail->MsgHTML($template);
$mail->send();

die('MF000');
} catch (phpmailerException $e) {
die('MF254');
} catch (Exception $e) {
die('MF255');
}

"

 

I've spent days with GoDaddy and the code provider, and have asked on other forums with no luck.  Maybe somebody here has an idea on what I can do to fix it?

1 REPLY 1
kgflyer
New

No answer. Similar issue. My php code for mail() worked fine. Coincidentally, with Godaddy's change-over to MS 365, my code no longer sends emails to clients. Tech's at Godaddy insist the issue is with my code which they are not allowed to comment on or discuss. I fail to see the logic there since my code has not changed. Very difficult time finding anything to resolve this online.