Avatar billede soeni05 Nybegynder
03. februar 2009 - 09:17 Der er 6 kommentarer og
1 løsning

PHP problem mail()

Hej eksperter..

Jeg har problem med afsendelse af mail fra php ved anvendelse af flg. kode:

<?php
$modtager = "modtager@mail.dk"; //Hvem skal have mailen?
$emne = "TEST"; //Emnefeltet

$besked = "<h1 style='background-color: #006699'>
            Dette er en TEST!
          </h1>";

$header  = "MIME-Version: 1.0" . "\r\n";
$header .= "Content-type: text/html; charset=iso-8859-1" . "\r\n";
$header .= "from:afs@mail.dk";

if(mail($modtager, $emne, $besked, $header)){ //Send!!
echo "TEST";
}
?>

Koden afvikles på egen linux server, hvor sendmail er sat op, og kan afsende mails... Nogle ider til hvad der kan være galt? Findes der en cfg til mail funktionen, hvor smtp skal op ?
Avatar billede jakobgt Nybegynder
03. februar 2009 - 10:00 #1
Kommer der en fejl eller lignende? Du kan evt. prøve at bruge nedenstående PHP klasse, som anvender en SMTP server direkte:

<?php
  /*
SMTPClient V 1.0 - A Simple SMTP Client
Description: Send Emails and show the SMTP ssss Response
Author: RubServer
  */

class SMTPClient
{

    function SMTPClient ($SmtpServer, $SmtpPort, $from, $to, $subject, $body)
    {

        $this->SmtpServer = $SmtpServer;
        $this->from = $from;
        $this->to = $to;

        $this->subject = $subject;
        $this->body = $body;


        if ($SmtpPort == "")
        {
            $this->PortSMTP = 25;
        }else{
            $this->PortSMTP = $SmtpPort;
        }


    }
    function SendMail ()
    {

        if ($SMTPIN = fsockopen ($this->SmtpServer, $this->PortSMTP))
        {
         
            fputs ($SMTPIN, "EHLO ".$HTTP_HOST."\r\n"); 
            $talk["hello"] = fgets ( $SMTPIN, 1024 );
                 
                     
            fputs ($SMTPIN, "MAIL FROM: <".$this->from.">\r\n"); 
            $talk["From"] = fgets ( $SMTPIN, 1024 ); 
            fputs ($SMTPIN, "RCPT TO: <".$this->to.">\r\n"); 
            $talk["To"] = fgets ($SMTPIN, 1024);
         
            fputs($SMTPIN, "DATA\r\n");
            $talk["data"]=fgets( $SMTPIN,1024 );
         
           
            fputs($SMTPIN, "To: <".$this->to.">\r\nFrom: <".$this->from.">\r\nSubject:".$this->subject."\r\n\r\n\r\n".$this->body."\r\n.\r\n");
            $talk["send"]=fgets($SMTPIN,256);
         
            //CLOSE CONNECTION AND EXIT ...
            fputs ($SMTPIN, "QUIT\r\n"); 
            $talk["quit"]=fgets($SMTPIN,256);
            fclose($SMTPIN);
        } 

        return $talk;


    }       
}
?>
Klassen er ret nem at bruges:
$mail = new SMTPClient("smtpServer",25,$from,$to, $subject, $body);
$resp = $mail->SendMail();
Avatar billede jakobdo Ekspert
03. februar 2009 - 10:02 #2
Er problemet bare at denne kode ikke virker, eller er der mail() der ikke virker generelt ?

Virker en kode ala dette f.eks.:

<?php
// The message
$message = "Line 1\nLine 2\nLine 3";

// In case any of our lines are larger than 70 characters, we should use wordwrap()
$message = wordwrap($message, 70);

// Send
mail('din@email.dk', 'My Subject', $message);
?>
Avatar billede soeni05 Nybegynder
03. februar 2009 - 10:16 #3
jakobgt/jakobdo --> Jeg får ingen fejl når jeg afvikler siden, men mailen kommer aldrig frem..

jakobgt --> Prøver lige din klasse!
Avatar billede soeni05 Nybegynder
03. februar 2009 - 10:58 #4
Ok .. return fra classen giver flg:

Array (
[hello] => 220 pfepa.post.tele.dk ESMTP
[From] => 501 Syntax: HELO hostname
[To] => 503 Error: send HELO/EHLO first
[data] => 503 Error: need MAIL command
[send] => 503 Error: need RCPT command
[quit] => 221 Error: I can break rules, too. Goodbye.
)
Avatar billede soeni05 Nybegynder
03. februar 2009 - 10:59 #5
Det virker nu .. rettede:

fputs ($SMTPIN, "EHLO ".$HTTP_HOST."\r\n"); 

til:

fputs ($SMTPIN, "EHLO mit.relay.dk \r\n");
Avatar billede soeni05 Nybegynder
03. februar 2009 - 11:00 #6
Smid lige et svar .. :D
Avatar billede jakobgt Nybegynder
03. februar 2009 - 15:11 #7
Svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester