PDA

View Full Version : vBulletin 4 sends an e-mail even the input e-mail syntax is not valid e-mail


postcd
01-23-2022, 07:24 AM
Hello,
it appears that vBulletin 4.2.5 Alpha 2 sends an activation e-mail to newly registered user even the e-mail is wrong, like "FK@9711"
Please how to fix this inside the code?

I have found following in /includes/class_mail.php

function send($force_send = false)
{
// No recipient, abort
if (!$this->toemail)
{
return false;
}

// Check debug settings
if (!$force_send AND defined('DISABLE_MAIL'))
{
if (is_string(DISABLE_MAIL))
{
// check for a recipient whitelist
if (strpos(DISABLE_MAIL, '@') !== false)
{
// check if the address is allowed
if (strpos(DISABLE_MAIL, $this->toemail) === false)
{
return false;
}
}
else if (strpos(DISABLE_MAIL, '.log') !== false)
{
// mail is only logged
$this->log_email('DEBUG', DISABLE_MAIL);

return true;
}
else
{
// recipient not in the whitelist and not logging
return false;
}
}
else
{
// DISABLE_MAIL defined but isn't a string so just disable
if (strpos(DISABLE_MAIL, $this->toemail) === false)
{
return false;
}
}
else if (strpos(DISABLE_MAIL, '.log') !== false)
{
// mail is only logged
$this->log_email('DEBUG', DISABLE_MAIL);

return true;
}
else
{
// recipient not in the whitelist and not logging
return false;
}
}
else
{
// DISABLE_MAIL defined but isn't a string so just disable
return false;
}
}

// Send the mail
return $this->exec_send();
}


Maybe it is correct code to modify?

Here (https://stackoverflow.com/a/12026863/2504130) they mention following:

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
// invalid emailaddress
}

if (!checkdnsrr($domain, 'MX')) {
// domain is not valid
}

MX code may delay things (https://stackoverflow.com/a/1976925/2504130) so is questionable. Maybe better to validate on registration form?

/register.php contains:
// check for matching email addresses
if ($vbulletin->GPC['email'] != $vbulletin->GPC['emailconfirm'])
{
$userdata->error('emailmismatch');
}

can i append after that:
// check for valid email addresses
if (!filter_var($vbulletin->GPC['email'], FILTER_VALIDATE_EMAIL))
{
$userdata->error('to be valid e-mail');
}
When i do it, reg. form says "Could not find phrase 'to be valid e-mail'."
After using valid e-mail then no warning appear. Is this sufficing, or do You have idea how to fix it please?

z3r0
01-23-2022, 08:31 AM
A quick look at that section in vb4.2.5 (final) class_mail.php shows a lot less code, I haven't the time to check through and see what the differences are but a good start would be update from Alpha to the final release version.

postcd
06-08-2022, 05:20 AM
I will not update now. How to fix it please?

RichieBoy67
06-08-2022, 10:02 PM
Have you edited any of the core vbulletin files?

--------------- Added 1654809352 at 1654809352 ---------------

I will not update now. How to fix it please?

Back up your site first and then reupload those files fresh from vbulletin.