Avatar billede mtm Praktikant
13. november 2007 - 17:24 Der er 26 kommentarer og
1 løsning

mail afsender !

Hej eksperten

Har for mig et stort problem..

bruger CMSimple på en side jeg har der har jeg lagt et lille forum i hvor forumet sender en mail når der er et nyt indlæg..

men afsenderen står som "H-Sphere Httpd Daemon (httpd@ws21.surf-town.net)" hvordan kan jeg lave det om!

På forhånd tak
MtM
Avatar billede mtm Praktikant
13. november 2007 - 17:25 #1
index.php

<?php
/*
    CMSimple Plugin - genizforum version 1 beta 1
    -------------------------------------------------------------
    - Beta 1 : 06jun2005 - First beta released
    -------------------------------------------------------------
    Partly based on ONBoard.php
*/

function GenizForum($forum,$admin)
{
    GLOBAL $su, $pth, $plugin_tx,$plugin_cf,$_SERVER;
   
    $delid = isset($_POST['delid']) ? $_POST['delid'] : $_GET['delid'];
    $postsubject = isset($_POST['postsubject']) ? $_POST['postsubject'] : $_GET['postsubject'];
    $postname = isset($_POST['postname']) ? $_POST['postname'] : $_GET['postname'];
    $posthttp = isset($_POST['posthttp']) ? $_POST['posthttp'] : $_GET['posthttp'];
    $postmsg = isset($_POST['postmsg']) ? $_POST['postmsg'] : $_GET['postmsg'];
    $postid = isset($_POST['postid']) ? $_POST['postid'] : $_GET['postid'];
    if (!isset($forum))
    $forum = isset($_POST['forum']) ? $_POST['forum'] : $_GET['forum'];
           
    $path = $pth['folder']['plugins']."genizforum/data/".$forum."/";
    if(!file_exists($path)) mkdir($path,0777);
    if(!file_exists($path)) $o.="<br>ERROR: Creation of dir failed";

    $imagesdir = $pth['folder']['plugins']."genizforum/images";
   
    //write msg to file
    if($postid && $postmsg)
    {
        $curpath=$path.$postid;
        if (strtolower($plugin_cf['genizforum']['html_safe'])=='true')
        {
            $postmsg=str_replace('#','&#35;',htmlspecialchars($postmsg, ENT_QUOTES));
            $postname=strip_tags($postname);
            $postsubject=strip_tags($postsubject);
        }
       
        if (!$plugin_cf['genizforum']['mail_notification']=='')
        @mail($plugin_cf['genizforum']['mail_notification'],'Forum: '.$forum,"From: ".$postname."\r\nSubject: ".$postsubject."\r\n\r\n"."Message:\r\n".$postmsg);
       
        $postname=htmlspecialchars($postname, ENT_QUOTES);
       
        $postmsg = "<tr class=\"GenizForum_tbody\">"
            ."<td width=\"100%\"><p class=\"GenizForum_msg\">".$postmsg."</p></td>"
            ."<td valign=\"top\"><ul class=\"GenizForum_ul\"><li class=\"GenizForum_name\">".$postname."</li><li class=\"GenizForum_date\">".date($plugin_tx['genizforum']['date'])."</li><li class=\"GenizForum_time\">".date("H:i:s")."</li></ul></td></tr>";

        if (file_exists($curpath)==FALSE)
            $curpath=$path.$postsubject."_".$postid;
        if (!$fp = fopen ($curpath, 'a'))
            $o.="<br>ERROR: Cannot open file ($curpath)";
        if (fwrite($fp,$postmsg)==FALSE)
            $o.="<br>ERROR: Cannot write to file ($curpath)";
        fclose($fp);

        header('Location: '.$_SERVER['REQUEST_URI']);exit;

    }//end writemsg

    //read dir and find filenames
    $fi=0;
    $curpath=$path ;
    if ($dir = opendir($curpath))
    {
        while (($file = readdir($dir)) !== false)
        {
            if($i>1)
            {
                $filelist[$fi] = $file;
                $fi++;
            }
            $i++;
        }//while
          closedir($dir);
    }//end read dir

    //begin html form
    $o.= "<!-- Code start - inserted by GenizForum --><form name=\"genizforum\" method=\"post\" action=\"?".$su."\">";

    //begin displaying threads
    //Note: it is readering out the files in reverse order so that newer files go on top
    $fi--;
    $o.= "<table class=\"GenizForum_table\" rules=\"rows\">";
    while($fi>=0)
    {
        $readpath = $curpath.$filelist[$fi];
        $o.="<tr class=\"GenizForum_thead\">"
            ."<td width=\"100%\">".substr($filelist[$fi],0,strpos($filelist[$fi],'_'))."</td>";
        if(!($admin == 'plugin_main'))
            $o.="<td style=\"white-space: nowrap;\">&nbsp;".$plugin_tx['genizforum']['reply']."<input name=\"postid\" type=\"radio\" value=\"$filelist[$fi]\" onfocus=\"this.checked='true';document.forms['genizforum'].postname.focus();document.forms['genizforum'].postsubject.disabled = true;\"></td>";
        else
            $o.="<td><a href=\"?&genizforum&admin=plugin_main&action=show&forum=$forum&delid=$filelist[$fi]\"><img src=\"$imagesdir/delete.png\" alt=\"".$plugin_tx['genizforum']['delete']."\"></a></td>";
        $o.="</tr>"
            .@stripslashes(implode("<br>",file($readpath)))
            ."</tr>";
        $fi--;
    }//end while
    $o.= "</table><br>";
    //end display
   
    //begin footer
    if (!($admin == 'plugin_main'))
    {
        $o.= "<table width=\"100%\">"
            ."<tr><td colspan=\"2\">".$plugin_tx['genizforum']['new']."<input name=\"postid\" type=\"radio\" value=\"".date("ymdHis")."\" checked=\"checked\" onfocus=\"document.forms['genizforum'].postname.focus();document.forms['genizforum'].postsubject.disabled = false;\"></td></tr>"
            ."<tr><td style=\"white-space: nowrap;\">".$plugin_tx['genizforum']['author']."</td><td><input name=\"postname\" type=\"text\" maxlength=\"10\" size=\"10\"></td></tr>"
            ."<tr><td style=\"white-space: nowrap;\">".$plugin_tx['genizforum']['subject']."</td><td><input name=\"postsubject\" type=\"text\"></td></tr>"
            ."<tr><td style=\"white-space: nowrap;\" valign=\"top\">".$plugin_tx['genizforum']['text']."</td><td width=\"100%\"><textarea name=\"postmsg\" cols=\"66\" rows=\"3\"></textarea></td></tr>"
            ."<tr><td colspan=\"2\"><input type=\"submit\" name=\"write\" value=\"Send\"></td></tr>"
            ."</table>";
    }
    $o.="<input type=\"hidden\" name=\"forum\" value=\"$forum\">";
    $o.="</form>";
    //end footer

    return $o."<!-- Code end - inserted by GenizForum -->";
   
}    // end function
?>
Avatar billede jakobdo Ekspert
13. november 2007 - 19:08 #2
Det er denne linie som sender emailen:

@mail($plugin_cf['genizforum']['mail_notification'],'Forum: '.$forum,"From: ".$postname."\r\nSubject: ".$postsubject."\r\n\r\n"."Message:\r\n".$postmsg);

Der kunne du prøve at kigge lidt på: http://dk2.php.net/manual/en/function.mail.php

Måske du skal bruge: headers eller '-fwebmaster@example.com'
Du må forsøge dig lidt frem.
Avatar billede mtm Praktikant
14. november 2007 - 18:24 #3
hej Jakob...
Kan sku ikke få det til at virke :o(
/MtM
Avatar billede jakobdo Ekspert
15. november 2007 - 08:12 #4
Hvordan ser din $mail(...) ud nu?
Altså efter du har prøvet at rette?
Avatar billede jakobdo Ekspert
15. november 2007 - 08:20 #5
Prøv at ret $mail(...) til:

@mail(
    $plugin_cf['genizforum']['mail_notification'],
    'Forum: '.$forum,
    'From: '.$postname."\r\nSubject: ".$postsubject."\r\n\r\n"."Message:\r\n".$postmsg,
    'From: '.postname."\r\nReply-To: '.$postname."\r\nX-Mailer: PHP/".phpversion(),
    '-f'.$postname);
Avatar billede mtm Praktikant
15. november 2007 - 17:09 #6
Hej igen Jakob
Det virker desværre ikke .. når jeg taster det ind vil forumet ikke starte op...
/MtM
Avatar billede jakobdo Ekspert
15. november 2007 - 17:12 #7
Tror jeg har fået lavet en fejl her:

"\r\nReply-To: '

Det skal rettes til:

"\r\nReply-To: "
Avatar billede mtm Praktikant
15. november 2007 - 17:13 #8
Er det ikke denne line
$postname = isset($_POST['postname']) ? $_POST['postname'] : $_GET['postname'];
hvor mailen får at vide, hvad der skal står i modtager feltet?
Avatar billede mtm Praktikant
15. november 2007 - 17:16 #9
"\r\nReply-To: " gør desværre det samme forumet starter ikke op viser "bare" en blank side.
Avatar billede jakobdo Ekspert
15. november 2007 - 21:13 #10
Virker din oprindelige kode?
Avatar billede mtm Praktikant
15. november 2007 - 21:42 #11
Ja
Avatar billede jakobdo Ekspert
16. november 2007 - 08:25 #12
Hvis du tager linien:

@mail($plugin_cf['genizforum']['mail_notification'],'Forum: '.$forum,"From: ".$postname."\r\nSubject: ".$postsubject."\r\n\r\n"."Message:\r\n".$postmsg);

Og erstatter den med:

@mail($plugin_cf['genizforum']['mail_notification'],'Forum: '.$forum,"From: ".$postname."\r\nSubject: ".$postsubject."\r\n\r\n"."Message:\r\n".$postmsg,'From: '.postname."\r\nReply-To: ".$postname."\r\nX-Mailer: PHP/".phpversion());

Virker det så ?
Avatar billede mtm Praktikant
17. november 2007 - 00:19 #13
hej igen Jakob..
Ved ikke hvad jeg har lavet. men nu virker det med det sidste du skrev..
Nu siger den i hvert fald. postname@ws21.surf-town.net som afsender..
Kan man ikke lave det om til eks. domain.dk eller min_sides forum.
Jeg troede man "bare" kunne skrive et sted, at det er det afsender skal være " bla bla!
/MtM
Avatar billede jakobdo Ekspert
17. november 2007 - 08:16 #14
Hvordan ser din kode ud nu?
Altså @mail() delen.
Avatar billede nielle Nybegynder
17. november 2007 - 09:19 #15
Jeg tror at opgaven måske er umulig...

Pga. alle problemerne med SPAM er mange mailsystemer for længst blevet konfigureret til at man ikke kan afsende mails sådan at de ser ud til at komme fra en anden afsender end dig selv. Så vidt jeg kan se forsøger du ar hente $postname far formen og formatere mailen som om at den kommer fra denne afsender...

Det er muligt at du kan få lov til dette, men der er som sagt ikke nødvendigvis nogten garanti.

Hvis dette er tilfældet skal du nok kun regne med at sende mails som om at de kommer fra dit eget domain.
Avatar billede mtm Praktikant
17. november 2007 - 10:51 #16
Jakob -> jeg bruger det sidste du har skrevet..(08:25)
nielle -> jamen postname@ws21.surf-town.net er "vel" surftowns.
Jeg har jo et domain navn der hedder noget andet.. eks. www.mitdomain.dk
Avatar billede jakobdo Ekspert
17. november 2007 - 11:19 #17
Du kunne jo prøve at starte helt simpelt:

<?php
$to      = 'modtager@ditdomain.dk';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@ditdomain.dk' . "\r\n" .
    'Reply-To: webmaster@ditdomain.dk' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);
?>

Virker den kode?
Avatar billede nielle Nybegynder
17. november 2007 - 11:23 #18
Ad 17/11-2007 10:51:38>

Jeg gætter på at der måske sker det at den falder tilbage til surftowns adresse eftersom at du ikkke selv angiver en lovlig værdi - som noget i stil med det jakobdo forslår ovenfor.
Avatar billede mtm Praktikant
17. november 2007 - 12:12 #19
Jakob > Ja det virker.
Modtager en mail med rigtig afsender. og naturligvis teksten hello..
Avatar billede jakobdo Ekspert
17. november 2007 - 12:20 #20
Prøv så at ret webmaster@ditdomain.dk til f.eks.:

webmaster@eksperten.dk både i from og reply-to.
Virker det?
Avatar billede mtm Praktikant
17. november 2007 - 12:34 #21
yep! det virker også
Avatar billede jakobdo Ekspert
18. november 2007 - 18:00 #22
Så burde din tidligere kode også kunne virke.
Avatar billede mtm Praktikant
19. november 2007 - 08:06 #23
Jakob-> jeg forstår ikke helt den sidste kommentar.
Forumet virker. men afsenderen står stadigvæk som postname@ws21.surf-town.net
Kan man ikke lave noget i stil med $postname = 'webmaster@ditdomain.dk';
ved godt den får postname i denne line
$postname = isset($_POST['postname']) ? $_POST['postname'] : $_GET['postname'];
men kan man lave det om? eller er jeg helt forkert op den?
Avatar billede jakobdo Ekspert
19. november 2007 - 08:27 #24
Prøv lige et sidste forsøg:

@mail(
    $plugin_cf['genizforum']['mail_notification'],
    'Forum: '.$forum,
    $postmsg,
    'From: webmaster@ditdomæne.dk' . "\r\n" . 'Reply-To: webmaster@ditdomæne.dk' . "\r\n" . 'X-Mailer: PHP/' . phpversion();
);
Avatar billede mtm Praktikant
19. november 2007 - 09:14 #25
jakob -> Mange tak for hjælpen. smid lige et svar.
Jeg fandt ud af det!
lavede en $modtager = 'webmaster@ditdomain.dk'; og indsatte så "bare" .$modtager.
Der hvor de skulle være..
/MtM
Avatar billede jakobdo Ekspert
19. november 2007 - 10:55 #26
Svar! :o)
Avatar billede jakobdo Ekspert
19. november 2007 - 12:24 #27
Takker for point.
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