Autor Zpráva
martinpechy
Profil
Zdravim,

ma nekdo funkcni skript kterym propojim prilohu pridanou ve formulari v phpmaileru v addatachment() ? Vyzkousel jsem uz nekolik skriptu, nahravani souboru na web, nebo nastaveni opravneni a porad mi nic nefunguje, bud to pise could not acces the file anebo to nenapise nic ale soubor to neodesle. Samozrejme ze kdyz zadam cestu do skriptu rovnou tak to jde, ale z toho formulare mi to proste nejde.

Dekuji za odpoved
Taps
Profil
martinpechy:
já jsem s odesíláním přílohy v phpmaileru neměl nikdy problém..ukáž kod
martinpechy
Profil
formular:

<body>
<FORM ACTION="index.php" METHOD="post" ENCTYPE="application/x-www-form-urlencoded">
Odesílatel: <INPUT TYPE="text" NAME="odesilatel" VALUE="" SIZE=50 MAXLENGTH=50><BR>
Jmeno odesilatele: <INPUT TYPE="text" NAME="jmenoodesilatele" VALUE="" SIZE=50 MAXLENGTH=50><BR>
Příjemce: <INPUT TYPE="text" NAME="prijemce" VALUE="" SIZE=50 MAXLENGTH=50><BR>
Predmet: <INPUT TYPE="text" NAME="predmet" VALUE="" SIZE=50 MAXLENGTH=50><BR>
Text:<BR><TEXTAREA NAME="dopis" COLS="50" ROWS="10"></TEXTAREA><BR>
Soubor: <INPUT TYPE="file" NAME="soubor"> <BR>
<INPUT TYPE="submit" NAME="akce" VALUE="Odeslat"><BR>
</FORM>
</body>
</html>


a index:

<body>

<?php

require("class.phpmailer.php"); // voláme súbor

$mail = new PHPMailer(); //instancia PHPMaileru
$mail->Charset = "utf-8";

$mail->AddAttachment($_FILES['soubor']['tmp_name']); // sem nevim co vlozit aby to fungovalo!!


$mail->From = $_POST['odesilatel']; //odesilatel
$mail->FromName = $_POST['jmenoodesilatele']; //jmeno odesilatele

$mnohoAdres = $_POST['prijemce']; //data z formulare
$adresy = preg_split('/[;,]/', $mnohoAdres); //vytvori ze zadanych adres pole
foreach($adresy as $adresa){
  if(trim($adresa) == '') continue;
  $mail->addAddress(trim($adresa));
}

$mail->WordWrap = 50;                                 // po 50 znaku slova rozdel slovo
$mail->IsHTML(true);

$mail->Subject = $_POST['predmet'];
$mail->Body    = $_POST['dopis'];

if (!empty($_POST['akce']))
{
$mail = new PHPMailer(); //instancia PHPMaileru
$mail->Charset = "utf-8";

$mail->From = $_POST['odesilatel']; //odesilatel
$mail->FromName = $_POST['jmenoodesilatele']; //jmeno odesilatele



$mail->AddAttachment($_FILES['soubor']['tmp_name']); // sem nevim co mam vlozit aby to fungovalo!!!!!!!

$mnohoAdres = $_POST['prijemce']; //data z formulare
$adresy = preg_split('/[;,]/', $mnohoAdres); //vytvori ze zadanych adres pole
foreach($adresy as $adresa){
  if(trim($adresa) == '') continue;
  $mail->addAddress(trim($adresa));
}

$mail->WordWrap = 50;                                 // po 50 znaku slova rozdel slovo
$mail->IsHTML(true);

$mail->Subject = $_POST['predmet'];
$mail->Body    = $_POST['dopis'];
}
if(!$mail->Send())
{
   echo "Správa nebola zaslaná. <p>";
   echo "Nastala chyba: " . $mail->ErrorInfo;
   exit;
}
 
echo "Správa úspešne zaslaná";
?>




</body>
</html>
Ugo
Profil
a máš ten soubor? tenhle enctype vidim prvně a po shlédnutí na google to vypadá že je defaultní zkus multipart/form-data
martinpechy
Profil
no jasne ze jo! zakladni vec a ja to nezkontroluju, diky moc! priloha prijde ale je to nejak divne zakodovany a ma to i divny nazev..ale aspon jsem se posunul
Ugo
Profil
divný název mít bude, jelikož to tomu dává ten název z tmpu což je něco vygenerovaného, tuším ale že to jde nastavit více parametrama - koukni do dokuemtnace, divně zakódované? :-P


doplním ještě, že není $Charset ale $CharSet ... $mail->CharSet = "utf-8"; to by mohlo být to kódování
martinpechy
Profil
no poslu treba obrazek a prijde to v nejakym divnym formatu a ten je aplication/octet stream
Ugo
Profil
aha, kdoví odkud to bere ty další parametry jako content-type, možná mu to budeš muset nastavit ručně, ale zkus dát druhá parametr $mail->AddAttachment($_FILES['soubor']['tmp_name'], $_FILES['soubor']['name']);
martinpechy
Profil
Vyborny, uz to bezi jak ma. moc dekuji!
xxx9955
Profil
Ahojte. Inšpiroval som sa horeuvedeným kodom + dodatočnými úpravami, ale nefunguje to. Napíše, že mail, bol odoslaný, ale nič nepríde + chyba: Could not access file. Kody sú: index:
<form id="form" name="form" action="mail.php" METHOD="post" ENCTYPE="multipart/form-data">
<table width="535px">
<tr><td colspan="2"><h3>Cenová ponuka</h3></td></tr>
<tr><td>Dĺžka:</td><td><input name="dlzka" type="text" size="20" value=""></td></tr>
<tr><td>Šírka:</td><td><input name="sirka" type="text" size="20" value=""></td></tr>
<tr><td>Priestor za:</td><td><input name="za" type="text" size="20" value=""></td></tr>
<tr><td>Vaše priezvisko:</td><td><input name="meno" type="text" size="20" value=""></td></tr>
<tr><td>Telefónne číslo:</td><td><input name="tel" type="text" size="20" value=""></td></tr>
<tr><td>Obec:</td><td><input name="obec" type="text" size="20" value=""></td></tr>
<tr><td>E-mail:</td><td><input name="email" type="text" size="20" value=""></td></tr>
<tr><td>Fotografia:</td><td><input name="files" type="file" size="20" value=""></td></tr>
<tr><td colspan="2"><input type="submit" class="button" value="Odošli" /></td></tr>
</table></form>

mail.php:
<?php
$prijemca = "xxx9955@gmail.com";
$predmet = "Calderaspa";
$text = "
<b>Bazén:</b><br>
džka - $dlzka<br>
šírka - $sirka<br>
priestor za bazénom - $za<br><br>

<b>Kontakt:</b><br>
meno - $meno<br>
obec - $obec<br>
telefonne číslo - $tel<br>
e-mail - $email<br>
";

  require "class.phpmailer.php";
  $mail = new PHPMailer();  
  $mail->IsHTML(true); 
  $mail->CharSet = "utf-8";   // nastavíme kódování, ve kterém odesíláme e-mail
  $mail->From = $_POST[email];   // adresa odesílatele skriptu
  $mail->FromName = $_POST[email]; // jméno odesílatele skriptu (zobrazí se vedle adresy odesílatele)
  $mail->AddAddress("xxx9955@gmail.com");  // a klidně i druhého, včetně jména
  $mail->AddAttachment($_FILES['$files']['tmp_name'], $_FILES['$files']['name']);
  $mail->Subject = $_POST[predmet];    // nastavíme předmět e-mailu
  $mail->Body = $_POST[text];  // nastavíme tělo e-mailu
  $mail->WordWrap = 50;   // je vhodné taky nastavit zalomení (po 50 znacích)

  if(!$mail->Send()) {  // odešleme e-mail
     echo 'Došlo k chybe pri odoslaný e-mailu.';
     echo 'Chybová hláška: ' . $mail->ErrorInfo;
  }
  else
  {
     echo 'E-mail bol odoslananý.';
  }
?>

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: