Avatar billede henrik2008 Nybegynder
23. januar 2012 - 23:11 Der er 9 kommentarer og
1 løsning

php mail med billeder

hej, er der nogle der gider at hjælpe mig med php mail ?

jeg har lavet et lille nyedsbrev system med php og mysql

jeg bruger tinymce (fantastisk, de er bare så godt!)

alt viker, næsten da.

jeg kan sende email med html indhold farver /fonte osv, men ikke
billeder vedhæftet filer (det skal være sådan at man se
emails med billeder der vises i selve emailen).
jeg bruger headers med html og php file_get conents og bounderies.

nu siger cliche (cliche web hosting!), " file get url disabled".
jeg har kigget på cliche serveren med phpinfo(), der står
allowurl=off, dvs. at cliche ikke undersøtter file get contents!.

cliche understøtter vistnok cURL file get contents.

jeg har prøvet med file atacments i headers og mail body delen og php file read file, men intet virker, stadigvæk samme error!.

her er mit script.

<?PHP   


$File = "http://minadresse/kontaktpic.jpg";
$fh = fopen($File, 'r');
$theData = fgets($fh);
fclose($fh);



$to =    'minemail@yahoo.dk';
$subject =    'PHP Mail Attachment Test';
$bound_text =    "test1234";
$bound =    "--".$bound_text."\r\n";
$bound_last =    "--".$bound_text."--\r\n";
   
$headers =    "From: minemail@yahoo.dk\r\n";
$headers .=    "MIME-Version: 1.0\r\n"
    ."Content-Type: multipart/mixed; boundary=\"$bound_text\"";

$header .= "Content-Type: application/octet-stream; name=\"".$theData."\"\r\n";
   
$message .=    "hvis du kan se denne tekst, understøtter din mail client ikke MIME types!\r\n"
    .$bound;
   
$message .=    "Content-Type: text/html; charset=\"iso-8859-1\"\r\n"
    ."Content-Transfer-Encoding: 7bit\r\n\r\n"
    ."hej <b>hejsa </b> her er mit billed\r\n"
    .$bound;
   
   
$message .=    "Content-Type: image/jpg;  name=\"".$theData."\r\n"
    ."Content-Transfer-Encoding: base64\r\n"
    ."Content-disposition: attachment; file=\"kontaktpic.jpg\"\r\n"
    ."\r\n"
    .chunk_split(base64_encode($file))
    .$bound_last;
if(mail($to, $subject, $message, $headers))
{
    echo 'email sendt';
} else {
    echo 'fejl, email ikke sendt';
}

?>


er der ikke en meget nemmere måde at vise billeder på i emails, enten med img searh, eller direkte at placere den vedhæftet fil/billed i headeren ?.
Avatar billede jesperhgh Nybegynder
24. januar 2012 - 00:53 #1
Hvis du sender din mail HTML formatteret, så skal du vel bare i din HTML kode inkludere et img tag, som viser dit billede.

hint:
Prøv først at lave din mail som en side, du kan teste din html på.
Avatar billede henrik2008 Nybegynder
24. januar 2012 - 11:21 #2
ok, det kan da være du har ret, jeg er ikke special god til email
programmering endnu, men begynder at forstå det samlede billedet generelt, hvordan det virker.

jeg prøver !( hvis det ikke virker så er det fordi jeg ikke har adgang til cliche serveren med file_get contents (som de ikke understøtter!), uanset hvad mener jeg selv at man skal uploade de billeder til sin server, også selv om man laver et tag, det skal jo også have et henvisning/link hvor selve billedet er fysisk placeret!, men jeg ved det ikke.

jeg har nu fået at vide fra cliche at de understøtter cURL med get contents, så det er det man skal bruge med html email / billeder.
nu skal jeg bare løre en del om de funktioner cURL biblioteket tilbyder. (ååh, man kan da også blive med at lære!).

hvorfor spørger jeg så meget på eksperten.dk ?,  fordi =

jeg har udviklet et cms, nærmere forklaring herunder.

har lave et fuldt cms næsten på højde med joomla, bare langt mere skrabet og enkelt men alligevel ret godt, hvis jeg selv skal sige det.

der er artikel styring, altså en artikel editor der bliver gemt i databasen, med opdater og slet.
der er udviklet en media manager med upload af filer og sletning af filer, der er udviklet nyhedsbrev
(ikke færdig endnu!), plus admin login, system setting, preview af artikler, email kontakt form, skabeloner til hjemmeside, bruger login med cookie huskmig, htacess login med bruger download af
billeder osv. alt sammen virker perfekt.
nu mangler jeg bare nyhedsbrevet med billeder.

æhh og kunde kartotek og brugeroversigt, skabelon creator, webshop, plus tidstyring af artikler og en del andet, så er mit cms også 100% færdig. (jaa, det er vist nok lige voldsomt at kaste sig ud i så et voldsomt projekt, men der er rigtig sjovt!).

nej mit cms er ikke til kommercielt, jeg ved ikke hvad planen er. (cmsèt er stadig under test fasen!).
Avatar billede olebole Juniormester
24. januar 2012 - 13:39 #3
<ole>

De fleste begavede e-mail-klienter filtrerer billeder fra - og begavede brugere piller ikke ved den opsætning. Derudover er der en hel del klienter, som er sat op til ikke at modtage HTML i e-mails.

Vil du sikre dig, at dine brugere faktisk læser de pågældende mails, skal du nok også tilbyde dem som RTF - og påregne at rigtig mange HTML-modtagere ikke kan/vil se dine billeder  =)

/mvh
</bole>
Avatar billede henrik2008 Nybegynder
24. januar 2012 - 18:46 #4
ok, så skal jeg vel bare bruge normal tekst emails.
jeg syntes bare at det kunne være fedt at sende farver/grafik og billeder.
jeg indrømmer at jeg havde en del problemer med HTML mails, da jeg installere et gratis professionelt email og nyhedsbrev system der var
langt bedre en det jeg kan lave.
jeg prøvede det, det virkede, men ligeså snart jeg brugte for meget html eller tables osv, kunne jeg kun se dele af nyhedsbrevet.

så måske skulle jeg bare nøjes med et simpel nyhedsbrev system med almenlig tekst, hmm jeg skal lige tænke over det. (altså det jeg har lavet!).

det har også været møg besværlig at lave hmtls med billeder, der har kun været problemer.
Avatar billede henrik2008 Nybegynder
24. januar 2012 - 18:51 #5
denne her kode er til folk der ikke kan modtage html`s.

$message .=    "hvis du kan se denne tekst, understøtter din mail client ikke MIME types!\r\n"
    .$bound;  (man kan erstatte teksten med hvad som helst.
 

og dem der kan modtager hmtl, for html emails.

jeg kunne sikkert droppe at sende billeder.

hmmmm.
Avatar billede olebole Juniormester
25. januar 2012 - 00:38 #6
Du skal ikke nødvendigvis undlade billeder, men tænke på, hvordan siden ser ud uden. Du kan evt. åbne en GMail konto, som pr. default ikke viser billeder, før du tilvælger det. Så kan du teste der, hvordan tingene ser ud uden
Avatar billede henrik2008 Nybegynder
25. januar 2012 - 11:49 #7
nu har jeg fundet ud af det 99%..

dette script virker. (undtaget, hvås man prøver at downloade det vedhæftet billed fra yahoo email, bliver fil extension forkert?), til at sende hmtl/billeder og almenlig tekst.

men det virker i yahoo med billeder og tekst.

skal lige fixe den lille ekstra fejl, og teste det i gmail /hotmail.

her er scriptet.

nu virker det, her er scriptet. (har prøvet i yahoo.dk mail!) der bliver billedet som skal placere på
ens egen server eller webhotel, vedhæftet i malien og yagoo mailen (den som man har sendt mailen til)kan vise billedet i selve mailen.
hvis man prøver at download billedet fra mailen, mangler billedet filen pludselig fil extensione .jpg, men der er sikkert mig der har lavet en fejl, sikkeert er det fordi jeg ikke skal putte variablen $data i headeren overhovedet ? (fixer det meget snart!).

script

<?PHP 


// her skal du sætte din lokation på hvor du har fysisk placeret dit billedet på din eller web hotel server.
$file= "http://dit-domain/ditbilled.jpg";

cULR funktionen brgues her til at hente billedet fra server og
vedhæfte det til mail i php (fordi de fleste web hosting ikke tilader php funktionen get_file contents og allow_url (allow_url er off på mange server pga. af sikkerhed), defor cURRL.
Curl er gratis at bruge og der er rigtig mange funktioner fra biblioteket man kan bruger der er ret fede (forudsat at din host understøtter cULR, ellers vil dettte script ikke virker, så må mna
ty til special custom lavet funktioner der er overordentlig besværlig!).


htmls med billeder skal opdeles i dele (såkaldte bounderies), og
der skal bruges header der fortæller at der er tale om html og jpg format osv.
desuden skal billedes splittes op i dele når man sender vedhæftet filer i php mail med funktione chunk, desuden skal billed bruge base64 cryptering osv, ret besværlig, men så virker det også. puhaaa, sikke besværlig der er.

//Initialisere Curl session
$ch = curl_init();

//sætter curl til at hente dat istedet for at vise det i browser
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//Sætter URL
curl_setopt($ch, CURLOPT_URL, $file);
//udfør fetch
$data = curl_exec($ch); (her er selve billedet/ data på filen.
//lukker for curl forbindelsen.
curl_close($ch);





$to =    'din email';
$subject =    'PHP Mail Attachment Test';
$bound_text =  "test234";
$bound =  "--".$bound_text."\r\n";
$bound_last =  "--".$bound_text."--\r\n";
 
$headers =  "From: blaaa@yahoo.dk\r\n";
$headers .=  "MIME-Version: 1.0\r\n"
  ."Content-Type: multipart/mixed; boundary=\"$bound_text\"";

$header .= "Content-Type: application/octet-stream; name=\"ditbilled.jpg"."\"\r\n";
 
$message .=  "hvis du kan se denne tekst, understøtter din mail client ikke MIME types!\r\n"
  .$bound;
 
$message .=  "Content-Type: text/html; charset=\"iso-8859-1\"\r\n"
  ."Content-Transfer-Encoding: 7bit\r\n\r\n"
  ."blaaaaaaaaa blaaa <br>\r\n"
  .$bound;
 

 
$message .=  "Content-Type: image/jpg; name=\"ditbilled.jpg"."\r\n"
  ."Content-Transfer-Encoding: base64\r\n"
  ."Content-disposition: attachment; file=\"ditbilled.jpg\"\r\n"
  ."\r\n"
  .chunk_split(base64_encode($data))
  .$bound_last;
if(mail($to, $subject, $message, $headers))
{
echo 'MAIL SENdt';
} else {
echo 'fejl, MAIL ikke sendt';
}

?>
Avatar billede henrik2008 Nybegynder
25. januar 2012 - 14:04 #8
DET VIL JEG GØRE, altså at teste som du siger både i gmail og yahoo og hotmail og måske mail 7 på win7, det må da være nok test.

tak for svaret.

ok, nu er jeg sikkert dum til at forstå point systemet, og jeg glemmer det hver gang, men nu spørger jeg alligevel, for at lukke dette spørgsmål, skal jeg så trykke på Svar (til løsninger og pointgisning) for at give jer point ?.
Avatar billede olebole Juniormester
25. januar 2012 - 14:39 #9
Det kan godt være, du vil gøre det, men så bliver det godt nok tungt at udsende! Så medsender du jo samtlige billeder til alle modtagere. Det kan gøres, men kan næppe anbefales  =)

"(fordi de fleste web hosting ikke tilader php funktionen get_file contents og allow_url (allow_url er off på mange server pga. af sikkerhed)" >> Det er ikke helt korrekt. Langt de fleste tillader det - for de evner at administrere en server - men ikke de ringeste (Læs: Billigste).

Ang. point, så samler jeg ikke. Du lægger selv et svar, når du har fået tilfredsstillende svar, og accepterer det, så tråden lukkes  =)
Avatar billede henrik2008 Nybegynder
28. januar 2012 - 21:50 #10
svar er lukket.

(point system = latterligt!).
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



Seneste spørgsmål Seneste aktivitet
I dag 06:10 Excel åbner fil i kæmpe format Af Aske i Excel
I går 22:00 Datafordeler Af Lsk i PHP
I går 12:37 Summere beløb pr. dato Af TTA i Excel
31/1022:44 Tilslutte chassic fans Af viking69 i PC
31/1020:28 LED lysstofrør Af ErikHg i Fri debat