Avatar billede comodin Nybegynder
25. maj 2004 - 14:02 Der er 19 kommentarer og
2 løsninger

Mail og attach igen, snøft

ok har fundet frem til noget mail der kan attache et billede, nedenstående virker osse fint MEN... den sender ikke noget tekst med... har prøvet forskellige ting, men er ikke den største haj til php så...
jeg vil gerne have at det man indtaster i de øverste felter under Navn og adresse f.eks kommer med i mailen som tekst...
jeg kom til at ændre noget på et tidspunkt, hvor den så godt gad at sende tekst, men så var billedet ikke med, dvs. det var med som en lang tekstfil...
håber der er nogen der kan hjælpe og give en pædagogisk forklaring...

<html>
<head>
</head>
<body><form action="untitled1.php?acn=attach" method="post" enctype="multipart/form-data">
indtast navn:<input type="text" name="userNavn"><br>
indtast adresse:<input type="text" name="userAdresse"><br>
<input type="file" name="fileatt">
<input type="submit">
</form>
</body>
</html>
<?
if($acn == 'attach')
{
    $fileatt_type = "application/octet-stream"; //File Type
   
    $email_from = "memyself@I.com"; // Who the email is from
    $email_subject = "Test File Attach"; // The Subject of the email
    $email_txt = "Testing attachment"; // Message that the email has in it
    $email_to = "me@something.dk"; // Who the email is too
   
    $headers = "From: ".$email_from;
   
    $file = fopen($fileatt,'rb');
    $data = fread($file,filesize($fileatt));
    fclose($file);
   
    $semi_rand = md5(time());
    $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
   
    $headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\"";
   
    $email_message .= "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type:text/html; charset=\"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $email_message . "\n\n";
   
    $data = chunk_split(base64_encode($data));
   
    $email_message .= "--{$mime_boundary}\n" . "Content-Type: {$fileatt_type};\n" . " name=\"{$fileatt_name}\"\n" . "Content-Disposition: attachment;\n" . " filename=\"{$fileatt_name}\"\n" . "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n" . "--{$mime_boundary}--\n";
    $email_message = $email_message.$email_txt;
   
    $ok = @mail($email_to, $email_subject, $email_message, $headers);
   
    if($ok) {
        echo "<font face=verdana size=2>The file was successfully sent!</font>";
    } else {
        die("Sorry but the email could not be sent. Please go back and try again!");
    }
}
?>
Avatar billede Slettet bruger
25. maj 2004 - 14:03 #1
Kig lidt på dette script.
http://delfs.dk/tricks.attachments.php

Det giver en god gennemgang af hvordan man vedhæfter filer.
Avatar billede kokoko Nybegynder
25. maj 2004 - 14:19 #2
Hvorfor er det du ikke bare ligger billederne op på din server og henviser dertil i din email? Så slipper du også for at skulle sende billedet.
Avatar billede comodin Nybegynder
25. maj 2004 - 14:38 #3
hehe tja hvorfor ikke...
lad mig sige det på denne måde, jeg er ikke stærk i php og slet ikke i database ting, og eftersom at det kan lade sig gøre kun med php tænkte jeg, juhuuu ;-)
men så let skulle det jo ikke være...
Avatar billede comodin Nybegynder
25. maj 2004 - 14:53 #4
cyperman -> har prøvet at læse den reference du gav, men her er der intet held... ved godt at det måske er let nok hvis man kender lidt mere til php men ikke for mig...
er der ikke en som kan se i min kode ovenover hva' det er der går galt, og hvorfor jeg ikke kan se teksten i mailen?
Avatar billede kokoko Nybegynder
25. maj 2004 - 15:18 #5
Det jeg mente var at du kan lave mailen som en html side. Hvis du placerer billederne på din server kan du referer til dem der. Det er meget mere simpelt end det du vil.
Avatar billede Slettet bruger
25. maj 2004 - 15:58 #6
Dog ikke dit script jeg har rettet, men dette virker også efter hensigten :)
Det skulle være rimelig simpelt at rette til, men ellers siger du bare til.

<?PHP

// Hvis din mail er sendt.
if(isset($_POST[afsend])) {
       
    $fil = $_FILES['fileatt']['name'];
    $fra = $_POST[email];
    $til = $_POST[modtager];
    $emne = $_POST[emne];
    $besked = $_POST[indhold];
 
    // Definér $boundary
    // boundary er en unik streng der identifiserer vores email
    $boundary = uniqid("");
 
    // Siden det er en tekstfil, kender vi allerede MIME typen
    $mimeType =  "application/unknown";
 
    // Læs filen ind i en variable
    $fil_var = fread(fopen($_FILES['fileatt']['tmp_name'], "r"), filesize($_FILES['fileatt']['tmp_name']));
 
    // Gør filen læsevenlig for email-klienten
    $fil_var = base64_encode($fil_var);
 
    // Split filkoden op i linier med 76 tegn i hver
    $fil_var = chunk_split($fil_var);
 
    // Følgende lille stykke klarer det meste mht. headers, der fortæller email-klienten hvad der er på vej

    // Vi sætter vores unikke streng ind her
    $body  = "\n--$boundary\n";
 
    // Vi fortæller at følgende stump er af typen text/plain samt
    // hvilket tegnsæt vi bruger
    $body .= "Content-type: text/plain; charset=iso-8859-1\n";
    $body .= "Content-transfer-encoding: 8bit\n\n";
   
    // Vi sætter body-texten ind her
    $body .= $besked."\n\n";
   
    // Slut på brødteksten
    $body .= "--$boundary\n";
 
    // Så er det filens tur
    // Vi fortæller lige mime-typen og filnavnet
    $body .= "Content-type: $mimeType; name=".$fil."\n";
 
    // Fortæller at vi vil have filen hæftet ved - ikke direkte i mailen.
    // Vil du gerne have den direkte i mailen, ændres 'attachment' til 'inline'
    // Bemærk: Bl.a. OE viser _også_ filen i selve mailen selvom du angiver 'attachment'
    $body .= "Content-disposition: attachment; filename=".$fil."\n";
 
    // Klienten skal have at vide at meddelelsen er encoded med base64
    $body .= "Content-transfer-encoding: base64\n\n";
 
    // Vi sætter filkoden ind
    $body .= $fil_var."\n\n";
 
    // Vi slutter af med den samme unikke streng som vi startede med
    $body .= "--$boundary--";
 
    // Vi definerer from-headeren
    $headers  = "From: ".$fra."<it@psykiatri.aaa.dk>\n";
 
    // Vi fortæller hvilken type indhold mailen indeholder
    // samt emailens unikke id-streng
    $headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"";
 
    // Hvis mailen bliver sendt afsted problemfrit
    if (mail($til, $emne, $body, $headers)) {
        echo "Mailen er sendt!";
     
    // Hvis ikke skriver vi lige en fejlmeddelelse
    } else {
        echo "Der opstod en fejl, og mailen blev ikke sendt!";
    }
}
?>

<html>
<head>
  <meta name="Generator" content="Stone's WebWriter 4" />
</head>
<body>
  <form action="" method="post" enctype="multipart/form-data">
  Afsenders email: <input type="text" name="email"><br>
  Modtagers email: <input type="text" name="modtager"><br>
  Emne i mail: <input type="text" name="emne"><br>
  Teksten i mailen: <input type="text" name="indhold"><br>
  Filen: <input type="file" name="fileatt"><br>
  <input name="afsend" type="submit" value="Send email">
  </form>
</body>
</html>
Avatar billede swaxi Nybegynder
25. maj 2004 - 16:22 #7
Avatar billede comodin Nybegynder
25. maj 2004 - 17:45 #8
cypermann-> yes yes, jeg kommer igen

jeg prøvede at sætte alt det du har, ind i det samme nye .php dokument

det jeg så modtager er dette:
To: min@adresse.dk
Subject: ingenting
From: hedie@asd.dk <it@psykiatri.aaa.dk> 


--40b3680c3479f
Content-type: text/plain; charset=iso-8859-1
Content-transfer-encoding: 8bit


heller ingenting


--40b3680c3479f
Content-type: application/unknown; name=smiley.jpg
Content-disposition: attachment; filename=smiley.jpg
Content-transfer-encoding: base64


/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAPAAA/+4ADkFkb2JlAGTAAAAAAf/b
AIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoKDBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxsc
Hx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f
Hx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAEAAQAwERAAIRAQMRAf/EAGwAAQEBAAAAAAAAAAAAAAAA
AAUEBwEBAAMBAAAAAAAAAAAAAAAAAwECBQYQAAICAgIDAQAAAAAAAAAAAAECAwQFBhESACETUREA
AgEDAgYDAQAAAAAAAAAAAQIRAAMEQRIxUZHhEzMhgTIU/9oADAMBAAIRAxEAPwDTNl3nG2YRNKFu
/cCQRyh2q14nJ+SMEKqZpFHY9jz+ebeOiW22s2wjqeulc/keW8u5U8gPQfQ4nmdKKxm3ZvWclTsX
KclDE3+0kcMg+cbxKR3Kxklk6hh17AHxX8OSGVf0o486olu9ibXaApPyo0oTfcLsGpvZghNiPFty
0bRTSw15VQBY+5VhH2CgAhvzyLJs3gGKqX1kkdqdhesSoZlt6EKD3qfUcNt29ZChDdnsWsNUPLT2
HMscaPx9Asje2ZgOB7Pi3v58ZSyexhETMUds5GSQr+sGZiJr/9k=


--40b3680c3479f--

jeg kan godt se at den tekst jeg har indtastet kommer med, men billedet er der ikke???
Avatar billede Slettet bruger
25. maj 2004 - 22:45 #9
Det var sært.
Det virker ellers glimmerende på min egen lille test maskine.
Avatar billede comodin Nybegynder
25. maj 2004 - 22:58 #10
tja det synes jeg osse...
kan det have noget at gøre med safemode i php ??? var inde og kigge der hvor jeg har webhotel og der stod at deres servere kører PHP i safemode
Avatar billede Slettet bruger
26. maj 2004 - 00:13 #11
hmm... det er den eneste logiske forklaring jeg umiddelbart kan komme med.
Men det virker jo lidt underligt, hvis dit andet script virkede.

Jeg vil lige kigge lidt på det her inden det bliver sengetid.
Avatar billede Slettet bruger
26. maj 2004 - 01:05 #12
Jeg må indrømme at før jeg kiggede i denne tråd ikke rigtig har arbejdet med vedhæftet filer.
Ud fra det link jeg gav i mit første svar, har jeg sammensat følgende til dig.
Dette virker også ganske fint på min egen maskine, så lad os da håbe det virker på din :)

Husk lige at rette din@mail.dk til hvor du nu vil modtage testen :)
Så er det vist også sengetid.

<html>
<head>
</head>
<body>
  <form action="untitled1.php?acn=attach" method="post" enctype="multipart/form-data">
  Indhold i mail:<input type="text" name="body"><br>
  <input type="file" name="filen">
  <input type="submit">
  </form>
</body>
</html>

<?PHP
if($acn == 'attach')
{

    $boundary = uniqid('');
    $mimeType = ($_FILES['filen']['type'] ? $_FILES['filen']['type'] : 'application/unknown');
    $file = fread(fopen($_FILES['filen']['tmp_name'], 'r'), filesize($_FILES['filen']['tmp_name']));
    $file = base64_encode($file);
    $file = chunk_split($file);

    $body  = "\n--$boundary\n";
    $body .= "Content-type: text/plain; charset=iso-8859-1\n";
    $body .= "Content-transfer-encoding: 8bit\n\n";
    $body .= $_POST['body']."\n\n";
    $body .= "--$boundary\n";
    $body .= "Content-type: $mimeType; name=".$_FILES['filen']['name']."\n";
    $body .= "Content-disposition: attachment; filename=".$_FILES['filen']['name']."\n";
    $body .= "Content-transfer-encoding: base64\n\n";
    $body .= $file."\n\n";
    $body .= "--$boundary--";
    $headers = "Content-type: multipart/mixed; boundary=\"$boundary\"";


    $ok = mail('din@email', 'Test vedhæft', $body, $headers);
   
    if($ok) {
        echo "<font face=verdana size=2>The file was successfully sent!</font>";
    } else {
        die("Sorry but the email could not be sent. Please go back and try again!");
    }
}
?>
Avatar billede comodin Nybegynder
26. maj 2004 - 09:16 #13
hmmm weird,den gør bare det samme og sender en mail so denne:
To: jannik@comodin.dk
Subject: Test vedhæft
From: comodin.dk@srv1.b-one.nu (comodin.dk) 


--40b44345d6eb4
Content-type: text/plain; charset=iso-8859-1
Content-transfer-encoding: 8bit


work work work


--40b44345d6eb4
Content-type: image/jpeg; name=smiley.jpg
Content-disposition: attachment; filename=smiley.jpg
Content-transfer-encoding: base64


/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAPAAA/+4ADkFkb2JlAGTAAAAAAf/b
AIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoKDBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxsc
Hx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f
Hx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAEAAQAwERAAIRAQMRAf/EAGwAAQEBAAAAAAAAAAAAAAAA
AAUEBwEBAAMBAAAAAAAAAAAAAAAAAwECBQYQAAICAgIDAQAAAAAAAAAAAAECAwQFBhESACETUREA
AgEDAgYDAQAAAAAAAAAAAQIRAAMEQRIxUZHhEzMhgTIU/9oADAMBAAIRAxEAPwDTNl3nG2YRNKFu
/cCQRyh2q14nJ+SMEKqZpFHY9jz+ebeOiW22s2wjqeulc/keW8u5U8gPQfQ4nmdKKxm3ZvWclTsX
KclDE3+0kcMg+cbxKR3Kxklk6hh17AHxX8OSGVf0o486olu9ibXaApPyo0oTfcLsGpvZghNiPFty
0bRTSw15VQBY+5VhH2CgAhvzyLJs3gGKqX1kkdqdhesSoZlt6EKD3qfUcNt29ZChDdnsWsNUPLT2
HMscaPx9Asje2ZgOB7Pi3v58ZSyexhETMUds5GSQr+sGZiJr/9k=


--40b44345d6eb4--

men eftersom jeg kan sende filerne seperat, altså sende billedet for sig og teksten for sig, er jeg næsten på vej til at lave sådan en sending á 2 sider...

men lige for et sidste forsøg, hva' så hvis man uploader filen til serveren og derefter henter filen i mailen bagefter, er det noget som kan lade sig gøre?
nok det som kokoko taler om...
men det er jo sådan at brugeren selv skal vælge et billede som skal sendes med jo...
Avatar billede comodin Nybegynder
26. maj 2004 - 09:17 #14
cypermann -> hvis det virker på din maskine og du modtager en mail med både tekst og billede kan du så ikke prøve at sende en mail til mig, så kan jeg da se om det er her fejlen ligger i en eller anden dur...
jannik(at)comodin(dot)dk
Avatar billede Slettet bruger
26. maj 2004 - 10:12 #15
Jo det gør jeg da lige :)
jeg har faktisk igennem en kammerat adgang til en af b-one's servere, kan se din ligger på srv1, så jeg testede lige hos min kammerat. Hans ligger på srv6 og der virker det også udemærket.

men jeg sender lige en mail :)
Avatar billede Slettet bruger
26. maj 2004 - 10:21 #16
U got mail?
Avatar billede comodin Nybegynder
26. maj 2004 - 14:43 #17
har fået en fin mail tak, men fuld af mærkelige tegn...
jeg fatter det efterhånden ikke mere...
har både checket gennem mit alm. mail prog. og osse gennme min webmail nu... men med samme resultat...
skal jeg virkelig give op med dette her oder was?
Avatar billede comodin Nybegynder
26. maj 2004 - 14:46 #18
cypermann -> kan du evt. maile mig de filer du har brugt, bare så jeg er helt sikker på at jeg bruger de rigtige...
ikke fordi der burde kunne gå så meget galt i det jeg har lavet og alligevel...
men det ville være super hvis du gad at sende tak ;-)
Avatar billede Slettet bruger
26. maj 2004 - 14:56 #19
Det virker meget underligt.
Jeg benytter selv outlook 2003, hvor der ingen problemer er.
Så det virker lidt mystisk.
Ifølge ekspertens regler, skal alt jo være tilgængelig for alle brugere. Derfor laver jeg også lige en .phps af filen jeg mailer dig, så andre også kan få adgang til den.

Jeg forwarder også lige en af de mails jeg selv har modtaget via php filen, så du kan se mit resultat.
Avatar billede comodin Nybegynder
26. maj 2004 - 21:58 #20
cypermann -> vil lige sige tusind tak for hjælpen...
det ser ud til at det er noget med b-one eller noget, da jeg prøvede at sende til en hotmail virkede det uden problemer...
men hold da op en tur at være igennem, det jeg havde virkede sq nok fra første færd hehe
Avatar billede Slettet bruger
26. maj 2004 - 22:36 #21
heh :)
Det var underligt. Men prøv at kontakte dem så. For det er da lidt sært.
Ja det var en stor omgang, men så lærte vi da også begge noget af det :)

Koden jeg sendte er vist i det sidste indlæg med PHP kode.
Men ligger også her til folk der kan bruge det http://cypermann.dk/exp/502313/email.phps

Tak for points, og denne omgang :)
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