Autor Zpráva
opsidiam
Profil
zdravym, mam tento script a netusim preco mi nechce odoslat mail, prylohu mi to nahra na ftp ale mail s prilohou neposle
$target = "upload/"; 
 $target = $target . basename( $_FILES['uploaded']['name']) ; 
 $ok=1; 
 
 if ($uploaded_size > 350000) 
 { 
 echo "Your file is too large.<br>"; 
 $ok=0; 
 } 
 
 if ($uploaded_type =="text/php") 
 { 
 echo "No PHP files<br>"; 
 $ok=0; 
 } 
 if ($ok==0) 
 { 
 Echo "Sorry your file was not uploaded"; 
 } 
 else 
 { 
 if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target)) 
 { 
 echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded". $_FILES['uploaded']['name']; 
 } 
 else 
 { 
 echo "Sorry, there was a problem uploading your file."; 
 } 
 } if($ok==1){
function mail_attachment($my_file, $path, $mailto, $from_mail, $from_name, $replyto, $subject, $message) {
    $path="upload/";
    $my_file = $path.$_FILES['uploaded']['name'];
    $content = "ahoj";
    $content = chunk_split(base64_encode($content));
    $uid = md5(uniqid(time()));
    $from_name = "Olaf Lederer";
    $mailto = "opsidiam@gmail.com";
    $from_mail = "opsidiam@gmail.com";
    $replyto = "mailer@mailer.sk";
    $subject = "This is a mail with attachment.";
    $message = "Hallo,\r\ndo you like this script? I hope it will help.\r\n\r\ngr. Olaf";
    $header = "From: ".$from_name." <".$from_mail.">\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";
    $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";
    $header .= "--".$uid."\r\n";
    $header .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"; // use different content types here
    $header .= "Content-Transfer-Encoding: base64\r\n";
    $header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
    $header .= $content."\r\n\r\n";
    $header .= "--".$uid."--";    
    if (mail($mailto, $subject, "opsidiam@gmail.com", $header)) {
        echo "mail send ... OK"; // or use booleans here
    } else {
        echo "mail send ... ERROR!";
    }
}
 }
prosim pomozte mi
tiso
Profil
zakomentuj 31. a 63. riadok
opsidiam
Profil
ako? co mam urobit?
Fisir
Profil
Reaguji na opsidiama:
Kdyby ses to PHP raději naučil, místo toho, abys jen kopíroval cizí kódy, tak bys viděl, že funkci mail_attachment(), která je zodpovědná za odeslání e-mailu, nikde nespouštíš. Než se zeptáš, jak se to dělá, zkus si o nich něco přečíst na PéHáPku.
opsidiam
Profil
na zaciatok scriptu som dal mail_attachment();
a ukazuje mi to chybu
Fatal error: Call to undefined function mail_attachment() in /data/web/virtuals/86116/virtual/www/subdom/mailer/web/u.php on line 5
Fisir
Profil
Reaguji na opsidiama:
Volání funkce musíš přesunout do podmínky (do té samé, kde je umístěna její definice), takto bys navíc ignoroval veškeré kontroly, které se provádí. Navíc musíš definovat všechny její parametry – $my_file, $path, $mailto, $from_mail, $from_name, $replyto, $subject a $message.
opsidiam
Profil
uz to funguje az na jednu chybu :(
posle to subod velky 1kb a vola sa noname


<?php
$target = "upload/"; 
 $target = $target . basename( $_FILES['uploaded']['name']) ; 
 $ok=1; 
 
 if ($uploaded_size > 350000) 
 { 
 echo "Your file is too large.<br>"; 
 $ok=0; 
 } 
 
 if ($uploaded_type =="text/php") 
 { 
 echo "No PHP files<br>"; 
 $ok=0; 
 } 
 if ($ok==0) 
 { 
 Echo "Sorry your file was not uploaded"; 
 } 
 else 
 { 
 if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target)) 
 { 
 echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded". $_FILES['uploaded']['name']; 
 } 
 else 
 { 
 echo "Sorry, there was a problem uploading your file."; 
 } 
 } if($ok==1){
function mail_attachment($my_file, $path, $mailto, $from_mail, $from_name, $replyto, $subject, $message) {
    $content = "ahoj";
    $content = chunk_split(base64_encode($content));
    $uid = md5(uniqid(time()));

    $message = "Hallo,\r\ndo you like this script? I hope it will help.\r\n\r\ngr. Olaf";
    $header = "From: ".$from_name." <".$from_mail.">\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";
    $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";
    $header .= "--".$uid."\r\n";
    $header .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"; // use different content types here
    $header .= "Content-Transfer-Encoding: base64\r\n";
    $header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
    $header .= $content."\r\n\r\n";
    $header .= "--".$uid."--";    
    if (mail($mailto, $subject, "opsidiam@gmail.com", $header)) {
        echo "mail send ... OK"; // or use booleans here
    } else {
        echo "mail send ... ERROR!";
    }
}
    $path="upload/";
    $my_file =$path . basename( $_FILES['uploaded']['name']);
    $from_name = "Olaf Lederer";
    $mailto = "opsidiam@gmail.com";
    $from_mail = "opsidiam@gmail.com";
    $replyto = "mailer@mailer.sk";
    $subject = "This is a mail with attachment.";
mail_attachment($my_file, $path, $mailto, $from_mail, $from_name, $replyto, $subject, $message);
 }
?>
Fisir
Profil
Reaguji na opsidiama:
Protože ta funkce je špatně napsaná. Jako obsah souboru odesíláš pokaždé řetězec ahoj a jeho název je nedefinovaný, protože nikde nedefinuješ proměnnou $filename. Dá se to napravit takto:

nahradit řádky 32 a 33:
function mail_attachment($filename, $path, $mailto, $from_mail, $from_name, $replyto, $subject, $message) {
    $content = file_get_contents($my_file);

přidat za řádek 35:
    $filename = basename($my_file);
opsidiam
Profil
Super funguje to dakujem :)


a dalo by sa nejako vymazat toto ?
Olaf Lederer prostredníctvom domény wedos.net
to mi ukazuje na gmaile ked m pride sprava
Sitole
Profil
opsidiam:
a dalo by sa nejako vymazat toto ?
Olaf Lederer prostredníctvom domény wedos.net
to mi ukazuje na gmaile ked m pride sprava
Myslím, že se to již řešilo. Je to tam z případného zpětného dohledání či co. A odstranit to jednoduše nejde.
Fisir
Profil
Reaguji na opsidiama:
Jméno si můžeš změnit v proměnné $from_name, text prostřednictvím domény … odmazat nelze, leda by ses připojil přímo k SMTP serveru Gmailu (předtím bys ale musel ovládat alespoň základy PHP; případně můžeš zkusit doménu odesilatele nastavit jinou než gmail.com).
opsidiam
Profil
dobry vecer, mam problem
mam tento kod no ale posle to len prilohu a spravu nie preco??
            function mail_attachment($my_file, $filename, $path, $mailto, $from_mail, $from_name, $replyto, $subject, $message) {
                $content = file_get_contents($my_file);
                $content = chunk_split(base64_encode($content));
                $filename = basename($my_file);
                $uid = md5(uniqid(time()));
                $header = "From: ".$from_mail. "<".$from_mail.">"."Reply-To: ".$replyto . "\r\n" . "X-Mailer: PHP/" . phpversion();
                $header .= "MIME-Version: 1.0\r\n";
                $header .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n";
                $header .= "Content-Transfer-Encoding: base64\r\n";
                $header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
                $header .= $content."\r\n\r\n";
                $header .= "MIME-Version: 1.0\r\n";
                $header .= "Content-type: text/html; charset=iso-8859-1\r\n";
                if (mail($mailto, $subject, $message, $header)) {
                   echo "<br /> Mail bol odoslaný!!!! ";
                }else{
                    echo "<br /> Mail nebol odoslaný!!!! Prosím kontaktujťe správcu alebo tvorcu opsidiam@gmail.com";
                }
        }
Martin2
Profil *
opsidiam:
mam tento kod no ale posle to len prilohu a spravu nie preco??
Protože je nesprávně sestavený. Na odesílání mailů použij hotovou třídu (třeba Nette\Mail\Message) – nemáš dost zkušeností, abys to dělal ručně. (Málokdo je má, aby to zvládl opravdu bezchybně.)
juriad
Profil
opsidiam:
To je asi kvůli tomu, že jsi odmazal, že mail je multipart/mixed, odstranil jsi boundary. Pokud nejsi zvyklý pracovat s RFC, tak to prakticky nemáš šanci udělat správně.
Máš nějaký důvod se trestat a nepoužít knihovnu PHPMailer, která řeší snad vše okolo odesílání e-mailů?

<?php
require 'PHPMailerAutoload.php';

$mail = new PHPMailer;
$mail->setFrom('from@example.com', 'Mailer');
$mail->addReplyTo('replyto@example.com', 'Odpovedni');
$mail->addAddress('joe@example.net', 'Joe User');

$mail->isHTML(true);                                  // Set email format to HTML
$mail->Subject = 'Here is the subject';
$mail->Body    = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

$mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name

if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent';
}

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:

0