Hallo,

Had een script gevonden voor die mail checkt maar ik kan nu wel domain blocken maar niet wat voor de @ staat.
Ik heb gezocht hoe dat kan oplossen maar kon niet zo vinden. Via het systeem waar mail wordt verzonden typen somsige mensen mail voor @ niet goed en als dan op mail checker.net kijk bestaat die wel maar eigenlijk is die mail niet in gebruik.

Een voorbeeld iemand typt woongroepmeerkoet@...nl
Maar woongroep hoor er niet voor te staan hoe kan ik dat blocken via php.

Dit is het script dat ik gevonden heb en nu gebruikt.

<?php
/*
* This script was writed by Setec Astronomy - [email protected]
*
* This script is distributed under the GPL License
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* http://www.gnu.org/licenses/gpl.txt
*
*/
define ('DEBUG_OK', false);
class CCheckMail
{
var $timeout = 10;
var $domain_rules = array ("live.nl", "hotmail.nl");

function _is_valid_email ($email = "")
{ return preg_match('/^[.\w-]+@([\w-]+\.)+[a-zA-Z]{2,6}$/', $email); }

function _check_domain_rules ($domain = "")
{ return in_array (strtolower ($domain), $this->domain_rules); }

function execute ($email = "")
{
if (!$this->_is_valid_email ($email))
{ return false; }

$host = substr (strstr ($email, '@'), 1);

if ($this->_check_domain_rules ($host))
{ return false; }

$host .= ".";

if (getmxrr ($host, $mxhosts[0], $mxhosts[1]) == true)
{ array_multisort ($mxhosts[1], $mxhosts[0]); }
else
{
$mxhosts[0] = $host;
$mxhosts[1] = 10;
}
if (DEBUG_OK) { print_r ($mxhosts); }

$port = 25;
$localhost = $_SERVER['HTTP_HOST'];
$sender = 'info@' . $localhost;

$result = false;
$id = 0;
while (!$result && $id < count ($mxhosts[0]))
{
if (function_exists ("fsockopen"))
{
if (DEBUG_OK) { print_r ($id . " " . $mxhosts[0][$id]); }
if ($connection = fsockopen ($mxhosts[0][$id], $port, $errno, $error, $this->timeout))
{
fputs ($connection,"HELO $localhost\r\n"); // 250
$data = fgets ($connection,1024);
$response = substr ($data,0,1);
if (DEBUG_OK) { print_r ($data); }

if ($response == '2') // 200, 250 etc.
{
fputs ($connection,"MAIL FROM:<$sender>\r\n");
$data = fgets($connection,1024);
$response = substr ($data,0,1);
if (DEBUG_OK) { print_r ($data); }

if ($response == '2') // 200, 250 etc.
{
fputs ($connection,"RCPT TO:<$email>\r\n");
$data = fgets($connection,1024);
$response = substr ($data,0,1);
if (DEBUG_OK) { print_r ($data); }

if ($response == '2') // 200, 250 etc.
{
fputs ($connection,"data\r\n");
$data = fgets($connection,1024);
$response = substr ($data,0,1);
if (DEBUG_OK) { print_r ($data); }

if ($response == '2') // 200, 250 etc.
{ $result = true; }
}
}
}

fputs ($connection,"QUIT\r\n");
fclose ($connection);
if ($result) { return true; }
}
}
else
{ break; }
$id++;
}
return false;
}
}
?>
Dat zijn wel opties, maar het ligt echt aan de organisatie of ze daar in willen of kunnen investeren. En groot bedrijf zou het adres wel geblokkeerd/doorgestuurd hebben op hun mailserver, maar bij een kleine organisatie wordt het lastig.

Het lijkt mij in geen enkele organisatie de bedoeling om inefficiënt werken te bevorderen.

Blijkbaar heeft topicstarter bovenstaande functionaliteit nodig om door mailtjes heen te ploeteren maar in feite is het kwaad dan al geschied. Los daarvan zorgt alle verkeerd bezorgde mail of te ruim ingestelde filters (of helemaal geen filters) voor ruis en dit kan op den duur ook nog voor andere problemen zorgen (terugvinden van serieuze mail tussen spam, diskruimte etc).

Dit zou voor mij een signaal zijn om het roer om te gooien, niet om op dezelfde wijze verder te gaan en deze (m.i. verkeerde) werkhouding verder te promoten. Zo van "maakt niet uit wat je invult voor de @, wij vissen je mailtje wel uit een berg met zooi".

Daarnaast, er zijn mogelijk legio redenen waarom een verkeerd e-mailadres wordt gebruikt. Typefout, verouderd adres, whatever. Tijd om dat op te lossen door contactinformatie beter te communiceren, of door mail gewoon te retourneren. Laat foute dingen gewoon fout gaan.

Vergelijk het met de normale post - als iemand een niet bestaand adres als bestemming opgeeft hoef je ook niet te verwachten dat het bij de juiste persoon aankomt, waarom zou je dat bij e-mail dan wel verwachten?

Bij kleine organisaties lijkt het mij juist des te belangrijker dat dit soort zaken gewoon goed geregeld zijn?

EDIT: om terug te koment op de oorspronkelijke vraagstelling:
Maar woongroep hoor er niet voor te staan hoe kan ik dat blocken via php.
Niet; PHP is hoogstwaarschijnlijk niet de juiste plaats om dit probleem op te lossen.
Thomas van den Heuvel op 18/01/2018 22:31:58

EDIT: om terug te koment op de oorspronkelijke vraagstelling:
Maar woongroep hoor er niet voor te staan hoe kan ik dat blocken via php.
Niet; PHP is hoogstwaarschijnlijk niet de juiste plaats om dit probleem op te lossen.


Lijkt mij inderdaad gewoon een mailserver probleem.
Of natuurlijk gewoon zorgen dat je gebruikers een beetje intelligent zijn.
Ik heb een systeem waar mensen een bestelling kunnen doen. Die bestelling is voor producten die in het magazijn ligt. Mijn vader beheerd dat magazijn. Het is in verzorging te huis.
Mensen daar weten soms hun mail niet zoals woongroepen denken dat hun mail is woongroep(naam)@..nl maar ze moet geen woongroep er voorzetten als dan de bestelling doen kijk ik in mijn mail box een mail van mail server van het bedrijf dat het mailtje niet kan bezorgen.

En ik wilde daarvan af want wil graag dat ze achter komen dat ze verkeerd invullen. Daarom dacht ik is niet handig om het te blokken. In dit script zat al blokkade voor domains want die typen ze soms zelf ook verkeerd.

Op moment ben ik aan het kijken als me lukt om met de functie strpos het te kunnen blocken wat - Ariën - al heeft aangeraden.
Volgens mij begrijp ik de situatie.Het is is de tegenpartij de hun mailadres fout invoert.

Een oplossing in PHP is mogelijk, maar ik zou die organisatie dan liever duidelijk maken dat zij steeds verkeerde mail-adressen invullen, en of zij dit in een mailing aan hun werknemers kunnen benadrukken.

Ik zou dan zelf hoogstens de melding op je formulier verduidelijken dat mensen "hun JUISTE mailadres invoeren". Een blacklist met bepaalde namen kan wel, maar wat als er uiteindelijk wel een aanvraag komt van een mailadres met een alias met daarin het woord 'woongroep'. Dan schuif je het probleem door naar de andere bestellende partij.

Dus mijn advies: Draai de oplossing teug, en pak het bij de bron aan.

Je zou misschien zelf er een klantensysteem aan kunnen hangen, waarbij ze moeten inloggen. Uiteraard hoeven ze bij het registratieproces enkel hun mail te bevestigen.
Als ik het block kom er een scherm met dat verkeerd is ingevuld.
De mensen daar weten mail niet want ze allemaal met outlook werken en het uit adressen boek halen.
Het zou dan wel mogelijk zijn om het om te draaien en dan een adressen boek in het systeem te bouwen en dat ze nooit meer verkeerd kunnen doen.
Of zorg voor een registratie-proces, zodat je de gegevens van de klant steeds weer weet.
... en de klanten in het geheel geen e-mailadressen hoeven te weten noch in te vullen.

Dit kan mogelijk ook een strategie zijn: als er ergens de kans bestaat dat iemand iets verkeerd in kan invullen: bied iemand die kans dan gewoon niet, bijvoorbeeld door hun een beperkte selectie van vaste waarden te geven of leg deze waarden ergens vast en koppel deze aan accounts van de applicatie voor het doen van bestellingen.

Reageren