Avatar billede riversen Nybegynder
30. september 2003 - 13:02 Der er 23 kommentarer og
2 løsninger

smtp server til mail()

hvor skal jeg sætte det? Har det til at virke i windows, men den vil ikke på min debian installation.
Avatar billede fangel Nybegynder
30. september 2003 - 13:03 #1
i PHP.ini tror jeg man kan... ellers kan du bare skrive din egen SMTP class ;)

Morten
Avatar billede maxsten Nybegynder
30. september 2003 - 13:04 #2
PHP.ini

sller skriv din egen SMTP klasse.

Maxsten
Avatar billede riversen Nybegynder
30. september 2003 - 13:05 #3
men hvor i php.ini

[mail function]
; For Win32 only.
SMTP = localhost

for det er vel ikke her? og har prøvet uden held, hvor jeg sætter den til vip.cybercity.dk
Avatar billede fangel Nybegynder
30. september 2003 - 13:08 #4
ok - så må du skrive din egen SMTP klasse / funktion - kan godt guide dig hvis du vil (over MSN?)

Maxsten -> flot - du kan kopiere mit svar !

Morten
Avatar billede riversen Nybegynder
30. september 2003 - 13:15 #5
så det er kun i windows, det er så bekvemt ? du kan se min msn adresse på ebruger
Avatar billede fangel Nybegynder
30. september 2003 - 13:19 #6
har addet dig (undskyld for den fuckede msn email)

Morten
Avatar billede googolplex Novice
30. september 2003 - 16:03 #7
Her er en smtp-klasse jeg selv bruger:

<?php


// smtp_client class -------------------------------------------------------
// use:
//        $smtp= new smtp_client();
//        $smtp->email($from, $to[0], $to_name[0], $header[0], $subject[0], $body[0]);
//        $smtp->email($from, $to[1], $to_name[1], $header[1], $subject[1], $body[1]);
//        $smtp->send();

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 = '') {
        if (!$server) {
            $this->server = 'localhost';
        } else {
            $this->server = $server;
        }
       
        $this->connection = fsockopen($this->server, 25);
       
        if ($this->connection <= 0) {
            return 0;
        }

        $this->elog(fgets($this->connection, 1024));
        $this->elog("HELO xyz\r\n", 1);
        fputs($this->connection, "HELO xyz\r\n");
        $this->elog(fgets($this->connection, 1024));
    }

    function email($from_mail, $to_mail, $to_name, $header, $subject, $body) {
        if ($this->connection <= 0) {
            return 0;
        }
   
        $this->elog("MAIL FROM:$from_mail", 1);
        fputs($this->connection, "MAIL FROM:$from_mail\r\n");
        $this->elog(fgets($this->connection, 1024));

        $this->elog("RCPT TO:$to_mail", 1);
        fputs($this->connection, "RCPT TO:$to_mail\r\n");
        $this->elog(fgets($this->connection, 1024));

        $this->elog("DATA", 1);
        fputs($this->connection, "DATA\r\n");
        $this->elog(fgets($this->connection, 1024));
   
        $this->elog("Subject: $subject", 1);
        $this->elog("To: $to_name", 1);
        fputs($this->connection, "Subject: $subject\r\n");
        fputs($this->connection, "To: $to_name\r\n");

        if ($header) {
            $this->elog($header, 1);
            fputs($this->connection, "$header\r\n");
        }

        $this->elog('', 1);
        $this->elog($body, 1);
        $this->elog('.', 1);
        fputs($this->connection, "\r\n");
        fputs($this->connection, "$body \r\n");
        fputs($this->connection, ".\r\n");
        $this->elog(fgets($this->connection, 1024));

        return 1;
    }

    function send() {
        if ($this->connection) {
            fputs($this->connection, "QUIT\r\n");
            fclose($this->connection);
            $this->connection = 0;
        }
    }

    function close() {
        $this->send();
    }

    function elog($text, $mode = 0) {
        if (!$this->do_log) {
            return;
        }

        /* Open file */
        if (!$this->elog_fp) {
            if (!($this->elog_fp = fopen($this->log_file, 'a'))) {
                return;
            }
            fwrite($this->elog_fp, "\n-------------------------------------------\n");
            fwrite($this->elog_fp, " Sent " . date("Y-m-d H:i:s") . "\n");
            fwrite($this->elog_fp, "-------------------------------------------\n");
        }

        /* Write to log */
        if (!$mode) {
            fwrite($this->elog_fp, "    $text\n");
        } else {
            fwrite($this->elog_fp, "$text\n");
        }
    }
}

?>
Avatar billede fangel Nybegynder
30. september 2003 - 16:21 #8
har selv snakket med riversen over MSN - og har givet ham dette link

http://mfa.ath.cx/LIB/smtpMail.phps

nogle funktioner jeg engang har skrevet ;) (link til min workstation - ikke oppe 24/7)

Morten
Avatar billede riversen Nybegynder
02. oktober 2003 - 13:40 #9
dea_pg: læg lige et svar også
Avatar billede fangel Nybegynder
02. oktober 2003 - 17:11 #10
svaa'r ;)

Morten
Avatar billede riversen Nybegynder
02. oktober 2003 - 20:51 #11
dygtiiiiiig
Avatar billede googolplex Novice
04. oktober 2003 - 10:18 #12
dea_pg: Kan du ikke lige smide smtpMail.phps her, så kan vi også se dine kreationer når din workstation er nede :-)
Avatar billede fangel Nybegynder
05. oktober 2003 - 14:18 #13
googolplex -> hmmm, skal du det nu være nødvendigt ;) - den er ellers oppe ret ofte (alle hverdage fra ca 15:00 til 22:00 - og rigtig længe om weekenderne ;)

men hvis I virkelig ikke kan det må I godt få den...

Morten
Avatar billede googolplex Novice
05. oktober 2003 - 14:45 #14
dea_pg:

Ja, nu har jeg tjekket 4-5 gange og den har da ikke været oppe endnu :P

Du må da meget gerne smide den ;)
Avatar billede fangel Nybegynder
05. oktober 2003 - 18:00 #15
(har været andet steds denne weekend) - koden er som følger

---
<?php

/*
;  version:          1.0
;  sidst ændret:    9/3-03
;  ændret af:        Morten Fangel
;  beskrivelse:      indeholder funktionerne
;                        connectMail([SMTP server)
;                        sendMail(str rcpt, str text, [str subject, str from])
;                        closeMail(NULL)
;                        saveLog(str filename, [str method])
;  Licens            GPL
*/

$log = "";
$socket = "";

function connectMail($smtpServer="smtp.mail.dk"){
  global $log, $socket;
  $socket = fsockopen($smtpServer,25);
  $log = "<html><head><title>Log over afsendning af mail</title></head><body><h1>Log over afsendning af mail</h1>";
  if($socket){
    fputs($socket, "HELO xyz\n");
    $log .= fgets($socket, 2000) . "<br>";
    $log .= fgets($socket, 2000) . "<br>";
    return true;
  }
  else{
    $log .= "Could not connect!";
    return false;
  }
}

function sendMail($rcpt, $text, $subject="TestMail", $from="mailrobot@yourserver.tld"){
  global $log, $socket;

  $command = "MAIL FROM: " . $from . "\n";
  fputs($socket, $command);
  $log .= fgets($socket, 2000) . "<br><hr><br>";

  $command = "RCPT TO: " . $rcpt . "\n";
  fputs($socket, $command);
  $log .= fgets($socket, 2000) . "<br>";

  $command = "DATA\n";
  fputs($socket, $command);
  $log .= fgets($socket, 2000) . "<br>";
  fputs($socket, "To: " . $rcpt . "\n");
  fputs($socket, "From: " . $from . "\n");
  fputs($socket, "Subject: " . $subject . "\n");
  fputs($socket, "\n");
  fputs($socket, $text . "\n");
  fputs($socket, ".\n");
  $log .= fgets($socket, 2000) . "<br>";
  return true;
}

function closeMail(){
  global $log, $socket;
  fputs($socket, "QUIT\n");
  $log .= fgets($socket, 2000) . "<br><hr><br>";
  fclose($socket);
  return true;
}

function saveLog($filename, $method="w"){
  global $log;
  $fil = fopen($filename, $method);
  fputs($fil, $log);
  fclose($fil);
  return true;
}

/* EXAMPLE
connectMail("my.smtp.com");
sendMail("john@doe.com", "dette er en test amil", "testmail", "from@mit-domain.dk");
sendMail("foo@bar.com", "testen af alle tests", "testen", "fra@mit-domaine.dk");
closeMail();
saveLog("myMailLog.log");
*/

?>
---

Morten
Avatar billede googolplex Novice
05. oktober 2003 - 18:17 #16
Takker :)
Avatar billede riversen Nybegynder
11. oktober 2003 - 09:53 #17
dea_pg: har en situation, hvor din mail funktioner fejler...måske du evt. lige kan hoppe på msn.
Avatar billede fangel Nybegynder
11. oktober 2003 - 10:07 #18
skulle lige spise morgenmad... ;) er på nu... (som du har opdaget)
Avatar billede fangel Nybegynder
11. oktober 2003 - 10:27 #19
har lige 'sniffet' min egen mail afsendelse...

mail sendt fra morten_fangel@tdcadsl.dk
til: spam@riversen.dk
via: smtp.mail.dk

!> = fra mig
< = fra server

---
< 220 pfepc.post.tele.dk ESMTP
!> EHLO tdcadsl.dk
< 250-pfepc.post.tele.dk
< 250-PIPELINING
< 250-SIZE 10000000
< 250-VRFY
< 250-ETRN
< 250-XVERP
< 250 8BITMIME
!> MAIL FROM:<morten_fangel@tdcadsl.dk>
< 250 Ok
!> RCPT TO:<spam@riversen.dk>
< 250 Ok
!> DATA
> 354 End data with <CR><LF>.<CR><LF>
!> Message-ID: <3F87BC13.3090206@tdcadsl.dk>Date: Sat, 11 Oct 2003 10:15:15 +0200      // kan undværes
!> From: Morten Fangel <morten_fangel@tdcadsl.dk>
!> User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5b) Gecko/20030827        // kan undværes
!> X-Accept-Language: en-us, en                                                        // kan undværes
MIME-Version: 1.0
!> To:  spam@riversen.dk
!> Subject: test mail...
!> Content-Type: multipart/alternative;
!>  boundary="------------030908040208020901050308"
!>
!> This is a multi-part message in MIME format.
!> --------------030908040208020901050308
!> Content-Type: text/plain; charset=ISO-8859-1; format=flowed
!> Content-Transfer-Encoding: 8bit
!>
!> dette er en testmail... sendt menst etherreal kørte ;)
!>
!> Morten
!>
!> --------------030908040208020901050308
!> Content-Type: text/html; charset=us-ascii
!> Content-Transfer-Encoding: 7bit
!>
!> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
!> <html>
!> <head>
!>  <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">
!>  <title></title>
!> </head>
!> <body text="#000000" bgcolor="#ffffff">
!> dette er en testmail... sendt menst etherreal k&oslash;rte ;)<br>
!> <br>
!> Morten<br>
!> </body>
!> </html>
!>
!> --------------030908040208020901050308--
!>
!> .
< 250 Ok: queued as 8C5322629C9
!> QUIT
< 221 Bye
---

Morten
Avatar billede ohmish Nybegynder
22. januar 2004 - 02:16 #20
dea_pg> hvad gør man når smtp-serveren kun godtager standarden \r\n?
Avatar billede ohmish Nybegynder
22. januar 2004 - 02:27 #21
jeg sidder og roder med en multipart/alternative mail..

jeg kan vælge mellem:
at bruge \r\n, og emailen går fint igennem men blir grim i ret mange mailklienter
eller kun at bruge \n og smtp-serveren vil ikke godtage min headers

hvordan har du dog sendt den htmlmail du omtaler der?
Avatar billede fangel Nybegynder
22. januar 2004 - 14:49 #22
brug \n\r i headers og \n i mailen... det er standard at alle smtp (og html) skal afslutte header-linier med \n\r

ved det ik...

Morten
Avatar billede ohmish Nybegynder
22. januar 2004 - 15:14 #23
ok. ikke \r\n?.. du bruger kun \n herover ser jeg

kan jeg få dig til at vise mig hvordan du har sendt den htmlmail du med success fik sendt? evt. script
Jeg giver gerne point :)
Avatar billede ohmish Nybegynder
22. januar 2004 - 15:17 #24
Avatar billede fangel Nybegynder
22. januar 2004 - 15:25 #25
mailen er sendt med mail sendt via et mail-prog, men trafikken er så opsnappet med en sniffer... (etherreal)

men der skal være \n\r mellem headere osv... men i selve mailen er det lige meget - det er mail prog. der skal lege med det...

Morten
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