Avatar billede -kenner- Nybegynder
30. juni 2005 - 09:52 Der er 1 kommentar og
1 løsning

Mail bliver ikke sendt?

Hej eksperter,

Jeg har lavet denne lille mailform til min profil på nettet, og den skulle sende en mail, når kriterierne er opfyldt, men mailen bliver ikke sendt. Det står "Mailen blev sendt", så man er kommet rigtige igennem betingelserne, men sendt bliver den ikke.

- Er der noget i en header jeg ikke har fået med, eller hvad er der galt?

Koden:

<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
      <title>Mail</title>
      <link href="indexSheet.css" rel="stylesheet" type="text/css">
</head>
<body>
<?php
$ip = $_SERVER['REMOTE_ADDR'];

if(isset($_POST['gem'])){
    $navn = $_POST['navn'];
    $bruger = $_POST['bruger'];
    $venner = $_POST['venner'];
    $familie = $_POST['familie'];
    $hilsen = $_POST['hilsen'];
        if(empty($navn) || empty($bruger)) {
            echo"<center><div class=\"fejl\"><b>Fejl:</b> Der er et eller flere tomme felter!</div></center>";
          } elseif( empty($venner) && empty($familie) && empty($hilsen)){
              echo"<center><div class=\"fejl\"><b>Fejl:</b> Du skal vælge en anmodning!</div></center>";
        }else {
                $message = "$besked\n\nBruger: $bruger\nNavn: $navn\nIP: $ip\n\nBrugeren ønsker følgende:\n";
            if(isset($venner)){
                $message .= "Komme på vennelisten.\n";
                }
            if(isset($familie)){
                $message .= "Komme på vennelisten.\n";
                }
            if(isset($hilsen)){
                $message .= "Skrive en hilsen.\n";
                }
                //Samler tråedene og sender mail.
                $subject ="Anmodning fra $navn";
                $email = "kenner@arto.dk";
                $headers = "From: Kenner mail <kenda@users.1go.dk>\n";
                $headers .= "MIME-Version: 1.0\n";
                $headers .= "Content-Type: text/plain; charset=ISO-8859-1\n";
                $headers .= "X-Mailer: PHP \n";
                mail($email, $subject, $message, $headers);
                print "<center><div class=\"godkendt\">Din anmodning er tilføjet!</div></center>";
              }
}
?>
<center>
<form method="post" action="<?= $_SERVER['PHP_SELF'] ?>">
<table border="0" class="tekst">
<tr><td>Navn:</td><td><input type="text" name="navn" style="width:240px" maxlength="30" value="<?php echo $_POST['navn']; ?>"></td></tr>
<tr><td>Bruger:</td><td><input type="text" name="bruger" style="width:240px" maxlength="30" value="<?php echo $_POST['bruger']; ?>"></td></tr>
<tr><td><input type="checkbox" name="venner" value="Komme på vennelisten." border="0"></td><td>Jeg føler mig glemt på vennelisten (Kræver at vi IRL venner).</td></tr>
<tr><td><input type="checkbox" name="familie" value="Komme på familielisten." border="0"></td><td>Jeg føler mig glemt på familielisten (Kræver at vi er i familie).</td></tr>
<tr><td><input type="checkbox" name="hilsen" value="Skrive en hilsen." border="0"></td><td>Jeg vil gerne skrive en hilsen i din profiltekst.</td></tr>
<tr><td colspan="2" align="center"><input type="submit" name="gem" value="Tilføj"></td></tr>
</table>
</form>
</center>

</body>
</html>
Avatar billede sonyboy Nybegynder
30. juni 2005 - 19:43 #1
Hej,

Jeg har det sådan at jeg altid gerne vil have funktioner til ting som mail funktioner - man kan selvfølgelig lave classes osv. men dette er en simpel funktion som skulle virke;

<?php

function mailme($fromname, $fromaddress, $toname, $toaddress, $subject, $message)
{
  $headers  = "MIME-Version: 1.0\n";
  $headers .= "Content-type: text/plain; charset=iso-8859-1\n";
  $headers .= "X-Priority: 3\n";
  $headers .= "X-MSMail-Priority: Normal\n";
  $headers .= "X-Mailer: php\n";
  $headers .= "From: \"".$fromname."\" <".$fromaddress.">\n";
  return mail($toaddress, $subject, $message, $headers);
}

$ip = $_SERVER['REMOTE_ADDR'];

if(isset($_POST['gem'])){
  $navn = $_POST['navn'];
  $bruger = $_POST['bruger'];
  $venner = $_POST['venner'];
  $familie = $_POST['familie'];
  $hilsen = $_POST['hilsen'];
  if(empty($navn) || empty($bruger)) {
    echo "<center><div class=\"fejl\"><b>Fejl:</b> Der er et eller flere tomme felter!</div></center>";
  }
  elseif( empty($venner) && empty($familie) && empty($hilsen)){
    echo "<center><div class=\"fejl\"><b>Fejl:</b> Du skal vælge en anmodning!</div></center>";
  }else {
    $message = "$besked\n\nBruger: $bruger\nNavn: $navn\nIP: $ip\n\nBrugeren ønsker følgende:\n";
    if(isset($venner)){
      $message .= "Komme på vennelisten.\n";
    }
    if(isset($familie)){
      $message .= "Komme på vennelisten.\n";
    }
    if(isset($hilsen)){
      $message .= "Skrive en hilsen.\n";
    }
    //Samler tråedene og sender mail.

    //$sendmail = mailme( "Kenner mail", "kenda@users.1go.dk", "Kenner", "kenner@arto.dk", "Anmodning fra {$navn}", $message);
    $sendmail = mailme( "Kenner mail", "root@devel.sonyboy.dk", "Kenner", "sonyboy@devel.sonyboy.dk", "Anmodning fra {$navn}", $message);
    if ($sendmail == true) {
      print "<center><div class=\"godkendt\">Din anmodning er tilføjet!</div></center>";
    }

  }
}
?>

En ting, du skriver - ligegyldigt hvad - at mailen er sendt når de bare har udfyldt alle felter. Som du kan se, har jeg lavet den som en variable og retunere den "true" så bliver der skrevet at mailen er sendt.

Der kan du selvfølgelig smide en else funktion ind og redirecte dem tilbage til den forrige side.
Avatar billede sonyboy Nybegynder
30. juni 2005 - 19:44 #2
En anden ting, du skal selvfølgelig slette
    $sendmail = mailme( "Kenner mail", "root@devel.sonyboy.dk", "Kenner", "sonyboy@devel.sonyboy.dk", "Anmodning fra {$navn}", $message);
Og fjerne kommenteringen på den anden linje ovenover - da jeg testede det inden jeg postede den ;)
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