Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem PHP email přílohy

Tady jsem našel

<?php

 
// Recipient 
$to = 'xxxxx@seznam.cz'; 
 
// Sender 
$from = 'xxxxx@seznam.cz'; 
$fromName = 'CodexWorld'; 
 
// Email subject 
$subject = 'PHP Email with Attachment by CodexWorld';  
 
// Attachment file 
$file = "/xxxxx/xxxx_1.jpg"; 
 
// Email body content 
$htmlContent = ' 
    <h3>PHP Email with Attachment by CodexWorld</h3> 
    <p>This email is sent from the PHP script with attachment.</p> 
'; 
 
// Header for sender info 
$headers = "From: $fromName"." <".$from.">"; 
 
// Boundary  
$semi_rand = md5(time());  
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";  
 
// Headers for attachment  
$headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\""; 
 
// Multipart boundary  
$message = "--{$mime_boundary}\n" . "Content-Type: text/html; charset=\"UTF-8\"\n" . 
"Content-Transfer-Encoding: 7bit\n\n" . $htmlContent . "\n\n";  
 
// Preparing attachment 
if(!empty($file) > 0){ 
    if(is_file($file)){ 
        $message .= "--{$mime_boundary}\n"; 
        $fp =    @fopen($file,"rb"); 
        $data =  @fread($fp,filesize($file)); 
 
        @fclose($fp); 
        $data = chunk_split(base64_encode($data)); 
        $message .= "Content-Type: application/octet-stream; name=\"".basename($file)."\"\n" .  
        "Content-Description: ".basename($file)."\n" . 
        "Content-Disposition: attachment;\n" . " filename=\"".basename($file)."\"; size=".filesize($file).";\n" .  
        "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n"; 
    } 
} 
$message .= "--{$mime_boundary}--"; 
$returnpath = "-f" . $from; 
 
// Send email 
$mail = @mail($to, $subject, $message, $headers, $returnpath);  
 
// Email sending status 
echo $mail?"<h1>Email Sent Successfully!</h1>":"<h1>Email sending failed.</h1>"; 
 
?>

napíše mi to Email Sent Successfully!
do emailu to přijde toto

PHP Email with Attachment by CodexWorld
This email is sent from the PHP script with attachment.

ale soubor ne proč? jsem uvažoval že cesta k tomu souboru je špatná ale kdyby byla špatná tak při provádění skriptu se vypíše chyba díky

Předmět Autor Datum
Ak bude is_file($file) false, tak sa žiadna chyba nevypíše. A je to v poriadku. Od toho tam to testo…
pozorovateľ 19.05.2023 13:04
pozorovateľ
přece byla chybná cesta k tomu souboru už to funguje Tie zavináče pri fopen nekomentujem že by odt…
Víťa 19.05.2023 13:13
Víťa
Mě podáš prst a já vezmu celou :-) šel by ten skript upravit aby přenesl více souborů najednou ? dík…
Víťa 20.05.2023 12:16
Víťa
Šlo. Prostě tu část s přidáváním souboru několikrát zopakuješ.
Wikan 20.05.2023 13:33
Wikan
... a ideálně rovnou přidat kontrolu, jaká je celková velikost příloh, aby se pak někdo nedivil, pro…
host 20.05.2023 17:47
host
Bohužel nevím jak tady něco if(!empty($file) > 0){ if(is_file($file)){ $message .= "--{$mime_bounda…
Víťa 20.05.2023 18:47
Víťa
S tím zavináčem to nevypíše chybu, pokud by nějaká nastala.
Wikan 20.05.2023 18:54
Wikan
Co nevíš? Posílat víc příloh? Example (v příloze dva jpg, změň Content-Type pokud tam nebude jpg) <… poslední
kacikac 20.05.2023 20:16
kacikac

Bohužel nevím jak
tady něco

if(!empty($file) > 0){ 
    if(is_file($file)){ 
        $message .= "--{$mime_boundary}\n"; 
        $fp =    @fopen($file,"rb"); 
        $data =  @fread($fp,filesize($file)); 
       @fclose($fp);

jaký je rozdíl mezi @fopen a fopen ?
toto vím to načte soubor do proměnné data dál nevím :-| díky

Co nevíš? Posílat víc příloh?
Example (v příloze dva jpg, změň Content-Type pokud tam nebude jpg)

<?php

$mailto = "to@example";
$subject = "Jaké bych si přála počasí";
$message = "Přála bych si mít tolik sněhu jako loni v únoru.";
$file1 = "priloha1.jpg";
$file2 = "priloha2.jpg";

$separator = md5(time());

$subject = "=?utf-8?B?".base64_encode($subject)."?=";

$headers = "From: =?UTF-8?B?".base64_encode("Eliška")."?=<from@example>".PHP_EOL;
$headers .= "MIME-Version: 1.0".PHP_EOL;
$headers .= "Content-Type: multipart/mixed; boundary=\"".$separator."\"";

$body = "--".$separator.PHP_EOL;

$body .= "Content-Type: text/plain; charset=UTF-8".PHP_EOL;
$body .= "Content-Transfer-Encoding: base64".PHP_EOL.PHP_EOL;
$body .= base64_encode($message).PHP_EOL;

$body .= "--".$separator.PHP_EOL;

$body .= "Content-Type: image/jpeg; name=\"".$file1."\"".PHP_EOL;
$body .= "Content-Transfer-Encoding: base64".PHP_EOL;
$body .= "Content-Disposition: attachment; size=".filesize($file1)."; filename=\"".$file1."\"" . PHP_EOL . PHP_EOL;
$body .= chunk_split(base64_encode(file_get_contents($file1))).PHP_EOL;

$body .= "--".$separator.PHP_EOL;

$body .= "Content-Type: image/jpeg; name=\"".$file2."\"".PHP_EOL;
$body .= "Content-Transfer-Encoding: base64".PHP_EOL;
$body .= "Content-Disposition: attachment; size=".filesize($file2)."; filename=\"".$file2."\"" . PHP_EOL . PHP_EOL;
$body .= chunk_split(base64_encode(file_get_contents($file2))).PHP_EOL;

$body .= "--".$separator."--";

if (mail($mailto, $subject, $body, $headers)) echo "mail send ... OK";

Zpět do poradny Odpovědět na původní otázku Nahoru