Avatar billede charwester Nybegynder
15. juni 2006 - 16:03 Der er 8 kommentarer og
1 løsning

PHP mail script

Ja så skal blondinen have hjælp igen!!! Har lige fundet ud af at min udbyder ikke understøtter formmail og skal derfor have bakset en PHP form sammen med 3 txt-fields: Navn, email, besked samt vedhæft fil(både txt(DOC/PDF/RTF) & jpeg.

Jeg arbejder i Dreamweaver MX og har altså ZERO kendskab til PHP, så der skal en Jørgen Clevin på banen! Bedst ville være et fuldt script, som jeg kan indsætte og så lidt råd og vejledning i forbindelse med smtp-server og andet besværligt som jeg selv skal indsætte i scriptet. Så kom frit frem derude!!!!
Avatar billede dotcom1 Nybegynder
15. juni 2006 - 16:18 #1
Hvad med denne? Lige til at klippe/klistre ind: http://mylittlehomepage.net/form_mail_script
Avatar billede charwester Nybegynder
15. juni 2006 - 17:07 #2
Hej dotcom1

Den ser jo fin ud i demoen...har lidt probs, når jeg åbner den i Dreamweaver:

lige før selve formen står ERROR med rødt og under er der en "bullit"???? i textfelterne stå der: <?php if (isset($name)) echo html osv...ER det meningen? har som sagt ingen erfaring med PHP. Har prøvet at previewe den i browseren, men så skal jeg definere en "testing server" og uploade via FTP....kan du kigge på koden?



<?php
// Your e-mail adress:
$mailto = "mail@gate-1.eu";

# Maximum size of attachment in bytes:
$max_attach_size = 500000;

?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Formmailer</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
<!--
body                { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 13px; color: #000000; background: #ffffff; margin: 20px; padding: 0px; border: 0px; }
.caution            { color: red; font-weight: bold; }
-->
</style>
</head>
<body><?php
/*if (empty($_POST['form_submitted']))
{
  ?><p>Please fill out the form:</p><?php
}
*/
if (isset($_POST["form_submitted"]))
{
  $name = trim(preg_replace("/\r/", "", $_POST['name']));
  $name = preg_replace("/\n/", "", $name);
  $name = stripslashes($name);
  $email = trim(preg_replace("/\r/", "", $_POST['email']));
  $email = preg_replace("/\n/", "", $email);
  $subject = trim(stripslashes($_POST['subject']));
  $text = trim(stripslashes($_POST['text']));

  unset($errors);
  if($email == "") $errors[] = "no e-mail address entered";
  elseif($email != "" and !preg_match("/^[^@]+@.+\.\D{2,5}$/", $email)) $errors[] = "e-mail address seems to be invalid";
  if($text == "") $errors[] = "no message entered";
  if($_FILES['probe']['size'] > $max_attach_size) $errors[] = "attachment too large (".number_format($_FILES['probe']['size']/1000,0,",","")." KB) - maximum size: ".number_format($max_attach_size/1000,0,",","")." KB";

  if (empty($errors))
  {
    #if ($name != "") $mail_name=$name; else $mail_name="Unknown";
    if ($subject != "") $mail_subject = $subject; else $mail_subject = "No subject";
    #if ($email != "") $mail_email = $email; else $mail_email = "email@unknown.xyz";
    $ip = $_SERVER["REMOTE_ADDR"];

    // if attachment, MIME-Mail:
    if (isset($_FILES['probe']['name']) && trim($_FILES['probe']['name']) != "")
    {
      // read and encode file:
      $datei_content = fread(fopen($_FILES['probe']['tmp_name'],"r"),filesize($_FILES['probe']['tmp_name']));
      $datei_content = chunk_split(base64_encode($datei_content),76,"\n");
      // Boundary:
      $boundary = md5(uniqid(rand()));
      // Mail-Header:
      $mail_header = "From: ".$name." <".$email.">\n";
      $mail_header .= "X-Sender-IP: ".$ip."\n";
      $mail_header .= "MIME-Version: 1.0\n";
      $mail_header .= "Content-Type: multipart/mixed; boundary=\"".$boundary."\"\n";
      $mail_header .= "This is a multi-part message in MIME format.\n";
      // Mail-Text:
      $mail_header .= "--".$boundary;
      $mail_header .= "\nContent-Type: text/plain";
      $mail_header .= "\nContent-Transfer-Encoding: 8bit";
      $mail_header .= "\n\n".$text;
      // Attachment:
      $mail_header .= "\n--".$boundary;
      $mail_header .= "\nContent-Type: ".$_FILES['probe']['type']."; name=\"".$_FILES['probe']['name']."\"";
      $mail_header .= "\nContent-Transfer-Encoding: base64";
      $mail_header .= "\nContent-Disposition: attachment; filename=\"".$_FILES['probe']['name']."\"";
      $mail_header .= "\n\n".$datei_content;
      // End:
      $mail_header .= "\n--".$boundary."--";
      // Sende E-Mail und gebe Fehler bzw. Bestaetigung aus
      if (@mail($mailto,$mail_subject,"",$mail_header)) $sent = true; else $errors[] = "no connection to the mailserver - please try again later";
    }
    // no attachment, normal E-mail:
    else
    {
      $mail_header = "From: ".$name." <".$email.">\n";
      $mail_header .= "X-Sender-IP: $ip\n";
      $mail_header .= "Content-Type: text/plain";
      if (@mail($mailto,$mail_subject,$text,$mail_header)) $sent = true; else $errors[] = "no connection to the mailserver - please try again later";
    }

    // copy to sender:
    if (isset($sent))
    {
      $copy_subject = strip_tags($mail_subject);
      $copy_subject = str_replace('http://','',$copy_subject);
      $copy_subject = str_replace('www.','www. ',$copy_subject);
      $copy_text = strip_tags($text);
      $copy_text = str_replace('http://','',$copy_text);
      $copy_text = str_replace('www.','www. ',$copy_text);
      if (isset($_FILES['probe']['name']) && trim($_FILES['probe']['name']) != "") $copy_text = "Subject: ".$copy_subject."\n\n".$copy_text."\n\nAttachment: ".$_FILES['probe']['name']; else $copy_mail_text = "Subject: ".$mail_subject."\n\n".$copy_text;
      $header= "From: ".$mailto."\n";
      $header .= "X-Sender-IP: ".$ip."\n";
      $header .= "Content-Type: text/plain";
      @mail($email, "Copy of sent e-mail", $copy_text, $header);
    }
  }
}

if (empty($sent))
{
  if(isset($errors))
  {
    ?><p class="caution">Error:</p><ul><?php foreach($errors as $f) { ?><li><?php echo $f; ?></li><?php } ?></ul><br /><?php
  }

  ?><form method="post" action="<?php echo basename($_SERVER["PHP_SELF"]); ?>" enctype="multipart/form-data"><div>
  <p><b>Name:</b><br /><input type="text" name="name" value="<?php if (isset($name)) echo htmlentities(stripslashes($name)); else echo ""; ?>" size="35" /></p>
  <p><b>E-mail:</b><br /><input type="text" name="email" value="<?php if (isset($email)) echo htmlentities(stripslashes($email)); else echo ""; ?>" size="35" /></p>
  <p><b>Subject:</b><br /><input type="text" name="subject" value="<?php if (isset($subject)) echo htmlentities(stripslashes($subject)); else echo ""; ?>" size="35" /></p>
  <p><b>Message:</b><br /><textarea name="text" cols="55" rows="12"><?php if (isset($text)) echo htmlentities(stripslashes($text)); else echo ""; ?></textarea></p>
  <b>Attachment:</b><br /><input type="file" name="probe" value="<?php if (isset($_POST['probe'])) echo htmlentities(stripslashes($_POST['probe'])); else echo ""; ?>" size="20"/></p>
  <br /><br />
  <p><input type="submit" name="form_submitted" value="OK - Submit" /></p>
  </div></form><?php
}
else
{
  if (empty($email)) { ?><p><b>Thank you!</b><br />The message has been sent successfully but you didn't specify your e-mail address so I can't reply.</p><?php }
  else { ?><p><b>Thank you!</b><br />The message has been sent successfully.</p><?php }
}

?>
</body>
</html>
Avatar billede dotcom1 Nybegynder
16. juni 2006 - 12:33 #3
Du skal bare uploade den som den er. Den "Error" du ser, er den der vil blive vist hvis man glemmer at indtaste navn eller besked. Upload den og så er den klar til brug. :)
Avatar billede dotcom1 Nybegynder
16. juni 2006 - 12:37 #4
PS: Ja, det er meningen, at du kan se php koder i input-felterne i Dreamweaver - sådan skal det være. Du behøver heller ikke oprette en testing server i DW - du kan blot definere dit site (adresse, passwords, osv.) og så lade DW uploade filen dertil.
Avatar billede charwester Nybegynder
16. juni 2006 - 12:52 #5
Ok...så hvis jeg forstår dig ret, så er den formular som jeg "har lavet" et PHP script indsat på en html-side? dvs. når jeg uploader som sædvanligt, så skulle den stå fint, da det webhotel jeg har købt understøtter ASP & PHP?
Avatar billede dotcom1 Nybegynder
16. juni 2006 - 14:18 #6
Både ja og nej. Den er ikke indsat på en html-side, men den er som den er. Hvis du derimod kalder filen for f.eks. formmail.php og uploader den til roden af dit domæne, så kan du se den på www.ditdomæne.dk/formmail.php
Avatar billede charwester Nybegynder
16. juni 2006 - 14:23 #7
Fint, så har jeg fattet det.....tak for din hjælp!
Avatar billede dotcom1 Nybegynder
16. juni 2006 - 14:29 #8
Fino. Lad mig vide om det virker. Du accepterer mit svar ved at markerer mit navn i boksen nederst til venstre og klikker på Acceptér.
Avatar billede dotcom1 Nybegynder
16. juni 2006 - 14:44 #9
Tak for points. :)
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