Autor | Zpráva | ||
---|---|---|---|
martinpechy Profil |
#1 · Zasláno: 4. 7. 2012, 14:27:50
Zdravim jeste jednou, v mem phpmaileru formulari se mi vyskytl problem. Kdyz pridam prilohu takhle: $mail->AddAttachment("obrazek.jpg", "obrazek.jpg"); tak se priloha normalne odesle, ale pokud to chci udelat pres formular ktery mam pro prilohu nastaveny takhle : Soubor: <INPUT TYPE="file" NAME="soubor"> <BR> a misto obrazek.jpg dam tohle : $mail->AddAttachment($_POST['soubor']); tak mi to mail odesle bez prilohy a napise Could not access file: Could not access file: Správa úspešne zaslaná. Nevite prosim v cem by mohl byt problem?
Dalsi vec je, ze bych do emailu chtel zabudovat abych tam mohl dat do jednoho policka vice prijemcu oddeleny carkami. Jde to nejak? Moc vam dekuju za ochotu |
||
Keeehi Profil |
Soubor není v
$_POST["soubor"] ale v $_FILES["soubor"]["tmp_name"]
martinpechy: „do jednoho policka vice prijemcu oddeleny carkami. Jde to nejak?“ V PHP to můžeš rozdělit do pole pomocí $prijemci = explode(",",$_POST["prijemci"])
|
||
martinpechy Profil |
#3 · Zasláno: 5. 7. 2012, 11:46:34
tak jsem to tam dal a pise to chyby:( Could not access file: Invalid address: ,Could not access file: Invalid address: You must provide at least one recipient email address. Správa nebola zaslaná.
Nastala chyba: You must provide at least one recipient email address. |
||
Keeehi Profil |
#4 · Zasláno: 5. 7. 2012, 11:59:09
A nechat si to přeložit jsi nezkoušel? Žádná těžká angličtina to není, takže to celkem slušně zvládne i google. Chybí ti příjemce emailu.
Ta první chyba se týká cesty k tomu nahranému souboru. Raději ukaž kód, co jsi stvořil. |
||
martinpechy Profil |
#5 · Zasláno: 5. 7. 2012, 12:04:56 · Upravil/a: martinpechy
tak ja tomu rozumim, ale nevim co s tim.
tohle je pro ten soubor: $mail->AddAttachment($_FILES["soubor"]["tmp_name"]); a tohle pro ty prijemce : $mail->AddAddress (explode(",",$_POST["prijemci"])); a celej ten kod je takovej: <?php require("class.phpmailer.php"); // voláme súbor $mail = new PHPMailer(); //instancia PHPMaileru $mail->Charset = "utf-8"; $mail->AddAttachment($_FILES["soubor"]["tmp_name"]);//soubor $mail->From = $_POST['odesilatel']; //odesilatel $mail->FromName = $_POST['jmenoodesilatele']; //jmeno odesilatele $mail->AddAddress (explode(",",$_POST["prijemci"])); //prijemce $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"]); $mail->AddAddress (explode(",",$_POST["prijemci"])); //prijemce $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> a 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> jeste me tak napada co ty emaily zkusit nejak pomoci array, akorat fakt nevim jak to zrealizovat.. |
||
Keeehi Profil |
Toto by bylo lepší.
<?php require("class.phpmailer.php"); // voláme súbor if ( !empty($_POST['akce']) ) { $mail = new PHPMailer(); //instancia PHPMaileru $mail->Charset = "utf-8"; $mail->From = $_POST['odesilatel']; //odesilatel $mail->FromName = $_POST['jmenoodesilatele']; //jmeno odesilatele if ( $_FILES["file"]["error"] > 0 ) { echo "Při nahrávání souboru se vyskytl problém. (Error: " . $_FILES["soubor"]["error"] . ")<br />"; } else { $mail->AddAttachment($_FILES["soubor"]["tmp_name"], $_FILES["soubor"]["name"]); } $prijemci = explode(",",$_POST["prijemci"]); foreach ( $prijemci as $prijemce ) { $mail->AddAddress ($prijemce); //prijemce } $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á"; } ?> |
||
martinpechy Profil |
#7 · Zasláno: 5. 7. 2012, 13:02:08
porad to pise chybu sakra.. Could not access file: Invalid address: You must provide at least one recipient email address. Správa nebola zaslaná.
Nastala chyba: You must provide at least one recipient email address. |
||
martinpechy Profil |
#8 · Zasláno: 5. 7. 2012, 14:05:59
Tak pro vsechny koho by to zajimalo, tech vice prijemcu se da vyresit takhle:
$mnohoAdres = $_POST['adresy']; //data z formulare $adresy = preg_split('/[;,]/', $mnohoAdres); //vytvori ze zadanych adres pole foreach($adresy as $adresa){ if(trim($adresa) == '') continue; $mail->addAddress(trim($adresa)); } |
||
martinpechy Profil |
#9 · Zasláno: 5. 7. 2012, 22:26:39
tak sem jeste zkusil nahrat to na web a pak to jako odeslat a dal sem tam :
dal jsem tam tohle: $uploaddir = '/uploads/'; $uploadfile = $uploaddir . basename($_FILES['soubor']['name']); $mail->AddAttachment($_FILES['soubor']['tmp_name']; a pise mi to zase syntaktickou chybu: Parse error: syntax error, unexpected ';' in /home/users/pechy/yourselfgrowhthing.eu/web/index.php on line 18 |
||
Keeehi Profil |
#10 · Zasláno: 5. 7. 2012, 22:45:35
martinpechy:
Chybí vám tam na 3. řádku uzavírací závorka <?php require("class.phpmailer.php"); // voláme súbor if ( !empty($_POST['akce']) ) { $mail = new PHPMailer(); //instancia PHPMaileru $mail->Charset = "utf-8"; $mail->From = $_POST['odesilatel']; //odesilatel $mail->FromName = $_POST['jmenoodesilatele']; //jmeno odesilatele if ( $_FILES["file"]["error"] > 0 ) { echo "Při nahrávání souboru se vyskytl problém. (Error: " . $_FILES["soubor"]["error"] . ")<br />"; } else { $name = "./uploads/$_FILES[soubor][name]"; move_uploaded_file($_FILES["soubor"]["tmp_name"], $name); $mail->AddAttachment($name, $_FILES["soubor"]["name"]); } $adresy = preg_split('/[;,]/', $_POST['adresy']); //vytvori ze zadanych adres pole foreach ( $adresy as $adresa ) { $adresa = trim($adresa); if ( empty($adresa) ) continue; $mail->addAddress($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; } if ( isset($name) ) unlink(name); echo "Správa úspešne zaslaná"; } ?> ! Ten upload souborů není vůbec zabezpečený. Je to obrovská bezpečnostní chyba. Dá se to vyřešit několika způsoby, třeba tímto. |
||
Časová prodleva: 12 let
|
0