mailen met attachment
Ik heb het script aangepast naar mijn situatie, en ik heb nu op 1 ding na alles werkend.
Ik krijg nu netjes een mail + attachment, echter het script heeft op een of andere manier onder aan het attachment 1 regel met "rotzooi" gezet.
Op php.net is het 't script van jcwebb at dicoe dot com 08-Feb-2006 11:16.
Misschien heeft iemand zin om er een blik op te werpen.
De rotzooi die aan het attachment wordt toegevoegd is:
‰íz{SÊ—¦º[b¥ªíý©mz¹Ú¶+Þ
Ik vermoed dat het heeft te maken met de vaststelling van deze variabele:
$mime_boundary=md5(time());
En vervolgens het aanroepen ervan:
$msg .= "--".$mime_boundary.$eol;
Als ik het goed begrepen heb wordt dit gebruikt om een scheiding te maken tussen de diverse delen van de mail. (multipart).
Hieronder volgt mijn versie:
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php
function mail_presentielijst($afd_lokatie){
# Is the OS Windows or Mac or Linux
if (strtoupper(substr(PHP_OS,0,3)=='WIN')) {
$eol="\r\n";
} elseif (strtoupper(substr(PHP_OS,0,3)=='MAC')) {
$eol="\r";
} else {
$eol="\n";
}
# File for Attachment
if (!file_exists("c:/inetpub/wwwroot/produktie/presentielijst/presentielijst_$afd_lokatie.html")) {echo "Het attachment bestaat niet."; exit;}
$f_name="c:/inetpub/wwwroot/produktie/presentielijst/presentielijst_$afd_lokatie.html"; // use relative path OR ELSE big headaches. $letter is my file for attaching.
$handle=fopen($f_name, 'rb');
$f_contents=fread($handle, filesize($f_name));
$f_contents=chunk_split(base64_encode($f_contents)); //Encode The Data For Transition using base64_encode();
$f_type=filetype($f_name);
fclose($handle);
# To Email Address
$emailaddress="naam@domain";
# Message Subject
$emailsubject="Presentielijst";
# Message Body
//Niet nodig.
# Common Headers
$headers .= 'From: B. de V. <bvs@domain>'.$eol;
$headers .= 'Reply-To: B. de V. <bvs@domain>'.$eol;
$headers .= 'Return-Path: B. de V. <bvs@domain>'.$eol; // these two to set reply address
$headers .= "X-Mailer: PHP v".phpversion().$eol; // These two to help avoid spam-filters
# Boundry for marking the split & Multitype Headers
$mime_boundary=md5(time());
$headers .= 'MIME-Version: 1.0'.$eol;
$headers .= "Content-Type: multipart/related; boundary=\"".$mime_boundary."\"".$eol;
$msg = "";
# Attachment
$msg .= "--".$mime_boundary.$eol;
$msg .= "Content-Type: text/html; name=\"presentielijst_$afd_lokatie.html\"".$eol; // sometimes i have to send MS Word, use 'msword' instead of 'pdf'
$msg .= "Content-Transfer-Encoding: base64".$eol;
$msg .= "Content-Disposition: attachment; filename=\"presentielijst_$afd_lokatie.html\"".$eol.$eol; // !! This line needs TWO end of lines !! IMPORTANT !!
$msg .= $f_contents.$eol.$eol;
# Setup for text OR html
$msg .= "Content-Type: multipart/alternative".$eol;
# Finished
$msg .= "--".$mime_boundary."--".$eol.$eol; // finish with two eol's for better security. see Injection.
# SEND THE EMAIL
ini_set(sendmail_from,'bvs@domain'); // the INI lines are to force the From Address to be used !
mail($emailaddress, $emailsubject, $msg, $headers);
ini_restore(sendmail_from);
//Verwijder attachment(s).
unlink ("c:/inetpub/wwwroot/produktie/presentielijst/presentielijst_$afd_lokatie.html");
}
?>
function mail_presentielijst($afd_lokatie){
# Is the OS Windows or Mac or Linux
if (strtoupper(substr(PHP_OS,0,3)=='WIN')) {
$eol="\r\n";
} elseif (strtoupper(substr(PHP_OS,0,3)=='MAC')) {
$eol="\r";
} else {
$eol="\n";
}
# File for Attachment
if (!file_exists("c:/inetpub/wwwroot/produktie/presentielijst/presentielijst_$afd_lokatie.html")) {echo "Het attachment bestaat niet."; exit;}
$f_name="c:/inetpub/wwwroot/produktie/presentielijst/presentielijst_$afd_lokatie.html"; // use relative path OR ELSE big headaches. $letter is my file for attaching.
$handle=fopen($f_name, 'rb');
$f_contents=fread($handle, filesize($f_name));
$f_contents=chunk_split(base64_encode($f_contents)); //Encode The Data For Transition using base64_encode();
$f_type=filetype($f_name);
fclose($handle);
# To Email Address
$emailaddress="naam@domain";
# Message Subject
$emailsubject="Presentielijst";
# Message Body
//Niet nodig.
# Common Headers
$headers .= 'From: B. de V. <bvs@domain>'.$eol;
$headers .= 'Reply-To: B. de V. <bvs@domain>'.$eol;
$headers .= 'Return-Path: B. de V. <bvs@domain>'.$eol; // these two to set reply address
$headers .= "X-Mailer: PHP v".phpversion().$eol; // These two to help avoid spam-filters
# Boundry for marking the split & Multitype Headers
$mime_boundary=md5(time());
$headers .= 'MIME-Version: 1.0'.$eol;
$headers .= "Content-Type: multipart/related; boundary=\"".$mime_boundary."\"".$eol;
$msg = "";
# Attachment
$msg .= "--".$mime_boundary.$eol;
$msg .= "Content-Type: text/html; name=\"presentielijst_$afd_lokatie.html\"".$eol; // sometimes i have to send MS Word, use 'msword' instead of 'pdf'
$msg .= "Content-Transfer-Encoding: base64".$eol;
$msg .= "Content-Disposition: attachment; filename=\"presentielijst_$afd_lokatie.html\"".$eol.$eol; // !! This line needs TWO end of lines !! IMPORTANT !!
$msg .= $f_contents.$eol.$eol;
# Setup for text OR html
$msg .= "Content-Type: multipart/alternative".$eol;
# Finished
$msg .= "--".$mime_boundary."--".$eol.$eol; // finish with two eol's for better security. see Injection.
# SEND THE EMAIL
ini_set(sendmail_from,'bvs@domain'); // the INI lines are to force the From Address to be used !
mail($emailaddress, $emailsubject, $msg, $headers);
ini_restore(sendmail_from);
//Verwijder attachment(s).
unlink ("c:/inetpub/wwwroot/produktie/presentielijst/presentielijst_$afd_lokatie.html");
}
?>
Iemand suggesties?
Oplossing:
//$msg .= "Content-Type: multipart/alternative".$eol;
Als ik die comment dan gaat alles wel goed, en komt er geen rotzooi meer in het attachment te staan.
Nu is het alleen nog even een kwestie van de code begrijpen en netjes maken, maar dat gaat nu wel lukken.
Nooit gedacht dat googlen op "‰íz{SÊ—¦º[b¥ªíý©mz¹Ú¶+Þ" iets zou opleveren. :P
Gewijzigd op 01/01/1970 01:00:00 door Wim
Er zijn nog geen reacties op dit bericht.