Prog.Hu

E-mail küldés képek csatolásával.
20

2013-09-08T20:45+01:00
aerik
aerikProg.Hu
regisztrált tag
Sziasztok!

Tudom, hogy már volt ez sokszor téma, de egyszerűen nem sikerül. A sima kép feltöltés a szerverre sikerült, de hogy az e-mail küldéshez csatoljam a fájlt az nem megy. Az lenne a legjobb, ha nem kellene tárolni a szerveren. Remélem van türelmetek segíteni.

A küldő részből ez való:
"...
<form enctype="multipart/form-data" name="urlap" method="POST" action="link.php" onSubmit="return ellenoriz()"> ...
<table CELLPADDING=4 width='100%'><tr><td width='100%' align='left'>
<input name="kep[]" type="file" size="30px"></td></tr>
<tr><td align='left'><input name="kep[]" type="file" size="30px"></td></tr>
<tr><td align='left'><input name="kep[]" type="file" size="30px"></td></tr>
</table>
<br />
<input type="submit" value="Rögzítés" name="felad">

link.php átdob jelentkezz1.php-re, ha minden oké. A levélküldés működik.. csak a képeket nem tudom, hogyan hozzam ide át. :(

"... $szoveg = $datum."\r\nAz adatlap kitöltője: ".$name."\r\nE-mail címe: ".$email."\r\nAz üzenet tárgya: ".$targy."\r\nAz üzenet szövege:\r\n\r\n".$msg;



mail($cimzett,$targy,$szoveg);
mail($cimzett1,$targy,$szoveg);
..."

Előre is köszönöm a segítséget.

Erik
Mutasd a teljes hozzászólást!
E-mail küldés képek csatolásával.
2013-09-08T20:45+01:00
aerik
aerikProg.Hu
regisztrált tag
Az a minta 1 darab képet küld.
Látod te, hogy 0., 1., 2. elemre van hivatkozás? Ciklus kellene hozzá.


Az űrlap:
<form action="kuldo.php" method="post" enctype="multipart/form-data">
  Send these files:<br />
  <input name="userfile[]" type="file" /><br />
  <input name="userfile[]" type="file" /><br />
  <input type="submit" value="Send files" />
</form>

Újabb elemekkel folytathatod....


És a küldő (ahol a levél szövegét és hogy ne lehessen önmagában meghívni védelmét már rád bízom):

<?php
$cegDomain="Teszt.hu"; // Ide írj be valamit

//---separator & boundary:
$separator = "\n";
list($x, $y) = explode(" ", microtime());
$boundary = "boundary--".$y.substr($x, 2);

//---fejrészek létrehozása:

$EmailFejlec = "";
$EmailFejlec .= "MIME-Version: 1.0".$separator;
$EmailFejlec .= "Content-type: multipart/mixed; boundary=\"".$boundary."\"".$separator;
$EmailFejlec .= "From: Képküldő <kep@teszt.hu>".$separator.$separator;

    //---Üzenet megnyitása:

$boundary = "--".$boundary;
$EmailUzenet = "";

    //---Szövegrész az üzenetben:

$EmailUzenet .= $boundary.$separator."Content-Type: text/html; charset=iso-8859-2".$separator.$separator;

$EmailUzenet .= "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">".$separator;
$EmailUzenet .= "<html>".$separator;
$EmailUzenet .= "<head>".$separator;
$EmailUzenet .= "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-2\">".$separator;
$EmailUzenet .= "<meta http-equiv=\"imagetoolbar\" content=\"no\">".$separator;
$EmailUzenet .= "<title>Képküldés</title>".$separator;
$EmailUzenet .= "</head>".$separator;
$EmailUzenet .= "<body>
            Itt vannak a képek".$separator;
$EmailUzenet .= "</body>".$separator;
$EmailUzenet .= "</html>".$separator.$separator;

    //---Filerészek az üzenetben:
for($i=0;$i<count($_FILES['userfile']['name']);$i++)
    {
    if($_FILES['userfile']['name'][$i]!="" && $_FILES['userfile']['error'][$i]==0)
        {
        echo basename($_FILES['userfile']['name'][$i])."<br>";
        $EmailUzenet .= $boundary.$separator;
        $EmailUzenet .= 'Content-Type: image/jpeg; name="'.basename($_FILES['userfile']['name'][$i]).'"'.$separator;
        $EmailUzenet .= "Content-Transfer-Encoding: base64".$separator;
        $EmailUzenet .= "Content-ID: <".sha1( uniqid(time()).$cegDomain.($i+1) ).">".$separator;
        $EmailUzenet .= 'Content-Disposition: inline; filename="'.$kepek[$i]["name"].'"'.$separator.$separator;
       
        $x = file_get_contents($_FILES['userfile']["tmp_name"][$i]);
        $EmailUzenet .= chunk_split(base64_encode($x)).$separator.$separator;
        }
    }
    //---címzett:

$EmailCimzett = "Micu <kinek@hova.hu>";  // Ezt is add meg valahonnan
//---mail elküldése:

mail($EmailCimzett, $EmailTargy, $EmailUzenet, $EmailFejlec);
?>
elment
Mutasd a teljes hozzászólást!
Oszd meg másokkal is!

<?
$file=array('1.jpg','2.jpg','3.jpg');
$face=date('YmdHis').substr(microtime(),2,6);

$data='--'.$face."\n".'content-type:text/html;charset=iso-8859-2'."\n\n".'<html>
<body>
Üzenet!
</body>
</html>'."\n\n";

for($a=0;$a<count($file);$a++){
$data.='--'.$face."\ncontent-type:application/force-download\ncontent-transfer-encoding:base64\n".'content-id:<cid'.$a.'>'."\n".'content-disposition:attachment;filename='.basename($file[$a])."\n\n".chunk_split(base64_encode(file_get_contents($file[$a])))."\n";
}

mail('cimzett <cimzett@domain.hu>','Tárgy!',$data,'content-type:multipart/mixed;boundary='.$face."\n".'From: felado <felado@domain.hu>');
?>
Mutasd a teljes hozzászólást!
A szerverre feltölteni felkell, de utána használhatod a temp mappából (nem kell feltétlenül a move_uploaded_file)

1. Próbáld ki a phpmailer-t.

2. A kérdést és a javítást is vedd figyelembe

2.b Nem feltöltéses de több típus
Ha a html részben nem hivatkozol rá, akkor melléklet.
Mutasd a teljes hozzászólást!
Sziasztok.

Alakul. Már látom a tömbben a képeket, csak nem tudom hozzácsatolni. Egy csatolt állományt küld, ami azt mutatja, hogy ez egy tömb.

Ezt tettem bele.. Sajna nem nagyon értek hozzá. Köszi az eddigi segítségeket is.

$csatolmany = $_FILES['kep'];

$boundary = strtoupper(md5(uniqid(time())));
$mail_header = "From:BQL";
$mail_header .= "\nMIME-Version: 1.0";
$mail_header .= "\nContent-Type: multipart/mixed; boundary=$boundary";
$mail_header .= "\n\nThis is a multi-part message in MIME format -- Dies ist eine mehrteilige Nachricht im MIME-Format";
$mail_header .= "\n--$boundary";

// levél szövege
$mail_header .= "\nContent-type: text/html; charset=iso-8859-1\n";
$mail_header .= "\r\n$msg";

// Fájl feltöltése
$mail_header .= "\n--$boundary";
$mail_header .= "\nContent-Type: application/octetstream; name=\"$csatolmany\"";
$mail_header .= "\nContent-Transfer-Encoding: base64";
$mail_header .= "\nContent-Disposition: attachment; filename=\"$csatolmany\"";
$mail_header .= "\n\n$file_content";
$mail_header .= "\n--$boundary--";

str_replace(",","<br>\n",$cimzett);

echo "<pre>";
print_r($_FILES);
echo "</pre>";
Mutasd a teljes hozzászólást!
$csatolmany = $_FILES['kep'][tmp_name];

Aztán:

$file_content hol kap nálad értéket? Fájl beolvasás.

$file_content=file_get_contents($csatolmany);



$mail_header .= "\nContent-Type: application/octetstream; name=\"".$_FILES['kep'][name]."\"";
$mail_header .= "\nContent-Transfer-Encoding: base64";
$mail_header .= "\nContent-Disposition: attachment; filename=\"".$_FILES['kep'][name]."\"";
Mutasd a teljes hozzászólást!
Szia, amiket beírtál, betettem a kódba. Egy 0 kb-s Array jön át. Képek pedig ezek lettek volna.


Array
(
[kep] => Array
(
[name] => Array
(
[0] => DSC00550.JPG
[1] => DSC00556.JPG
[2] => DSC00551.JPG
)

[type] => Array
(
[0] => image/jpeg
[1] => image/jpeg
[2] => image/jpeg
)

[tmp_name] => Array
(
[0] => /var/tmp/phpS6fFPD
[1] => /var/tmp/phpxJmYIO
[2] => /var/tmp/phpZvZ7KD
)

[error] => Array
(
[0] => 0
[1] => 0
[2] => 0
)

[size] => Array
(
[0] => 97959
[1] => 101433
[2] => 101538
)

)

)
Mutasd a teljes hozzászólást!
Az a minta 1 darab képet küld.
Látod te, hogy 0., 1., 2. elemre van hivatkozás? Ciklus kellene hozzá.


Az űrlap:
<form action="kuldo.php" method="post" enctype="multipart/form-data">
  Send these files:<br />
  <input name="userfile[]" type="file" /><br />
  <input name="userfile[]" type="file" /><br />
  <input type="submit" value="Send files" />
</form>

Újabb elemekkel folytathatod....


És a küldő (ahol a levél szövegét és hogy ne lehessen önmagában meghívni védelmét már rád bízom):

<?php
$cegDomain="Teszt.hu"; // Ide írj be valamit

//---separator & boundary:
$separator = "\n";
list($x, $y) = explode(" ", microtime());
$boundary = "boundary--".$y.substr($x, 2);

//---fejrészek létrehozása:

$EmailFejlec = "";
$EmailFejlec .= "MIME-Version: 1.0".$separator;
$EmailFejlec .= "Content-type: multipart/mixed; boundary=\"".$boundary."\"".$separator;
$EmailFejlec .= "From: Képküldő <kep@teszt.hu>".$separator.$separator;

    //---Üzenet megnyitása:

$boundary = "--".$boundary;
$EmailUzenet = "";

    //---Szövegrész az üzenetben:

$EmailUzenet .= $boundary.$separator."Content-Type: text/html; charset=iso-8859-2".$separator.$separator;

$EmailUzenet .= "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">".$separator;
$EmailUzenet .= "<html>".$separator;
$EmailUzenet .= "<head>".$separator;
$EmailUzenet .= "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-2\">".$separator;
$EmailUzenet .= "<meta http-equiv=\"imagetoolbar\" content=\"no\">".$separator;
$EmailUzenet .= "<title>Képküldés</title>".$separator;
$EmailUzenet .= "</head>".$separator;
$EmailUzenet .= "<body>
            Itt vannak a képek".$separator;
$EmailUzenet .= "</body>".$separator;
$EmailUzenet .= "</html>".$separator.$separator;

    //---Filerészek az üzenetben:
for($i=0;$i<count($_FILES['userfile']['name']);$i++)
    {
    if($_FILES['userfile']['name'][$i]!="" && $_FILES['userfile']['error'][$i]==0)
        {
        echo basename($_FILES['userfile']['name'][$i])."<br>";
        $EmailUzenet .= $boundary.$separator;
        $EmailUzenet .= 'Content-Type: image/jpeg; name="'.basename($_FILES['userfile']['name'][$i]).'"'.$separator;
        $EmailUzenet .= "Content-Transfer-Encoding: base64".$separator;
        $EmailUzenet .= "Content-ID: <".sha1( uniqid(time()).$cegDomain.($i+1) ).">".$separator;
        $EmailUzenet .= 'Content-Disposition: inline; filename="'.$kepek[$i]["name"].'"'.$separator.$separator;
       
        $x = file_get_contents($_FILES['userfile']["tmp_name"][$i]);
        $EmailUzenet .= chunk_split(base64_encode($x)).$separator.$separator;
        }
    }
    //---címzett:

$EmailCimzett = "Micu <kinek@hova.hu>";  // Ezt is add meg valahonnan
//---mail elküldése:

mail($EmailCimzett, $EmailTargy, $EmailUzenet, $EmailFejlec);
?>
elment
Mutasd a teljes hozzászólást!
Oszd meg másokkal is!