Autor Zpráva
Daniel47
Profil
Ahojte, nevíte proč mi nejde spustiť obrázek když ho odešlu e-mailem?

Zdrojový kód[PHP && HTML]:

<?php
if(isset($_FILES['file'])) {
$hshs = count($_FILES['file']['name']); 
for ($i = 0; $i < $hshs; $i++) { 
$jskjdks = fopen($_FILES['file']['tmp_name'][$i], "r");
$kdlajj = fread($jskjdks, $_FILES['file']['size'][$i]);
fclose($jskjdks);

$body = $kdlajj;
      $headers = "From:"."dettube.wz.cz@email.cz"."\r\n".
        "Reply-To: "."dettube.wz.cz@email.cz"."\n" .
        "X-Mailer: PHP/" . phpversion();

@mail("dettube.wz.cz@email.cz", "Test", $body, $headers);
     }
}
?>
<form method="post" enctype="multipart/form-data" action=""><br /><br />
<input type="file" name="file[]"><br />
<input type="submit" value="Odeslat">
</form>


Budu rád za každou odpověď.
lionel messi
Profil
Daniel47:

Ideš na to zbytočne komplikovane.

if (isset($_FILES['file'])) {
  //tu niekde bude ešte kontrola, aby užívateľ nemohol nahrať niečo iné než obrázok
  $picture = $_FILES['file']['tmp_name'];
  $encodedPicture = base64_encode(file_get_contents($picture));
  
  $body = "<img src='data:image/png;base64,$encodedPicture'>";
  $headers = "From:"."dettube.wz.cz@email.cz"."\r\n".
        "Reply-To: "."dettube.wz.cz@email.cz"."\r\n" .
        "X-Mailer: PHP/" . phpversion();
 
@mail("dettube.wz.cz@email.cz", "Test", $body, $headers);
}

Inšpirácia

Treba si uvedomiť, že v tele mailu pracuješ s obrázkom ako na bežnej webstránke = potrebuješ element <img>.

K samotnému kódu, niektoré premenné sú pomenované veľmi… nápadito. Zajtra si ešte určite spomenieš, na čo slúži premenná $kdlajj, o týždeň asi tiež, ale o rok už sotva. Anglicky pomenované premenné sú celkom ok, skús vymyslieť lepšie názvy aj pre ostatné.

Malá technická k názvu vlákna: Tvoj kód sa nesnaží o poslanie obrázka ako prílohy, ale v tele mailu.
Daniel47
Profil
lionel messi:
A jak to udělat aby se poslala i příloha.
Kajman
Profil
Řídit se radou z FAQ. Tedy použít knihovnu, která to má předprogramované. Např.
github.com/PHPMailer/PHPMailer
doc.nette.org/cs/3.0/mailing
RastyAmateur
Profil
Daniel47:
Zkoušel jsi alespoň googlit, než jsi se zeptal?

Odesílání mailů je celkově poměrně komplikovaná věc, i když se to nezdá, protože je to jen jedna funkce. Počínaje tím, že často ti to spadne do spamu, občas např. Google celý email rovnou zahodí a neprojde ani do toho spamu. Doporučím ti použít PHPMailer. V podstatě si stáhneš nějaký PHP kód, naincluduješ ho do stránky a použiješ jeho třídu k odeslání mailu. Je to jednodušší, postará se to za tebe o hlavičky, prostě je to jednoduché, i když se to na první pohled nezdá. Stačí se na to fakt podívat...
Daniel47
Profil
lionel messi:
Nějak to nefunguje. Ale udělal jsem si vlastní php kód.

Zdrojový kód[PHP - HTML]:

$headers_two = 'From:'.'dettube.www3.cz@email.cz';
$headers_two .= "\nMIME-Version: 1.0\n";
$headers_two .= "Content-Type: text/html; charset=\"utf-8\"\n";

$body = '<b>HTML KÓD</b>';

mb_send_mail($odesilatel, "Dettube Mailer", $body, $headers_two);


Bylo potřeba navstavit správně hlavičku na:
Type: text/html; charset=\"utf-8\"\n";
Aby fungovali HTML tagy.
N71
Profil *
Poskládat mail tak, aby dobře fungoval, dobře vypadal a nepadal do spamu je jeden z nejnáročnějších úkolů. Věř tomu, interaktivní PDFko nebo Excel plný grafů je jednodušší. Nedělej to, tečka. Na to ti chybí ještě dobrých 10 let praxe v programování. Použij hotovou knihovnu, konec debaty.
Tomáš123
Profil
N71:
Daniel47 nepotrebuje stopercentne funkčné riešenie, ktoré nepadá do spamu. Chce si to vyskúšať vytvoriť sám.

Daniel47:
Vyskúšaj si to pre budúcnosť aj s odporúčanou knižnicou.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0