Autor Zpráva
martinpechy
Profil
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
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
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
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
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
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));
}
ted uz jen vyresit ten soubor..
martinpechy
Profil
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
prosim poradte nekdo uz sem z toho zoufalej
Keeehi
Profil
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.

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: