Avatar billede TheYaXxE Juniormester
24. juni 2010 - 12:58 Der er 13 kommentarer og
1 løsning

Vedhæft funktion i en FormMail

Hej. Jeg er netop i gang med at lave en hjemmeside for mig og min kammerats "firma hjemmeside".

Jeg har så lavet en side hvor man kan ansøge om 'medlemsskab' hvor man skal indtaste oplysninger osv. Alt dette har jeg lavet og der virker fint.
Nu mangler jeg bare en funktion så man også kan vedhæfte et billede med i mailen.

Hvordan gør man, så man kan vedhæfte en fil i en Php-baseret FormMail?

Håber nogle kan hjælpe :)

Tak på forhånd.
Avatar billede michael_stim Ekspert
24. juni 2010 - 13:11 #1
Avatar billede TheYaXxE Juniormester
24. juni 2010 - 13:20 #2
Ja. Der kan jeg ikke finde noget om at vedhæfte filer
Avatar billede michael_stim Ekspert
24. juni 2010 - 13:28 #3
Så har du ikke kigget ;o)
Avatar billede michael_stim Ekspert
24. juni 2010 - 13:39 #4
Taget fra en side efter at have søgt på mail +php +attachment:

OBS: IKKE LÆST IGENNEM, TESTET ELLER NOGET.

[div]
<?php
/* Mailer with Attachments */

$action = $_REQUEST['action'];
global $action;

function showForm() {
?>

  <form enctype="multipart/form-data" name="send" method="post" action="<?=$_SERVER['PHP_SELF']?>">
  <input type="hidden" name="action" value="send" />
  <input type="hidden" name="MAX_FILE_SIZE" value="10000000" />
    <p>Recipient Name: <input name="to_name" size="50" />
    Recipient Email: <input name="to_email" size="50" />
    From Name:  <input name="from_name" size="50" />
    From Email:  <input name="from_email" size="50" />
    Subject:  <input name="subject" size="50" />
    Message: <textarea name="body" rows="10" cols="50">
Avatar billede michael_stim Ekspert
24. juni 2010 - 13:40 #5
Hov, der gik kage i den:


<?php
/* Mailer with Attachments */

$action = $_REQUEST['action'];
global $action;

function showForm() {
?>

  <form enctype="multipart/form-data" name="send" method="post" action="<?=$_SERVER['PHP_SELF']?>">
  <input type="hidden" name="action" value="send" />
  <input type="hidden" name="MAX_FILE_SIZE" value="10000000" />
    <p>Recipient Name: <input name="to_name" size="50" />
    Recipient Email: <input name="to_email" size="50" />
    From Name:  <input name="from_name" size="50" />
    From Email:  <input name="from_email" size="50" />
    Subject:  <input name="subject" size="50" />
    Message: <textarea name="body" rows="10" cols="50"></textarea>
    Attachment: <input type="file" name="attachment" size="50" />
    <input type="submit" value="Send Email" /></p>
 
<?php
}

function sendMail() {
  if (!isset ($_POST['to_email'])) { //Oops, forgot your email addy!
    die ("<p>Oops!  You forgot to fill out the email address! Click on the back arrow to go back</p>");
  }
  else {
    $to_name = stripslashes($_POST['to_name']);
    $from_name = stripslashes($_POST['from_name']);
    $subject = stripslashes($_POST['subject']);
    $body = stripslashes($_POST['body']);
    $to_email = $_POST['to_email'];
    $attachment = $_FILES['attachment']['tmp_name'];
    $attachment_name = $_FILES['attachment']['name'];
    if (is_uploaded_file($attachment)) { //Do we have a file uploaded?
      $fp = fopen($attachment, "rb"); //Open it
      $data = fread($fp, filesize($attachment)); //Read it
      $data = chunk_split(base64_encode($data)); //Chunk it up and encode it as base64 so it can emailed
        fclose($fp);
    }
    //Let's start our headers
    $headers = "From: $from_name<" . $_POST['from_email'] . ">\n";
    $headers .= "Reply-To: <" . $_POST['from_email'] . ">\n";
    $headers .= "MIME-Version: 1.0\n";
    $headers .= "Content-Type: multipart/related; type=\"multipart/alternative\"; boundary=\"----=MIME_BOUNDRY_main_message\"\n";
    $headers .= "X-Sender: $from_name<" . $_POST['from_email'] . ">\n";
    $headers .= "X-Mailer: PHP4\n";
    $headers .= "X-Priority: 3\n"; //1 = Urgent, 3 = Normal
    $headers .= "Return-Path: <" . $_POST['from_email'] . ">\n";
    $headers .= "This is a multi-part message in MIME format.\n";
    $headers .= "------=MIME_BOUNDRY_main_message \n";
    $headers .= "Content-Type: multipart/alternative; boundary=\"----=MIME_BOUNDRY_message_parts\"\n";
   
    $message = "------=MIME_BOUNDRY_message_parts\n";
    $message .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
    $message .= "Content-Transfer-Encoding: quoted-printable\n";
    $message .= "\n";
    /* Add our message, in this case it's plain text.  You could also add HTML by changing the Content-Type to text/html */
    $message .= "$body\n";
    $message .= "\n";
    $message .= "------=MIME_BOUNDRY_message_parts--\n";
    $message .= "\n";
    $message .= "------=MIME_BOUNDRY_main_message\n";
    $message .= "Content-Type: application/octet-stream;\n\tname=\"" . $attachment_name . "\"\n";
    $message .= "Content-Transfer-Encoding: base64\n";
    $message .= "Content-Disposition: attachment;\n\tfilename=\"" . $attachment_name . "\"\n\n";
    $message .= $data; //The base64 encoded message
    $message .= "\n";
    $message .= "------=MIME_BOUNDRY_main_message--\n";

    // send the message
    mail("$to_name<$to_email>", $subject, $message, $headers);
    print "Mail sent.  Thank you for using the MyNewName5333 Mailer.";
  }
}

?>

<!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" xml:lang="en" lang="en">
  <head>
    ****** http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <style="css" type="text/css">
      <!--
      body {
        margin: 0px;
        font-family: Verdana, Arial, Helvetica, sans-serif;
        font-size: 12px;
      }
      a {color: #0000ff}
      -->
    </style>
  </head>
  <body>

<?php
switch ($action) {
  case "send":
    sendMail();
    showForm();
    break;
  default:
    showForm();
}
?>
Avatar billede TheYaXxE Juniormester
24. juni 2010 - 13:59 #6
Har lige testet den. Det ser ikke ud til at virke.. Men tak for hjælpen alligevel :)
Avatar billede michael_stim Ekspert
24. juni 2010 - 14:23 #7
Den fungerer fint. Har lige testet.
Avatar billede michael_stim Ekspert
24. juni 2010 - 14:25 #8
Hopper af tråden her. Kan se at du ikke er så god til at følge op på dine spørgsmål.
Avatar billede TheYaXxE Juniormester
26. juni 2010 - 22:14 #9
Ja. Det har du egentligt ret i. At den virker.

Men jeg bare delt min op i 2 sider. ikke 1
Avatar billede TheYaXxE Juniormester
26. juni 2010 - 22:42 #10
Er der en anden måde man kan lave den på?

Har selv prøvet at dele den op i 2 sider men det kan den ikke.

Det skal også være sådan at indholdet på siden står i body og ikke en del af php kodningen.
Avatar billede TheYaXxE Juniormester
04. april 2011 - 09:38 #11
Har opklaret det nu. michael_stim, hvis du vil have point så skriv et svar herinde :)
Avatar billede michael_stim Ekspert
04. april 2011 - 10:06 #12
Samler ikke på point. Læg selv et svar og accepter.
Avatar billede TheYaXxE Juniormester
13. maj 2011 - 18:25 #13
Lukker tråd
Avatar billede TheYaXxE Juniormester
13. maj 2011 - 18:25 #14
Lukker tråd
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