Autor | Zpráva | ||
---|---|---|---|
opsidiam Profil |
#1 · Zasláno: 23. 11. 2015, 18:30:42
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!"; } } } |
||
tiso Profil |
#2 · Zasláno: 23. 11. 2015, 19:09:33
zakomentuj 31. a 63. riadok
|
||
opsidiam Profil |
#3 · Zasláno: 23. 11. 2015, 19:24:38
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 |
#5 · Zasláno: 23. 11. 2015, 19:51:23
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 |
#6 · Zasláno: 23. 11. 2015, 20:03:56
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 |
#7 · Zasláno: 23. 11. 2015, 20:24:44
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 |
#8 · Zasláno: 23. 11. 2015, 20:36:43
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 |
#10 · Zasláno: 23. 11. 2015, 20:56:43
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 * |
#13 · Zasláno: 24. 11. 2015, 21:40:45
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 |
#14 · Zasláno: 24. 11. 2015, 21:42:16
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'; } |
||
Časová prodleva: 9 let
|
0