Webbestand als bijlage van een email

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Wim Schooten

Wim Schooten

31/03/2024 03:16:06
Quote Anchor link
Ik probeer een web bestand als bijlage toe te voegen aan een email.
Lokaal bestand uploaden (van de eigen computer) lukt wel.
Maar zodra ik een bestand van de website toevoeg, dan wordt het bestand toegevoegd met de naam .dat

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
DEFINE('bound',md5(uniqid(time())));
$map = $_SERVER['CONTEXT_DOCUMENT_ROOT'] . "/afrekenen/Export/2024/";
$bst = "CSV_A_accounts_20230114_20240121.csv";
$bst2 = $map . $bst;
                  
$fp = fopen($bst2,'r');
$bestand = fread($fp, filesize($bst2));
fclose($fp);

$headers = "From: ".$from." <".$email.">\r\n";
$headers .= "Reply-To: ".$from." <".$email.">\r\n";
$headers .= "MIME-Version: 1.0\r\n";
//email bestaat uit meerdere  bestanden dus vertel wat de scheidings teken is en dat het een multipart is
$headers .= "Content-Type: multipart/mixed; boundary=\"".bound."\"\r\n";
//we zenden een attachment mee
$headers .= "Content-Disposition:  attachment\r\n";
$body.= "This is a multi-part message in MIME format.\r\n";
$body.= "\r\n";
//boundary
$body.= "--".bound."\r\n";
//content type + charater set (iso in dit geval)
$body.= "Content-Type: text/plain; charset=iso-8859-1\r\n";
//codering (7 bit)
$body.= "Content-Transfer-Encoding: 7bit\r\n";
$body.= "\r\n";
//het bericht
$body.= $bericht ."\r\n";
//boundary
$body.= "--".bound."\r\n";
//content type + naam bestand (database.sql)
$body .= "Content-Type: application/octet-stream; name=".$_FILES['file']['name']."\r\n";
//codering
$body .= "Content-Transfer-Encoding: base64\r\n";
//als bijlage toegevoegd
$body.= "Content-disposition: attachment\r\n";
$body .= "\n";
//de inhoud van het bestand
$body .= chunk_split(base64_encode($bestand )) . "\r\n";
mail($email,$_POST['subject'],$body, $headers);
?>


Toevoeging op 31/03/2024 03:20:11:

Ik heb één regel verkeerd weergegeven:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$body .= "Content-Type: application/octet-stream; name=".$bestand."\r\n";


Edit:
Code-tags geplaatst.
Gewijzigd op 31/03/2024 11:30:31 door - Ariën -
 
PHP hulp

PHP hulp

20/04/2024 23:57:23
 
- Ariën  -
Beheerder

- Ariën -

31/03/2024 11:32:05
Quote Anchor link
Wat is de reden dat je dit handmatig doet, en niet via een standaard mailer die volgens de juiste RFC-regels mailt?

Denk bijvoorbeeld aan phpMailer of SwiftMailer. Dan hoef je het wiel in ieder geval niet opnieuw uit te vinden.
En je kan het ook eenvoudig installeren met Composer als je wilt.
Gewijzigd op 31/03/2024 11:32:23 door - Ariën -
 
Wim Schooten

Wim Schooten

01/04/2024 01:14:24
Quote Anchor link
Hieronder heb ik de naam van het bestand in de mail kunnen instellen.
$body .= "Content-Type: application/octet-stream; name=" . $weergavenaam . "\r\n";

Hiermee is het probleem opgelost !!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.