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?
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?