Avatar billede orkiderejser Novice
01. marts 2010 - 12:41 Der er 5 kommentarer og
1 løsning

Nyhedsbrev modtages som ren html

Nyhedsbrevet lavet som html fil.

Brevet udsendes med http://www.dunweber.com/docs/scripts/#mailliste som er tilpasset vores system.

Jeg sender det med med php fra serveren.

Koden er:

* Administrators function: Show send to maillist form.
*/
function showMailToMaillistLink() {
    $formContent = '';
    $default = '<input type="hidden" id="mailAll" name="mailAll" value="1" />'.
                '<input type="submit" value="Skriv Nyhedsmail" '.
                'title="Udsend nyhedsmail til alle tilmeldte på maillisten." />';
    $confirmation = '<legend>Skriv til maillisten</legend>'.
        '<label for="subject">Emne: </label>'.
        '<input type="text" id="subject" name="subject" size="25" value="'.$_POST['subject'].
            '" /><br />'.
        '<label for="subject">Besked: </label>'.
        '<textarea id="message" name="message" cols="25" rows="5">'.$_POST['message'].
            '</textarea><br />'.
        '<input type="hidden" class="text" id="mailAll" name="mailAll" value="2" />'.
        '<label>&nbsp;</label>'.
        '<input type="submit" value="Udsend mail" />'.
        '<input type="reset" value="Annullér" '.
            'onclick="window.location=\''.$_SERVER['PHP_SELF'].'\'" />';
    $done = '<button title="Klik her for at lukke besked." '.
            'onclick="window.location=\''.$_SERVER['PHP_SELF'].'\'">OK</button>';
   
    switch($_POST['mailAll']) {
        case 0 : {
            $formContent = '<div>'.$default.'</div>';
            $style = '';
            break;
        }
        case 1 : {
            $formContent = '<fieldset>'.$confirmation.'</fieldset>';
            break;
        }
        case 2 : {
            if(strlen(($subject = $_POST['subject'])) > 0
                    && strlen(($message = $_POST['message'])) > 0) {
                $formContent = '<fieldset>'.
                    mailToMaillist($subject, $message).$done.'</fieldset>';
            }
            else {
                $formContent = '<fieldset>'.$confirmation.
                    '<p class="red" id="maillistInfo">'.
                        'Husk at udfylde både emnebeskrivelse og besked.'.
                    '</p></fieldset>';
            }
            break;
        }
        default : 0;
    }
   
    return '<form action="'.$_SERVER['PHP_SELF'].'" method="post" id="maillistMailAllForm">'.
          $formContent.'</form>';
}

/**
* Administrators function: Send a mail to all maillist users.
*/
function mailToMaillist($subject, $message) {
    require('settings.php');
   
    if(!checkEmail($admin_email)) {
        return '<p>Angiv korrekt administrator e-mail i &raquo;settings.php&laquo;</p>';
    }
   
    $subject = trim(str_replace('\n', ' ', $subject));
    $message = trim(wordwrap($message, 70));
    $maillist = getMaillistUsers();
    $bcc = trim(implode(', ', $maillist), ', ');
    $header = "From: $admin_email" . "\r\n".
        "Reply-to: $admin_email" . "\r\n".
        "Bcc: $bcc" . "\r\n".
        "X-Mailer: PHP/".phpversion();
   
    if(mail($admin_email, $subject, $message, $header)) {
        return '<div>'.
              '<h3 class="green" id="maillistInfo">Nyhedsmail afsendt til '.count($maillist).
                  ' tilmeldte</h3>'.
              '<table>'.
              '<tr>'.
                  '<td>Emne:</td>'.
                  '<td>'.$subject.'</td>'.
              '</tr>'.
              '<tr>'.
                  '<td>Besked:</td>'.
                  '<td>'.$message.'</td>'.
              '</tr>'.
              '</table></div>';
    }
    else {
        return '<p class="red" id="maillistInfo">Kunne ikke sende mail til maillisten. '.
                'Kontakt administrator.</p>';
    }
}

/**
* Administrators function: Get array of all rows in the maillist table.
*/
function getMaillistUsers() {
    require('settings.php');
   
    mysqlConnect();
    $result = mysqlGetMatrix("SELECT email FROM $dbTableName");
    mysqlClose();
   
    for($i = 0; $i < count($result); $i++) {
        extract($result[$i]);
        $maillist[] = $email;
    }
   
    return $maillist;
}

/**
* Administrators function: check if an email looks ok and is at a real domain.
*/
function checkEmail($email) {
    if((preg_match('/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/',$email))    ||
      (preg_match('/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/',$email)))
    {
        $host = explode('@', $email);
       
        if(checkdnsrr($host[1].'.', 'MX')) {
            return true;
        }
        if(checkdnsrr($host[1].'.', 'A')) {
            return true;
        }
        if(checkdnsrr($host[1].'.', 'CNAME')) {
            return true;
        }
    }
   
    return false;
}

?>


Nyhedsbrevet skulle se sådan ud:
http://www.orkiderejser.dk/indexadminon.php

Mvh
Jan
Avatar billede orkiderejser Novice
01. marts 2010 - 12:50 #1
UPS

Forkert link Nyhedsbrevet skulle se sådan ud:
http://www.orkiderejser.dk/onyhedsbrev_test.html

admin test siden:
http://www.orkiderejser.dk/indexadminon.php

Jan
Avatar billede repox Seniormester
01. marts 2010 - 13:06 #2
Og hvad er problemet?
Avatar billede orkiderejser Novice
01. marts 2010 - 13:16 #3
Problemet er, at når det modtages, er det kun den rene html kode der ses, samtidig med at den kommer i uønsket post.

Mvh
Jan
Avatar billede repox Seniormester
01. marts 2010 - 13:24 #4
Det er også fordi der mangler angivelser af hvad det er du sender med.

Prøv at udskifte din header:
$header = "From: $admin_email" . "\r\n".
"Reply-to: $admin_email" . "\r\n".
"Bcc: $bcc" . "\r\n".
"X-Mailer: PHP/".phpversion();


med
$header = "From: $admin_email" . "\r\n".
"Reply-to: $admin_email" . "\r\n".
"Bcc: $bcc" . "\r\n".
"MIME-Version: 1.0" . "\r\n".
"Content-Type: text/html; charset=\"iso-8859-1\"" . "\r\n".
"X-Mailer: PHP/".phpversion();
Avatar billede orkiderejser Novice
01. marts 2010 - 14:00 #5
Det virker. :-)

Så lidt med den store virkning.

Mange tak for din store hjælp

Lægger du et svar.

Mvh
Jan
Avatar billede repox Seniormester
01. marts 2010 - 14:03 #6
Det fik du her.
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