Avatar billede taylor Nybegynder
10. juli 2004 - 18:58 Der er 4 kommentarer og
4 løsninger

mail() via smtp, b-one.dk hjælp

Hejsa , jeg har et PHP email script , som så mange har , bare til at folk kan sende mig en email med nogen kommentarer fra hjemmesiden . b-one har nogen lidt anderledes indstilling end jeg er vandt til , nemlig at man ikke bare kan bruge " mail() " !!!!

På deres hjemmeside står der at man kan bruge deres interne smtp server " smtp1.b-one.net " for at sende mail ud fra en hjemmeside .

Så er mit spørgsmål lige .... Hvordan ? Hvordan laver jeg en forbindelse til den server i mit script så det kan komme til at virke ?

PS jeg ved ikke helt hvad jeg skulle have sat Points til , men den står på medium , og der virker som et medium spørgsmål , hvis ikke , ja så må vi jo bare lægge nogen flere til :) Det kan man vel godt kan man ik' ?

På forhånd tak
Avatar billede jaw Nybegynder
10. juli 2004 - 19:21 #1
Har leget lidt med det her:

<?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");
        }
    }
}

$smtp= new smtp_client('domæne.dk');

$smtp->email("Fra_adresse", "til_adresse", "Kasper", "", "emne", "Tekst");

$smtp->send();
?>

(fra http://www.eksperten.dk/spm/517208) - du kan jo prøve det, virker for mig...
Avatar billede taylor Nybegynder
10. juli 2004 - 23:36 #2
Tak for svaret Jaw, jeg tester det lige med det samme :)
Avatar billede taylor Nybegynder
10. juli 2004 - 23:54 #3
Jeg kan ikke lige få det til at virke :( hvor meget skal der ændres i ?
Avatar billede jaw Nybegynder
11. juli 2004 - 03:00 #4
Det burde kun være disse 2 linier:

$smtp= new smtp_client('domæne.dk');
$smtp->email("Fra_adresse", "til_adresse", "Kasper", "", "emne", "Tekst");

...du skal ændre i...
Avatar billede taylor Nybegynder
11. juli 2004 - 19:56 #5
Det ville jeg også sige , men det virker ikke :( Har du andre ideér ?
Avatar billede jaw Nybegynder
11. juli 2004 - 19:57 #6
Ikke lige umiddelbart, nej desværre...
Avatar billede efunnydk Nybegynder
16. juli 2004 - 18:56 #7
Jeg kan sige til dig at gratis-portal.dk og Efunnysystem.dk også liger på b-one server og vi kan heler ikke få det til at virker. Og det virker ikke på 3 telefoner eller noget jeg tror bare ikke det virker hos dem beklager.
Avatar billede taylor Nybegynder
16. juli 2004 - 19:00 #8
Jeg har støbt et lille script sammen som virker:

<?php

$fp = fsockopen("smtp1.b-one.net", 25);

$toEmail = "mail@domæne.dk";
$subject = "Mail Form";

$headers = "From: " . $_POST["name"];
$headers .= "<" . $_POST["email"] . ">\r\n";

$message = $_POST["message"];

mail($toEmail, $subject, $message, $headers);

fclose($fp);

?>
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