ugrás a tartalomhoz

Php levél melléklet küldés

Johnny7 · 2012. Okt. 13. (Szo), 16.15
Hali

Egy ideje használunk levélküldést php alapon. Most szeretnénk ha 1db fájlt is lehetne csatolni a levélhez. Utána olvastam már sok oldalon de valahogy nem akar összejönni a dolog. Nem vagyok php mágus, ezt a pár sort is egy oldalon találtam vagy 1 éve és azóta használjuk. Tudnátok segíteni mivel kell kiegészíteni a php oldalt hogy elmenjen a melléklet is ?

HTML:
<body>
<form action="mail.php" method="POST" enctype="multipart/form-data" name="Formular">  
Neve:
  <input type="text" name="Neve">  
<br />
E-mail címe:
<input type="text" name="cime">
<br />
Óraállás:
<input type="text" name="szoveg">
<br />
<label for="file"></label>
<input type="file" name="file" id="file" />
<br />
<br />  
<input type="submit" value="Küldés">  
</form>  
</form>
</body>
</html>


PHP:
<?php  
$uzenet= "A küldő nve: $_POST[Neve]
A küldő e-mail címe: $_POST[cime]
Óraállás: ";  
$uzenet .= "$_POST[szoveg]";  
$cimzett = "info##kukac##xy.hu";  
$targy = "Levél";
$success = mail($cimzett, $targy, $uzenet);
if ($success) {
echo “OK”;
} else {
echo “NO”;
};
?>


Olvastam itt egyik fórumban egy hozzászólást, hogy érdemes esetleg feltölteni csak a fájlt és a mailbe a linkje kerül bele. Ha egyszerűbb ez a megoldás is érdekel.

Köszönöm.
 
1

sok

Poetro · 2012. Okt. 13. (Szo), 18.31
Hát a fentit még nagyon sok sorral kellene kiegészíteni. Sokkal jobb, ha használsz egy kész PHP osztályt, mondjuk SwiftMailer vagy PHPMailer. Ráadásul a feltöltött fájl kezelését is meg kell oldani. Ekkor vagy a $_FILES tömböt olvasod, vagy pedig a feltölött fájlt kezeled (move_uploaded_file)
2

Találtam egy levélküldőt, de nem müxik.

Johnny7 · 2012. Okt. 13. (Szo), 21.58
Van egy mókus aki youtube-on levezet egy ilyen progit:
http://www.youtube.com/watch?v=zYocypr0Xig

Beírtam amit készített. Neki megy, nekem nem. Szerintetek kell még valami vagy én bakiztam ?

<?php

if(isset($_POST) && !empty($_POST) ) {

if(!empty($_FILES['attachment']['name'])) {
// store some variables
$file_name = $_FILES['attachment']['name'];
$temp_name = $_FILES['attachment']['tmp_name'];
$file_type = $_FILES['attachment']['type'];

// get the extension of the file
$base = basename($file_name);
$extension = substr($base, strlen($base)-4, strlen($base));

// only these file types will be allowed
$allowed_extensions = array(".doc",".xls");

// check that this file type is allowed
if(in_array($extension,$allowed-extensions)) {

// mail essenstials
$from = $_POST['email'];
$to = "info##kukac##xy.hu";
$subject = "level targya";
$message = "level resze";

// things you need
$file = $temp_name;
$content = chunk_split(base64_encode(file_get_contents($file)));
$uid = md5(uniqid(time()));

//standard mail headers
$header = "from: ".$from."\r\n";
$header = "Reply-To: ".$replyto."\r\n";
$header = "MIME-Version: 1.0\r\n";

$header .= "(Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
$header .= "This is a multi-part message in MIME format. \r\n";

// plain tex part
$header .= "--".$uid."\r\n";
$header .= "Content-type:text/plain; charset=iso-8859-1\r\n";
$header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$header .= $message."\r\n\r\n";

//file attachment
$header .= "--".$uid."\r\n";
$header .= "Content-type: ".$file_type."; name=\"".$file_name."\"\r\n";
$header .= "Content-Transfer-Encoding: base64\r\n";
$header .= "Content-Disposition: attachment; filename=\"".$file_name."\"\r\n";
$header .= $content."\r\n\r\n";

if (mail($to, $subject, "", $header)) {
echo "success";
} else {
echo "fail";
}
exit();
  } else {
echo "file type is not allowed";
  }
  } else {
echo "no file posted";
}
}
?>

<html>
<body>
<form method="post" action="attach.php" enctype="multipart/form-data"
<input type="text" name="email" value="from"/>
<br>
<input type="file" name="attachment"/>
<br>
<input type="submit" value="Send mail"/>
</form>
</body>
</html>
3

hibaüzenetek?

Poetro · 2012. Okt. 14. (V), 08.00
Milyen hibaüzeneteket kapsz? Milyen hibakeresést végeztél?
4

Hibaüzenet

Johnny7 · 2012. Okt. 14. (V), 09.10
Ez a hibaüzenet:
Warning: in_array() [function.in-array]: Wrong datatype for second argument in /nfs/home/swissgroup/domains/www.xy.hu/html/mail/attach.php on line 20
file type is not allowed
(természetesen engedélyezett .doc fájlal próbálkoztam)

Ez a 20-as sor:
if(in_array($extension,$allowed-extensions)) {

A gond hogy nem értek a php-hez így nem tudom mi a baja a sorral. Már megnéztem többször de ugyanaz a sor mint a videoba írja a srác.

Kivettem az egész fájlellenőrzést a progiból, minden darabjával együtt. most elküldi a levelet, de melléklet nincs benne csak vagy 200 sor kriksz-kraksz:

Content-Disposition: attachment; filename="NAPLO.xls"
0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAOwADAP7/CQAGAAAAAAAAAAAAAAAB
EAAADQAAAAEAAAD+////AAAAAAAAAAD/////////////////////////////////////////////
///////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////9
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////1IA
bwBvAHQAIABFAG4AdAByAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAWAAUA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AgADAJwAAgAOAK8BAgAAALwBAgAAAD0AEgAAAAAAAEAAIDgAAAAAAAEAoQB
AAIAAAAOAAIAAQC3AQIAAADaAAIAAAAxABoAyAAAAP9/kAEAAAAC7gAFA
yAAAAP9/kAEAAAAA7gAFAUEAcgBpAGEAbAAxABoAyAAAAP9/kAEAAAAA7g

Most így fest a képlet:

<?php

if(isset($_POST) && !empty($_POST) ) {

if(!empty($_FILES['attachment']['name'])) {
// store some variables
$file_name = $_FILES['attachment']['name'];
$temp_name = $_FILES['attachment']['tmp_name'];
$file_type = $_FILES['attachment']['type'];

// get the extension of the file
$base = basename($file_name);
$extension = substr($base, strlen($base)-4, strlen($base));


// mail essenstials
$from = $_POST['email'];
$to = "info##kukac##generalcomputer.hu";
$subject = "level targya";
$message = "level resze";

// things you need
$file = $temp_name;
$content = chunk_split(base64_encode(file_get_contents($file)));
$uid = md5(uniqid(time()));

//standard mail headers
$header = "from: ".$from."\r\n";
$header = "Reply-To: ".$replyto."\r\n";
$header = "MIME-Version: 1.0\r\n";

$header .= "(Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
$header .= "This is a multi-part message in MIME format. \r\n";

// plain tex part
$header .= "--".$uid."\r\n";
$header .= "Content-type:text/plain; charset=iso-8859-1\r\n";
$header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
$header .= $message."\r\n\r\n";

//file attachment
$header .= "--".$uid."\r\n";
$header .= "Content-type: ".$file_type."; name=\"".$file_name."\"\r\n";
$header .= "Content-Transfer-Encoding: base64\r\n";
$header .= "Content-Disposition: attachment; filename=\"".$file_name."\"\r\n";
$header .= $content."\r\n\r\n";

if (mail($to, $subject, "", $header)) {
echo "success";
} else {
echo "fail";
}
exit();
 }
 }
?>

<html>
<body>
<form method="post" action="attach.php" enctype="multipart/form-data">
<input type="text" name="email" value="from"/>
<br>
<input type="file" name="attachment"/>
<br>
<input type="submit" value="Send mail"/>
</form>
</body>
</html>
5

$allowed-extensions esetében

Poetro · 2012. Okt. 14. (V), 09.45
$allowed-extensions esetében ugye egy kivonás van. És gondolom nem ezt szeretted volna. De a hibaüzenet egyértelműen a megfelelő sorra vonatkozott.
6

Tippre

Arnold Layne · 2012. Okt. 14. (V), 09.46
Tippre a kötőjelbe köt bele.
if(in_array($extension,$allowed-extensions)) {
A valid variable name starts with a letter or underscore, followed by any number of letters, numbers, or underscores.
7

Ott tényleg a kötőjel volt a

Johnny7 · 2012. Okt. 14. (V), 10.12
Ott tényleg a kötőjel volt a hibás nem vettem észre. Most elküldi a levelet, írja is hogy siker, de csak kriksz-kraksz jön át megint, mint az előző esetben.

Content-Disposition: attachment; filename="NAPLO.xls"
0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAOwADAP7/CQAGAAAAAAAAAAAAAAAB
EAAADQAAAAEAAAD+////AAAAAAAAAAD/////////////////////////////////////////////
///////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////1IA
bwBvAHQAIABFAG4AdAByAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAWAAUA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AgADAJwAAgAOAK8BAgAAALwBAgAAAD0AEgAAAAAAAEAAIDgAAAAAAAEAoQB
AAIAAAAOAAIAAQC3AQIAAADaAAIAAAAxABoAyAAAAP9/kAEAAAAC7gAFA
yAAAAP9/kAEAAAAA7gAFAUEAcgBpAGEAbAAxABoAyAAAAP9/kAEAAAAA7g
8

Szemet

janoszen · 2012. Okt. 14. (V), 15.06
Ne haragudj, de az ilyen szemethalmaz scriptek helyett nem szeretned inkabb az elso hozzaszolasban leirt kesz programok valamelyiket hasznalni? Most irok cikket az e-mailrol es felo, hogy inkabb konyv lesz belole, nem cikk.
9

Ezt szeretném használni !

Johnny7 · 2012. Okt. 14. (V), 15.11
Egyébként közben megoldottam. A Content elött volt egy ( és azért írt kódolt karaktereket. Így már tökéletesen működik. Köszönöm azért az előzők segítségét.

Egyébként meg nem értem miért szeméthalmaz valami ami egyébként működésre bírható.
10

A fejedre fog dolni

janoszen · 2012. Okt. 14. (V), 17.03
Azert, mert a modositasokkal folyamatosan szivni fogsz es random idopontokban a fejedre fog dolni. Aki ezt irta, megnezett feluletesen egy e-mailt es az alapjan irta meg, nem pedig a szabvanyt olvasta el.

A fenti libek sokkal kiforrottabbak es stabilabbak, igy hosszu tavon azokkal jobban jarsz.
11

Stipi-stopi!

Pepita · 2012. Okt. 16. (K), 03.55
Most irok cikket az e-mailrol es ...

Szeretném azt a cikket-sorozatot-könyvet (bármilyen formában) mihamarább elolvasni! Remélem ide is felkerül, engem nagyon érdekel a téma!