Webbestand als bijlage van 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)
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
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);
?>
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:
Edit:
Code-tags geplaatst.
Gewijzigd op 31/03/2024 11:30:31 door - Ariën -
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 -
$body .= "Content-Type: application/octet-stream; name=" . $weergavenaam . "\r\n";
Hiermee is het probleem opgelost !!