18. maj 2005 - 18:32Der er
23 kommentarer og 1 løsning
Jeg har en PHP mailform, der ikke virker på vores linux server
Jeg har flyttet mit domæne(www.hoffmannart.dk) til vores egen server gennem gratisDNS.dk/MXhotel.dk. men min mailform virker ikke på den nye server. kun hvis man bruger mailserverens egen mail(@ab-kilholm.dk i PHP scriptet. kan serveren være sat forkert op?
du siger din egen server - er den en linux server? - normalt er "mail" kommandoen i php wrapper til en underliggende sendmail... scriptet ser udmiddelbart rigtig nok ud
Det lyder nu snare som om at mailsereveren er sat korrekt op. Hvis du kunne bruge en mail server til at sende mails, som ser ud til at komme fra en vilkårlig anden afsender, så kunne du jo bruge dette til at afsende det ondeste spam.
Ikke desto mindre er der mange mailservere derude som netop tillader dette. Det skyldes som regel at serveren er sat op af en amatør og at mail-server softwaren leveres med nogle tåbelige standard-konfigurationer. Men dette er altså heldigvis ikke tilfældet for jeres.
En mulig løsning på dit problem kunne muligvis være at indsætte mailserverens egen adresse som From og sætte din egen mailadresse som Reply-to.
if(mail($to, $subject, $msg, $headers)) { echo "Tak for din kommentar."; exit; } else { echo "En fejl opstod, og mailen blev ikke sendt."; exit; } } } ?>
Af sikkerhedshensyn er der blokeret for udgående mail-trafik (SMTP) over port 25. Det betyder at alt udgående post skal sendes gennem BoligNET-serveren ved at anvende SMTP-serveren "mail" - også selvom du anvender en mailadresse udenfor foreningen.
Hvis jeg afprøver din formular får jeg beskeden "Tak for din kommentar". Mail systemet mener øjensynligt ikke selv at der er noget problem. Kommer mails bare ikke frem eller hvad?
I dit tidligere oprettede spm. http://www.eksperten.dk/spm/618686 skriver du noget om at SMTP skal sættes til 10.0.0.1 Hvis ikke det er gjort i php.ini, kan du prøve med:
<?php ini_set('SMTP', "10.0.0.1"); .....resten af script
Jeg er stensikker på det ikke er et problem med port 25 på serveren, da php's mail direkte piper mail til den mail-server som nu engang er installeret (typisk sendmail, postfix eller qmail), derfor kommer der ingen fejl. Mao mailserveren på linuxmaskinen kan/vil ikke aflevere mailen udadtil ..
Desværre kan man ikke angive en smtp-server i php's mail kommando - det er kun på en windowsserver (derfor tror jeg heller ikke ini_set('SMTP', '...') vil have nogen effekt) - det er sysadm som skal konfigge den mailserver som kører på linuxmaskinen
faktisk har jenslyn_s i dette spørgsmål : http://www.eksperten.dk/spm/618769 - lavet en glimrende smtp_client class som du kan bruge til at omgås problemet .. der kan du nemlig selv angive hvilken smtphost du ønsker at kalde - og du kan bruge den du får henvist af din sysadm.
jeg kan da prøve - det du skal vide er hvilken smtp-server du skal bruge .. du skriver man skal bruge smtp-serveren "mail" ... vi er dog nødt til at vide, om "mail" refererer til ip-adressen: 10.10.0.1 - eller vi blot kan bruge denne ip-adresse direkte .. eller skal forbinde til en ekstern smtp-server (f.eks smtp.ditogdat.dk)
Det skal direkt tro jeg til 10.10.0.1... min sysadmin skriver:
Hej Kim,
Det eneste du skal vide er at SMTP-serveren hedder 10.10.0.1 (prøv evt. 127.0.0.1) og kører på port 25. Det er kun udgående SMTP gennem serveren der er lukket.
Det er som bekendt en Linux-server - måske er det årsagen til at nogle funktioner ikke fungerer...?
Prøv at sætte denne stump kode ind i en php-fil - bemærk at jenslyns kode logger til en fil han kalder 'smtp_client.log' - hvis ikke du vil det kan du fjerne alle kald til $this->elog(...); ... jeg har ikke forsøgt at køre denne kode, men jeg har lagt din egen kode ind i scriptet og ændret en smule nederst... lad høre hvad du finder ud af:
<?php
class smtp_client { var $connection; var $server; var $elog_fp; var $log_file='smtp_client.log'; var $do_log=true;
// default constructor function smtp_client($server='smtp1.b-one.net') { //din udbyders smtp server if (!$server) $this->server="localhost"; else $this->server=$server;
$this->connection = fsockopen($this->server, 25); if ($this->connection <= 0) return 0;
Det ser ud til at virker:-) jeg kan modtage mail nu. men der kom en fejl, pga. log halløj, og der manglede lige "tak for beskeden" koden... men nu virker det:-)
Du skal have tusind tak for dig hjælp, og god weekend!
koden ser sådan ud:
<?php
class smtp_client { var $connection; var $server; var $elog_fp;
// default constructor function smtp_client($server='10.10.0.1') { //din udbyders smtp server if (!$server) $this->server="localhost"; else $this->server=$server;
$this->connection = fsockopen($this->server, 25); if ($this->connection <= 0) return 0;
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.