[PHP] Email adres checken vanaf shell

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • TA2
  • Registratie: Februari 2002
  • Laatst online: 30-09-2022
Hi,

Ik heb een hele grote berg met email adressen (duizenden) waar een nieuwsbrief naar toe moet. Nou is alleen het vervelende dat er ook een hoop email adressen tussen zitten die niet kloppen.
Ik heb al een script gevonden die via een fsockopen een smtp connectie maakt om te checken of het adres bestaat. Dit werkt allemaal perfect alleen nu het probleem: dit script draait alleen via een webbrowser en niet via de shell.
Ik heb een linux redhad server waar ik dat mail script laat draaien die alle mensen een nieuwsbrief stuurd en daar wil ik het smtp check script tussen hebben.
Dus via een browser werkt t wel maar via php vanaf de server kan i geen verbinding maken naar de smtp server waardoor alle mail adressen fout zijn.

Kan iemand mij vertellen wat ik moet doen om die fsockopen functie te kunnen draaien vanaf de server?

Alvast bedankt,
Danny.

Acties:
  • 0 Henk 'm!

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

• Post relevant deel van script
• Set error_reporting op E_ALL
• Welke foutmelding krijg je ?
• Met welk commando roep je het script aan?

[ Voor 19% gewijzigd door RedRose op 02-11-2005 15:12 ]

Sundown Circus


Acties:
  • 0 Henk 'm!

  • TA2
  • Registratie: Februari 2002
  • Laatst online: 30-09-2022
RedRose schreef op woensdag 02 november 2005 @ 15:11:
• Post relevant deel van script
• Set error_reporting op E_ALL
• Welke foutmelding krijg je ?
• Met welk commando roep je het script aan?
deze regel gebruik ik om de connectie te maken:
fsockopen ( $ConnectAddress, 25, $errno, $errstr, 30)

en dit is de error die eruit komt:
errno:97 errstr:Address family not supported by protocol

en dit geeft php:
PHP Warning: fsockopen(): php_network_getaddresses: getaddrinfo failed: Name or service not known
Warning: fsockopen(): php_network_getaddresses: getaddrinfo failed: Name or service not known

en zo start ik t script:
php mailcheck.php

waar zet ik dit aan?
Set error_reporting op E_ALL

Acties:
  • 0 Henk 'm!

  • TA2
  • Registratie: Februari 2002
  • Laatst online: 30-09-2022
Deze gebruik ik trouwens voor dat script maar die doet t ook niet:
getmxrr($Domain, $MXHost)

Acties:
  • 0 Henk 'm!

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

Je zal zelf even even moeten googlen op die foutmelding, of de maker van dat script moeten mailen denk ik. :)

Sundown Circus


Acties:
  • 0 Henk 'm!

  • Madcat
  • Registratie: Juli 2002
  • Niet online
dit is de functie die ik gebruik bij php:

function checkmail_mx ($email) {
if (eregi("^[_\.0-9a-z-]+@([0-9a-z][-0-9a-z\.]+)\.([a-z]{2,3}$)", $email, $check)) {
if (getmxrr($check[1].".".$check[2], $temp)) {
return true;
} else {
//echo "<div class=\"error\">Error: E-Mail domain ($check[1].$check[2]) does not exist.</dev>\n";
return false;
}
} else {
return false;
}

oh ja en voor het versturen kan je de volgende code gebruiken, erg handig om een mail te sturen naar duizend mensen, zonder dat ze van elkaar het mail adress kunnen zien.
$subject = "een test mailtje";
$message = "hierbij de body van de test"
$to_name = "de test";
$to_email = "test@testme.com"
$from_name = "de test 2";
$from_email = "test2@testme.com"

$headers = "From: $from_name <$from_email>\n";
$headers .= "Reply-To: <$from_email>\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: text/plain; charset=iso-8859-1\n";
$headers .= "Content-Transfer-Encoding: 7bit\n";
$headers .= "X-Priority: 3\n";
$headers .= "X-Mailer: PHP ".phpversion();
$result = mail("$to_name<$to_email>", $subject, $message, $headers);


maar je moet denk ik wel php.ini hebben geconfigureerd voor mail gebruik

[ Voor 46% gewijzigd door Madcat op 02-11-2005 15:37 ]


Acties:
  • 0 Henk 'm!

  • TA2
  • Registratie: Februari 2002
  • Laatst online: 30-09-2022
Nou het leuke is dus dat i via een browser perfect werkt maar als ik precies dat zelfde script draai via de shell doet getmxrr en fsockopen t niet.

Dit is het script:

<?php
$Email="naam@maildomain.nl";

list($User,$Domain) = split("@",$_POST[email]);

if ( getmxrr($Domain, $MXHost) ) {
$ConnectAddress = $MXHost[0];
} else {
$ConnectAddress = $Domain;
}

echo "CA:".$ConnectAddress."<br>";
$Connect = fsockopen ( $ConnectAddress, 25, $errno, $errstr, 30);
if ($Connect) {
echo "Connected<br>";
if (ereg("^220", $Out = fgets($Connect, 1024))) {
fputs ($Connect, "HELO $HTTP_HOST\r\n");
$Out = fgets ( $Connect, 1024 );
fputs ($Connect, "MAIL FROM: <{$Email}>\r\n");
$From = fgets ( $Connect, 1024 );
fputs ($Connect, "RCPT TO: <{$Email}>\r\n");
$To = fgets ($Connect, 1024);
fputs ($Connect, "QUIT\r\n");
fclose($Connect);
if (!ereg ("^250", $From) || !ereg ( "^250", $To )) {
echo "Server rejected address.<br>";
} else {
echo $Email."appears to be valid.<br>";
}
echo $From."<br>";
} else {
echo "No response from server.<br>";
}
} else {
echo "Can not connect E-Mail server.<br>";
}
?>

Acties:
  • 0 Henk 'm!

  • Madcat
  • Registratie: Juli 2002
  • Niet online
waarom doe je zo moeilijk om te achterhalen of een mail adress geldig is of niet.
als de mensen een verkeerd e-mail adress hebben ingevuld is dat waarschijnlijk met een reden.
en op deze manier belast je de mail servers 2 keer.

gewoon controleren of het domein bestaat, en dan versturen.. alles wat niet goed is, dat keurt de mail server af. en daarvan krijg je afhankelijk van de server nog een reply van.

maargoed heb je bij $ConnectAddress de mail server van je provider ingevuld?
waarschijnlijk is dat het probleem

[ Voor 13% gewijzigd door Madcat op 02-11-2005 15:44 ]


Acties:
  • 0 Henk 'm!

  • TA2
  • Registratie: Februari 2002
  • Laatst online: 30-09-2022
een_madcat schreef op woensdag 02 november 2005 @ 15:40:
waarom doe je zo moeilijk om te achterhalen of een mail adress geldig is of niet.
als de mensen een verkeerd e-mail adress hebben ingevuld is dat waarschijnlijk met een reden.
en op deze manier belast je de mail servers 2 keer.

gewoon controleren of het domein bestaat, en dan versturen.. alles wat niet goed is, dat keurt de mail server af. en daarvan krijg je afhankelijk van de server nog een reply van.
Maar het probleem is dat het er 170.000 zijn waarvan er een hoop niet aankomen, wat dus inhoud dat die in een mailqueue komen, die allemaal staan te wachten en blijven proberen. Ook de var partitie loopt daardoor lekker vol. En wat eigenlijk nog t grootste probleem is is dat we dus op een blacklist komen als spammers wat niet de bedoeling is want t gaat om een nieuwsbrief.

Daarom wil ik eerst checken of i wel bestaat .. zo niet .. weg met het email adres.

Acties:
  • 0 Henk 'm!

  • TA2
  • Registratie: Februari 2002
  • Laatst online: 30-09-2022
een_madcat schreef op woensdag 02 november 2005 @ 15:40:
waarom doe je zo moeilijk om te achterhalen of een mail adress geldig is of niet.
als de mensen een verkeerd e-mail adress hebben ingevuld is dat waarschijnlijk met een reden.
en op deze manier belast je de mail servers 2 keer.

gewoon controleren of het domein bestaat, en dan versturen.. alles wat niet goed is, dat keurt de mail server af. en daarvan krijg je afhankelijk van de server nog een reply van.

maargoed heb je bij $ConnectAddress de mail server van je provider ingevuld?
waarschijnlijk is dat het probleem
Hey toch bedankt.
ik ben erachter dat alleen de getmxrr functie niet werkt.
deze haalt namelijk het smtp server adres op, bv: mx1.hotmail.com

nu moet ik dus iets vinden wat het adres van de smtp server ophaald ..

Acties:
  • 0 Henk 'm!

  • Solopher
  • Registratie: December 2002
  • Laatst online: 11-09 14:55
offtopic:
Code tags? nooit van gehoord.. kun je dat eten?

Acties:
  • 0 Henk 'm!

  • Madcat
  • Registratie: Juli 2002
  • Niet online
ophalen?
gewoon zelf invullen.. waarschijnlijk mail.jouwprovider.nl of smtp.jouwprovider.nl of mx.jouwprovider.nl
Pagina: 1