Avatar billede Christian_Bundgaard Nybegynder
21. august 2010 - 16:53 Der er 1 løsning

Nyhedsbrev - problemer med HTML mail m.m.

Hej eksperter,

Jeg er ved at forsøge med et nyhedsbrev-scripts. Der er tilmeldingsside (afmeld kommer, når det virker), og en side, hvor jeg kan sende nyhedsbreve ud. Det virker fint med plain text. Men jeg vil gerne have, at der kan bruges HTML kode på siden, og muligvis noget med, at dem som ikke har en email klient, som understøtter HTML, får det vist som plain text. Har kigget lidt på nettet, men kan ikke få det til at virke.

Derudover har jeg et simpelt spørgsmål; skal e-mailsene MD5'es eller lign, og i så fald, hvordan bruger man så den hashede mail?

Derudover er andre råd omkring nyhedsbreve meget velkomne.

Tilmeld-siden:

[code]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Nyhedsbrev</title>    <!-- Husk ny titel  !-->
<link href="style.css" type="text/css" rel="stylesheet">
<link rel="shortcut icon" href="favicon.ico">
</head>
<body>

<?
if (isset($_POST['submit'])) {

$mail = $_POST["e-mail"];
$error = "";

$allerede_tilmeldt = "Din e-mail er allerede på listen.";
$success = "Tak, fordi du tilmeldte dig nyhedsbrevet.";

function check_email_address($email) {
  // First, we check that there's one @ symbol,
  // and that the lengths are right.
  if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $email)) {
    // Email invalid because wrong number of characters
    // in one section or wrong number of @ symbols.
    return false;
  }
  // Split it into sections to make life easier
  $email_array = explode("@", $email);
  $local_array = explode(".", $email_array[0]);
  for ($i = 0; $i < sizeof($local_array); $i++) {
    if
(!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&
?'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$",
$local_array[$i])) {
      return false;
    }
  }
  // Check if domain is IP. If not,
  // it should be valid domain name
  if (!ereg("^\[?[0-9\.]+\]?$", $email_array[1])) {
    $domain_array = explode(".", $email_array[1]);
    if (sizeof($domain_array) < 2) {
        return false; // Not enough parts to domain
    }
    for ($i = 0; $i < sizeof($domain_array); $i++) {
      if
(!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|
?([A-Za-z0-9]+))$",
$domain_array[$i])) {
        return false;
      }
    }
  }
  return true;
}

if($mail == "" || check_email_address($mail) == false) {
$error .= "Du har ikke indtastet en gyldig e-mail.";
}
//else {
//$mail = MD5($mail);
//}

mysql_connect("*", "*", "*");
mysql_select_db("*");

if($error == "") {
    $select_mail = mysql_query("SELECT mail FROM nyhedsbrev WHERE mail='$mail'");
        if(mysql_num_rows($select_mail) == 1) {
            echo $allerede_tilmeldt;
        } else {
            mysql_query("INSERT INTO nyhedsbrev(mail) VALUES ('$mail')");
            echo $success;
        }
    }               
else {
echo $error;
}
}
?>

<form action="<? $PHP_SELF; ?>" method="post">
E-mail: <br/>
<input type="text" name="e-mail" id="input"> <br/>
<input name="submit" type="submit" value="Tilmeld">
</form>

</body>
</html>
[/code]

og "send-nyhedsbrev":

[code]
<html>
<head>
<link href="style.css" type="text/css" rel="stylesheet">
</head>
<body>

<h1>Send nyhedsbrev</h1>

<?
if(isset($_POST["submit"])) {

$emne = $_POST["emne"];
$besked = $_POST["besked"];
$body = "
<html>
<body>
<img src='http://devdesign.dk/learn2code/img/newsletter-logo.png'> <br> <br>
<p style='font-family: verdana; font-size: 13px;'>" . $besked . "</p>
<br/> <br/>
</body>
</html>";
$headers = "From: newsletter@devdesign.dk\r\nContent-type: text/html; charset=\"iso-8859-1\"";
$error = "";

if($emne == "") {
    $error .= "Der er ikke indtastet et emne. <br>";
}
if($besked == "") {
    $error .= "Der er ikke indtastet en besked. <br>";
}   

mysql_connect("*", "*", "*");
mysql_select_db("*");

$count_mails = 0;

if($error == "") {
    $get_mails = mysql_query("SELECT * FROM nyhedsbrev");

        while($mail_array = mysql_fetch_array($get_mails)) {
            $mails = ($mail_array["mail"]);
            mail($mails, $emne, $besked, $headers);
            $count_mails++;
    }
    echo "<div id=\"success\">Nyhedsbrevet er sendt til <b>" . $count_mails . " mails.</b></div>";
}
else {
    echo "<div id=\"error\">" . $error . "</div>";
}   
}


?>

<form action="<? $PHP_SELF; ?>" method="post">
Emne: <br/>
<input type="text" name="emne" id="input"> <br/>
Besked: <br/>
<textarea type="text" name="besked" id="textarea">
Avatar billede Christian_Bundgaard Nybegynder
21. august 2010 - 16:55 #1
Beklager, der er fejl i den af en eller anden grund. Der var vist problemere, da jeg trykkede "Opret."
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