Web-TorMedlem sedan nov. 200011 794 inlägg Jag håller på med en hemsida åt en kille men har lite strul med PHP:s mail-funktion på hans webbhotell.
Mailfunktionen är opålitlig och från början trodde jag att det var något kodfel men nu har jag testat på flera andra webbhotell men inte stött på några problem.
Förutom att den ibland hoppar över att skicka vissa mail (c:a 1 av 100) så har den stora problem att skicka till adresser med ett tecken (typ 1@webbsite.com). Här "försvinner" c:a hälften av alla mail. Jag får inte några felmeddelanden.
Webbhotellet garantera så klart att det inte är något fel på deras mailsystem. :(
Någon som varit med om nåt liknande eller har några tips på lösning?
cefalkMedlem sedan juni 2000283 inlägg Om du vet vilket klockslag du skickar mailen så kan ju webbhotelet kolla i sina loggar att mailen har skickats.
Web-TorMedlem sedan nov. 200011 794 inlägg Mailen skickas inte.
Finns det nåt alternativ till mail() eller kan man använda den på något annat sätt än:
<?
mail($to, $subject, $text, $header);
?>
EitrazMedlem sedan sep. 2002385 inlägg Du kan ju alltid köra manuellt till mail-servern. Då kan du ju skriva ut lite info här o där (alltid bra) när du testar det.
Här är lite gräsligt hopslirad kod också..
$from_name = "Mitt namn";
$from_email = "minmail@domain.com";
$to_name = "Ditt namn";
$to_email = "dinmail@nåndomain.com";
$subject = "Tjaba";
$message = "Hej hej";
$rcv = "";
$connect = fsockopen("mail.domain.com", "25", $errno, $errstr, 30) or die("Couldn't connect to mail server!");
$rcv .= fgets($connect, 1024);
fputs($connect, "HELO mail.domain.com\r\n");
$rcv .= fgets($connect, 1024);
fputs($connect, "MAIL FROM:$from_email\r\n");
$rcv .= fgets($connect, 1024);
fputs($connect, "RCPT TO:$to_email\r\n");
$rcv .= fgets($connect, 1024);
fputs($connect, "DATA\r\n");
$rcv .= fgets($connect, 1024);
fputs($connect, "Subject: $subject\r\n");
fputs($connect, "From: $from_name <$from_email>\r\n");
fputs($connect, "To: $to_name <$to_mail>\r\n");
fputs($connect, "\r\n");
fputs($connect, stripslashes($message)."\r\n");
fputs($connect, ".\r\n");
$rcv .= fgets($connect, 1024);
fputs($connect, "RSET\r\n");
$rcv .= fgets($connect, 1024);
fputs ($connect, "QUIT\r\n");
$rcv .= fgets ($connect, 1024);
fclose($connect);
i det här scriptet (som jag hoppas funkar) så kan du ju i slutet skriva ut hela $rcv, men är du bara intresserad om mottagaren funkar eller nåt så kan du ju skriva ut det "inne i koden"... aja.. du fattar nog ;)
fördelen med att göra det manuellt är ju att du kan ha socketen öppen hela tiden o bara mata på med brev utan att stänga ner den (om du ska skicka många mail vill säga)
Web-TorMedlem sedan nov. 200011 794 inlägg Detta var nytt för mig - ska testa i helgen när jag har tid över.
Tack!
SPiNMedlem sedan mars 20005 832 inlägg Lite tankar ang. socket-kopplingen mot mailservern:
Försök att använda så få fputs() som möjligt, t.ex. följande:
fputs($connect, "Subject: $subject\r\n");
fputs($connect, "From: $from_name <$from_email>\r\n");
fputs($connect, "To: $to_name <$to_mail>\r\n");
fputs($connect, "\r\n");
fputs($connect, stripslashes($message)."\r\n");
fputs($connect, ".\r\n");
Går att lägga allt som ska skickas i en buffer istället och skicka en gång, för att öka prestandan.
Bör inte det här ta mycket längre tid när man gör det i PHP? Bästa vore att skapa en extension till PHP, om du, Web-Tor, vill tänka prestandamässigt ( Det kanske inte är ett jobb? )
MungoMedlem sedan jan. 2000376 inlägg Själv använder jag aldrig mail() längre utan den här klassen:
http://nuke-modules.gading.de/phpxref/whatsnews/includes/class.smtp.inc.php.source.html
Den tillåter helt enkelt lite mer kontroll och så. Funkar prima för mig!