Php levél melléklet küldés
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:
PHP:
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.
■ 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>
<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”;
};
?>
$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.
sok
$_FILES
tömböt olvasod, vagy pedig a feltölött fájlt kezeled (move_uploaded_file)Találtam egy levélküldőt, de nem müxik.
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 ?
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>
hibaüzenetek?
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:
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>
$allowed-extensions esetében
$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.Tippre
if(in_array($extension,$allowed-extensions)) {
Ott tényleg a kötőjel volt a
Content-Disposition: attachment; filename="NAPLO.xls"
0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAOwADAP7/CQAGAAAAAAAAAAAAAAAB
EAAADQAAAAEAAAD+////AAAAAAAAAAD/////////////////////////////////////////////
///////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////1IA
bwBvAHQAIABFAG4AdAByAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAWAAUA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AgADAJwAAgAOAK8BAgAAALwBAgAAAD0AEgAAAAAAAEAAIDgAAAAAAAEAoQB
AAIAAAAOAAIAAQC3AQIAAADaAAIAAAAxABoAyAAAAP9/kAEAAAAC7gAFA
yAAAAP9/kAEAAAAA7gAFAUEAcgBpAGEAbAAxABoAyAAAAP9/kAEAAAAA7g
Szemet
Ezt szeretném használni !
Egyébként meg nem értem miért szeméthalmaz valami ami egyébként működésre bírható.
A fejedre fog dolni
A fenti libek sokkal kiforrottabbak es stabilabbak, igy hosszu tavon azokkal jobban jarsz.
Stipi-stopi!
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!