Avatar billede kimox Nybegynder
24. april 2006 - 13:00 Der er 36 kommentarer og
1 løsning

Hjælp til mailform

Hej.

Er det muligt at kunne vedhæfte en fil i en mailform og få den sendt med til sin mail ? eller skal den lægges op på serveren og der bare bliver sendt et link med i mailen ?

Hvis der godt kan sendes en fil med i mailformen hvordan skal dette så se ud?
Avatar billede jakobdo Ekspert
24. april 2006 - 16:20 #1
Du kan godt lave det, så det bliver sendt via email.
Kig her: http://dk.php.net/mail -> Indlæg: 08-Feb-2006 11:16
Eller overvej evt phpmailer() den understøtter også attachments.
Avatar billede kimox Nybegynder
24. april 2006 - 16:26 #2
Hvor finder jeg noget om phpmailer()?
Avatar billede jakobdo Ekspert
24. april 2006 - 17:11 #3
Avatar billede kimox Nybegynder
25. april 2006 - 13:39 #4
må sige det er nogle rimelige lange koder der skal ændres på :-p
Avatar billede jakobdo Ekspert
25. april 2006 - 14:46 #5
Nej, det er altså ikke det store.
Du skal bruge eksemplet fra her: http://phpmailer.sourceforge.net/extending.html (se nederst på siden)
Avatar billede kimox Nybegynder
25. april 2006 - 15:14 #6
Det er bare det at jeg har jo 10 felter de skal udfylde med navn, adr, tlf, email osv.
Avatar billede jakobdo Ekspert
25. april 2006 - 19:59 #7
Du tager jo "bare" koden fra eksemplet.
Tilføjer:

$body  = "Test fra hjemmesiden";
$body .= "Navn: " . $_POST['navn'] . "\n";
$body .= "Email: " . $_POST['email'] . "\n";
$body .= "Tlf: " . $_POST['tlf'] . "\n";
//osv...
$mail->Body    = $body;
Avatar billede kimox Nybegynder
25. april 2006 - 20:48 #8
aah okay, så det er kun det øverste på  http://phpmailer.sourceforge.net/extending.html man retter i og ikke class filen
Avatar billede jakobdo Ekspert
25. april 2006 - 21:29 #9
Nej, du skal bare bruge en form, som poster filen og nogle felter til følgende kode:

require("mail.inc.php");

// Instantiate your new class
$mail = new MyMailer;

// Now you only need to add the necessary stuff
$mail->AddAddress("josh@site.com", "Josh Adams");
$mail->Subject = "Here is the subject";
$body  = "Test fra hjemmesiden";
$body .= "Navn: " . $_POST['navn'] . "\n";
$body .= "Email: " . $_POST['email'] . "\n";
$body .= "Tlf: " . $_POST['tlf'] . "\n";
//osv...
$mail->Body    = $body;
$mail->AddAttachment($_FILES['filen']['tmp_name'], "filnavn.endelse");  // optional name

if(!$mail->Send())
{
  echo "There was an error sending the message";
  exit;
}

echo "Message was sent successfully";
Avatar billede jakobdo Ekspert
25. april 2006 - 21:31 #10
Og du har ikke nøde at bruge den extended version, du kan bare bruge phpmailer() direkte.
Undskyld jeg måske har forvirret med den extendede class.
Men løsningen er mere eller mindre den samme.
Prøv dig lidt frem, så skal jeg nok prøve at guide dig på rette spor.
Avatar billede kimox Nybegynder
25. april 2006 - 21:46 #11
Det lyder rigtig godt. jeg kigger på det i morgen tidlig :-)
Avatar billede kimox Nybegynder
26. april 2006 - 08:37 #12
dette:

class MyMailer extends PHPMailer {
    // Set default variables for all new objects
    var $From    = "from@email.com";
    var $FromName = "Mailer";
    var $Host    = "smtp1.site.com;smtp2.site.com";
    var $Mailer  = "smtp";                        // Alternative to IsSMTP()
    var $WordWrap = 75;

    // Replace the default error_handler
    function error_handler($msg) {
        print("My Site Error");
        print("Description:");
        printf("%s", $msg);
        exit;
    }

    // Create an additional function
    function do_something($something) {
        // Place your new code here
    }
}


skal jeg sætte ind i en mail.inc.php fil.

og så skal jeg lægge class.phpmailer.php op. Men class.phpmailer.php skal jeg ikke pille ved.. og mail.inc.php skal kun rettes til med mine oplysninger øverst. og så sætter jeg det ind som du skrev her øverst ikke ?
Avatar billede jakobdo Ekspert
26. april 2006 - 09:34 #13
Du skal bruge noget i stil med:

require("class.phpmailer.php");

$mail = new PHPMailer();

$mail->From    = "list@mydomain.com";
$mail->FromName = "List manager";

// HTML body
$body  = "Hello <font size=\"4\">" . $_POST['navn'] . "</font>, <p>";
$body .= "<i>Your</i> personal photograph to this message.<p>";
$body .= "Sincerely, <br>";
$body .= "PHPMailer List manager";

// Plain text body (for mail clients that cannot read HTML)
$text_body  = "Hello " . $_POST['navn'] . ", \n\n";
$text_body .= "Your personal photograph to this message.\n\n";
$text_body .= "Sincerely, \n";
$text_body .= "PHPMailer List manager";

$mail->Body    = $body;
$mail->AltBody = $text_body;
$mail->AddAddress($_POST['email'], $_POST['navn']);
$mail->AddAttachment($_FILES['upload_file']['tmp_name'], "filnavn.endelse");

if(!$mail->Send())
    echo "There has been a mail error sending to " . $row["email"] . "<br>";

// Clear all addresses and attachment
$mail->ClearAddresses();
$mail->ClearAttachments();
Avatar billede kimox Nybegynder
26. april 2006 - 09:37 #14
Yes jeg kan godt få den til at sende mailen til en adr. men den sender ikke filen med :/
Avatar billede kimox Nybegynder
26. april 2006 - 09:38 #15
<?
if (isset($_POST['submit']))
{
require("mailer/mail.inc.php");

// Instantiate your new class
$mail = new MyMailer;

// Now you only need to add the necessary stuff
$mail->AddAddress("xx@xxx.dk");
$mail->Subject = "Ansøgning til " . $_POST['job'] ."\n\n";
$body  = " " . $_POST['id'] ."\n";
$body  = "Unikt job id: " . $_POST['id'] ."\n\n\n";
$body  = "Ansøgning til: " . $_POST['job'] ."\n\n";
$body .= "Navn: " . $_POST['fornavn'] . " " . $_POST['efternavn'] ."\n\n";
$body .= "Gadeadresse: " . $_POST['gade'] . "\n\n";
$body .= "Postnr: " . $_POST['postnr'] . "\n\n";
$body .= "By: " . $_POST['bynavn'] . "\n\n";
$body .= "Fødselsdato: " . $_POST['fdag'] . "\n\n";
$body .= "Telefon hjem: " . $_POST['tlfhjem'] . "\n\n";
$body .= "Telefon mobil: " . $_POST['tlfmob'] . "\n\n";
$body .= "E-mail: " . $_POST['email'] . "\n\n";
$body .= "Fagforening og branche: " . $_POST['fagbran'] . "\n\n\n";
$body .= "Beskriv dine kompetencer her:\n\n" . $_POST['tekst'] . "\n";
$mail->Body    = $body;
$mail->AddAttachment($_FILES['filup']['tmp_name'], "cv.doc");  // optional name

if(!$mail->Send())
{
  echo "There was an error sending the message";
  exit;
}

echo "Message was sent successfully";

}
?>
Avatar billede kimox Nybegynder
26. april 2006 - 09:39 #16
$mail->AddAttachment($_FILES['filup']['tmp_name'], "cv.doc");  // optional name

jeg ved ik om det var sådan det skal stå ? for der stod kun $mail->AddAttachment($_FILES['filup']['tmp_name'], "filnavn.endelse");  // optional name
Avatar billede kimox Nybegynder
26. april 2006 - 13:01 #17
hmm ikke engang hvis jeg gør dette:

$mail->AddAttachment("m:/cv.doc", "cv.doc");

virker det..
Avatar billede jakobdo Ekspert
26. april 2006 - 15:43 #18
m:/cv.doc skal jo være den eksakte sti til filen.
Det kan være filen skal flyttes med move_uploaded_file() inden du kan bruge den.
Og stien er så i stil med: /var/srv/noget/andet/dit/site/
Avatar billede kimox Nybegynder
26. april 2006 - 16:21 #19
ja altså jeg havde helst set det bare kørte som her:

$mail->AddAttachment($_FILES['filup']['tmp_name'], "cv.doc");  // optional name
Avatar billede jakobdo Ekspert
26. april 2006 - 16:25 #20
Jeg skal nok kigge på det i aften, så må jeg sætte min egen test op! :o)
Avatar billede kimox Nybegynder
26. april 2006 - 16:57 #21
mange tak!! - det vil være helt perfekt !
Avatar billede jakobdo Ekspert
26. april 2006 - 17:01 #22
Dette virker på min server:

<?php
//http://www.eksperten.dk/spm/704910
if(isset($_POST['done']))
{
    require("class.phpmailer.php");

    $mail = new PHPMailer();

    $mail->From    = "no-reply@site.dk";
    $mail->FromName = "Dit site";

    // HTML body
    $body  = "Hello <font size=\"4\">" . $_POST['name'] . "</font>, <p>";
    $body .= "<i>Your</i> personal photograph to this message.<p>";
    $body .= "Sincerely, <br>";
    $body .= "PHPMailer List manager";
   
    // Plain text body (for mail clients that cannot read HTML)
    $text_body  = "Hello " . $_POST['name'] . ", \n\n";
    $text_body .= "Your personal photograph to this message.\n\n";
    $text_body .= "Sincerely, \n";
    $text_body .= "PHPMailer List manager";
   
    $mail->Body    = $body;
    $mail->AltBody = $text_body;
    $mail->AddAddress($_POST['email'], $_POST['name']);
    $mail->AddAttachment($_FILES['file']['tmp_name'], "fil.jpg");
   
    if(!$mail->Send())
        echo "There has been a mail error sending to " . $_POST['email'] . "<br>";
   
    // Clear all addresses and attachment
    $mail->ClearAddresses();
    $mail->ClearAttachments();
}

echo '<form action="" method="post" enctype="multipart/form-data">';
echo 'File:  <input type="file" name="file"  /><br />';
echo 'Email: <input type="text" name="email" /><br />';
echo 'Name:  <input type="text" name="name"  /><br />';
echo '<input type="submit" name="done" value="Afsend"  /><br />';
echo '</form>';

?>
Avatar billede kimox Nybegynder
26. april 2006 - 17:14 #23
okay, det er heller ik den kode jeg bruger, jeg bruger denne:

<?
if (isset($_POST['submit']))
{
require("mailer/mail.inc.php");

// Instantiate your new class
$mail = new MyMailer;

// Now you only need to add the necessary stuff
$mail->AddAddress("xx@xxx.dk");
$mail->Subject = "Ansøgning til " . $_POST['job'] ."\n\n";
$body  = " " . $_POST['id'] ."\n";
$body  = "Unikt job id: " . $_POST['id'] ."\n\n\n";
$body  = "Ansøgning til: " . $_POST['job'] ."\n\n";
$body .= "Navn: " . $_POST['fornavn'] . " " . $_POST['efternavn'] ."\n\n";
$body .= "Gadeadresse: " . $_POST['gade'] . "\n\n";
$body .= "Postnr: " . $_POST['postnr'] . "\n\n";
$body .= "By: " . $_POST['bynavn'] . "\n\n";
$body .= "Fødselsdato: " . $_POST['fdag'] . "\n\n";
$body .= "Telefon hjem: " . $_POST['tlfhjem'] . "\n\n";
$body .= "Telefon mobil: " . $_POST['tlfmob'] . "\n\n";
$body .= "E-mail: " . $_POST['email'] . "\n\n";
$body .= "Fagforening og branche: " . $_POST['fagbran'] . "\n\n\n";
$body .= "Beskriv dine kompetencer her:\n\n" . $_POST['tekst'] . "\n";
$mail->Body    = $body;
$mail->AddAttachment($_FILES['filup']['tmp_name'], "cv.doc");  // optional name

if(!$mail->Send())
{
  echo "There was an error sending the message";
  exit;
}

echo "Message was sent successfully";

}
?>
Avatar billede jakobdo Ekspert
26. april 2006 - 18:15 #24
Prøv at test min kode og se om den også virker hos dig.
Avatar billede kimox Nybegynder
26. april 2006 - 19:21 #25
der sætter jeg bare body'en ind hvor din er også ikke? og også nede i text_body ?
Avatar billede jakobdo Ekspert
26. april 2006 - 19:24 #26
Du tager koden fra <? til og med ?>
Gemmer det som noget.php
åbner siden og tester.
Avatar billede kimox Nybegynder
26. april 2006 - 21:16 #27
hmm det gider den sku ik :/
Avatar billede jakobdo Ekspert
26. april 2006 - 21:32 #28
Så skal du have gang i at filen skal flyttes først.
Find et eksempel hvor move_uploaded_file() bruges, implementer det lige før du kalder:
$mail->AddAttachment($_FILES['filup']['tmp_name'], "cv.doc");  // optional name
Så har du din løsning.
Det er muligvis fordi du har safe_mode = on.
Her et svar!
Avatar billede jakobdo Ekspert
26. april 2006 - 21:32 #29
Og svar!
Avatar billede jakobdo Ekspert
26. april 2006 - 21:41 #30
Du skal chmod'e diret filen er i, til f.eks. 644.
Så retter du denne linie:

$mail->AddAttachment($_FILES['filup']['tmp_name'], "cv.doc");  // optional name

til:

move_uploaded_file($_FILES['filup']['tmp_name'],"cv.doc");
$mail->AddAttachment("cv.doc", "cv.doc");  // optional name

Det kan måske gøre det.
$mail->AddAttachment($_FILES['filup']['tmp_name'], "cv.doc");  // optional name
Avatar billede kimox Nybegynder
26. april 2006 - 21:41 #31
nej jeg trækker det tilbage, jeg har lige modtaget dem nu.. efter 30 min .. så den form du havde den virkede
Avatar billede jakobdo Ekspert
26. april 2006 - 21:41 #32
Supert...
Jeg takker for point.
Avatar billede kimox Nybegynder
27. april 2006 - 10:05 #33
MEGET underligt.. nu virker den pludselig ikke, nu vil den kun sende teksten .. hmmmmm... jeg prøver lige det med

move_uploaded_file($_FILES['filup']['tmp_name'],"cv.doc");
$mail->AddAttachment("cv.doc", "cv.doc");  // optional name

kan man lave

unlink("cv.doc");
eller et eller andet efter
$mail->AddAttachment("cv.doc", "cv.doc");  // optional name
Avatar billede jakobdo Ekspert
27. april 2006 - 10:33 #34
Det kunne du godt gøre ja.
Så slettes filen altid efter den er sendt.
Avatar billede kimox Nybegynder
27. april 2006 - 12:03 #35
den kan ikke engang finde ud af at lægge filen op på min server.. nu forstår jeg det snart ikke.. og det virkede fint igår aftes da jeg testede hvad du lavede.. og der har jeg taget det samme og så bare sat nogle flere ting på.. se:

<?
if (isset($_POST['send']))
{
    require("mailer/class.phpmailer.php");

    $mail = new PHPMailer();

    $mail->From    = "robot@xxxx.dk";
    $mail->FromName = "Ansøgning";
    $mail->Subject = "Ansøgning til " . $_POST['job'] ."\n\n";
    $id = $_POST['id'];

    // HTML body
    $body = "Ansøgning til: " . $_POST['job'] ."<br /><br />";
    $body .= "Unikt job id: " . $_POST['id'] ."<br /><br />";
    $body .= "Job link: " . "<a href=\"http://www.xxxx.dk/xx/ansoeg_job.php?id=$id\" target=\"_blank\">". $_POST['job'] ."</a>" . "<br /><br /><br />";
    $body .= "Navn: " . $_POST['fornavn'] . " " . $_POST['efternavn'] ."<br /><br />";
    $body .= "Gadeadresse: " . $_POST['gade'] . "<br /><br />";
    $body .= "Postnr: " . $_POST['postnr'] . "<br /><br />";
    $body .= "By: " . $_POST['bynavn'] . "<br /><br />";
    $body .= "Fødselsdato: " . $_POST['fdag'] . "<br /><br />";
    $body .= "Telefon hjem: " . $_POST['tlfhjem'] . "<br /><br />";
    $body .= "Telefon mobil: " . $_POST['tlfmob'] . "<br /><br />";
    $body .= "E-mail: " . $_POST['email'] . "<br /><br />";
    $body .= "Fagforening og branche: " . $_POST['fagbran'] . "<br /><br /><br />";
    $body .= "Beskriv dine kompetencer her:<br /><br />" . $_POST['tekst'] . "<br />";
   
    // Plain text body (for mail clients that cannot read HTML)
    $text_body = "Ansøgning til: " . $_POST['job'] ."\n\n";
    $text_body .= "Unikt job id: " . $_POST['id'] ."\n\n\n";
    $text_body .= "Job link: http://www.xxxx.dk/web/ansoeg_job.php?id=$id" . "<br /><br />";
    $text_body .= "Navn: " . $_POST['fornavn'] . " " . $_POST['efternavn'] ."\n\n";
    $text_body .= "Gadeadresse: " . $_POST['gade'] . "\n\n";
    $text_body .= "Postnr: " . $_POST['postnr'] . "\n\n";
    $text_body .= "By: " . $_POST['bynavn'] . "\n\n";
    $text_body .= "Fødselsdato: " . $_POST['fdag'] . "\n\n";
    $text_body .= "Telefon hjem: " . $_POST['tlfhjem'] . "\n\n";
    $text_body .= "Telefon mobil: " . $_POST['tlfmob'] . "\n\n";
    $text_body .= "E-mail: " . $_POST['email'] . "\n\n";
    $text_body .= "Fagforening og branche: " . $_POST['fagbran'] . "\n\n\n";
    $text_body .= "Beskriv dine kompetencer her:\n\n" . $_POST['tekst'] . "\n";   
   
    $mail->Body    = $body;
    $mail->AltBody = $text_body;
    $mail->AddAddress("xx@xxx.dk");
    move_uploaded_file($_FILES['file']['tmp_name'], "cv.doc");
    $mail->AddAttachment("cv.doc", "cv.doc");  // optional name
   
    if(!$mail->Send())
        echo "There has been a mail error sending to " . $_POST['email'] . "<br>";
   
    // Clear all addresses and attachment
    $mail->ClearAddresses();
    $mail->ClearAttachments();
}
?>
Avatar billede kimox Nybegynder
27. april 2006 - 12:05 #36
Havde du ændret noget i "class.phpmailer.php" ?
Avatar billede kimox Nybegynder
27. april 2006 - 12:35 #37
det virker nu.

-lukket-
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