| 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: 10 let
|
|||
0