Hej! Jag kan ingen PHP men av koden att döma bör väl alla kommandon mm vara rätt. I och med att övriga kommandon till SMTP servern tolkas rätt bör det ju inte heller vara några problem med fputs (ex att den skriver ut några specialtecken). Nästa steg är väl att testa autentiseringen för hand genom att köra telnet direkt till servern. Det kanske är så enkelt att det kontonamn och lösenord som används är fel av någon anledning? Ett annat alternativ kan vara att höja nivån på diagnostiskloggarna på servern, och se om du kan få reda på mer då. Finns som inställningar på serverobjektet i Exchange System Manager under fliken Diagnostic Logging. Hej! Tråkigt att det var ett webhotell. Gör det ju lite svårare att felsöka då. Men telnet kan du iofs alltid göra själv utan problem. Du kör "telnet mail.domain.com 25" för att öppna en telnet session till SMTP-servern. Sen skriver du bara dom kommandon som ditt skript skickar. De har ställt in säkerheten på max, så jag har inte testat telnet ens. Kolla gärna med webbhotellet om dom har några ASP-komponenter för att skicka epost. T.ex. så är w3JMail från svenska Dimac.net ganska vanlig. Väldigt enkelt att använda och så slipper du skriva SMTP-kommandon "för hand". Jo med ASP fixar jag att skicka mail (CDOSYS), men jag skulle vilja göra det med PHP eftersom resten av siten är byggd i PHP. Det var webhotellet som inte hade ordning på sina prylar, och tyvärr fixade de det inte heller. Så nu har jag ett par asp-sidor på min PHP-site.Problem med att logga in med Sockets på IIS-SMTP
Jag försöker fixa ett script för att kunna skicka mail via en websida. SMTP-servern kräver authentisering för att kunna skicka mail.
Jag får det att fungera med CDOSYS via en ASP-sida, men då resten av siten är kodad i PHP vill jag helst inte blanda.
Koden för att koppla upp är följande:
function openSocket($user, $pwd) {
$lb="\r\n";
$loc_host = "localhost"; //localhost
$smtp_host="127.0.0.1"; //server SMTP
// open socket
$fp = @fsockopen($smtp_host, 25);
if (!$fp) echo "<b>Error:</b> Cannot connect to ".$smtp_host."<br>";
print @fread($fp, 2048);
$command = "EHLO ".$loc_host.$lb;
@fputs($fp, $command);
print @fread($fp, 2048);
$command = "AUTH LOGIN".$lb;
@fputs($fp, $command);
print @fread($fp, 1024);
$command = base64_encode($user).$lb;
@fputs($fp, $command);
print @fread($fp, 1024);
$command = base64_encode($pwd).$lb;
@fputs($fp, $command);
print @fread($fp, 1024);
return $fp;
}
De meddelanden jag får tillbaka från SMTP-servern är följande:
<code>
220 mailserver.doman.nu Microsoft ESMTP MAIL Service,
Version: 6.0.3790.211 ready at Fri, 4 Feb 2005 09:45:03 +0100
250-mailserver.fxdata.nu Hello [127.0.0.1]
250-TURN
250-SIZE
250-ETRN
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-8bitmime
250-BINARYMIME
250-CHUNKING
250-VRFY
250-X-EXPS GSSAPI NTLM LOGIN
250-X-EXPS=LOGIN
250-AUTH GSSAPI NTLM LOGIN
250-AUTH=LOGIN
250-X-LINK2STATE
250-XEXCH50
250 OK
334 VXNlcm5hbWU6
334 UGFzc3dvcmQ6
535 5.7.3 Authentication unsuccessful.
</code>
Någon som har nåt tips?
Sv: Problem med att logga in med Sockets på IIS-SMTP
Sv:Problem med att logga in med Sockets på IIS-SMTP
Det är tyvärr inte min server och jag får inte tillgång till ssh/telnet heller :o(
Jag har bett webhotellet om hjälp också, men de är inte de allra bästa tyvärr.
Jag är relativt säker på att lösen och användare är rätt för de fungerar om jag kör asp och cdosys. dessutom är de så enkal att det inte ska bli fel.
/Per-ErikSv: Problem med att logga in med Sockets på IIS-SMTP
Om du nu däremot vet att det funkar via asp och cdosys kan du ju dock vara ganska säker på att du verkligen har rätt användarnamn och lösen. Mitt enda tips är då att av någon anledning så skickar fputs med något fuffenstecken, eller, så har du fel smtp server adress. Det går nämligen att sätta att man endast får relaya (vilket du i praktiken gör med ditt skript) om du ansluter till en viss ip-adress. Använder du 127.0.0.1 i ditt asp-skript också?
// JohanSv:Problem med att logga in med Sockets på IIS-SMTP
med cdosys låter jag faktiskt den själv hålla reda på vad localhost är så där anger jag inget utom att den sak använda localhost.
Tror det var den här raden som styrde det:
objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 1
Kommer inte ihåg exakt.
Det verkar luta åt att jag får lära mig ASP för att kunna skicka mailen...
Som tur är, är all kunskap bra kunskap...
/Per-Erik
Sv: Problem med att logga in med Sockets på IIS-SMTP
Sv:Problem med att logga in med Sockets på IIS-SMTP
/Per-ErikSv: Problem med att logga in med Sockets på IIS-SMTP
/Per-Erik