Mail met bijlage
ik heb een probleempje met mijn mailservice. Ik wil nu een bijlage toevoegen aan mijn mailformulier. maar hij geeft de melding dat het bestand dat ik wil toevoegen niet bestaat. Terwijl hij wel de goed path geeft bij de foutmelding. alleen dan met \\ ipv \. Dus
c:\\document\\Friko\\
misschien dat dat het probleem is??? als dat zo is...hoe krijg ik dat weg?
ik heb de volgende code:
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
<?PHP
if (isset($_POST['verzenden'])) {
$email_boundary = md5(uniqid(rand()) . microtime());
$inline_boundary = md5(uniqid(rand()) . microtime());
function attachment($file,$email_boundary) {
if(is_file($file)) {
$attachment_header = "--".$email_boundary."\n" ;
$attachment_header .= "Content-Type: application/octet-stream;\n name=\"$file\"\n";
$attachment_header .= "Content-Transfer-Encoding: base64\n";
$attachment_header .= "Content-Disposition: attachment;\n filename=\"$file\"\n\n";
$fo = fopen($file,"rb");
$file['inhoud'] = fread($fo,filesize($file));
fclose($fo);
$file['inhoud'] = rtrim(chunk_split(base64_encode($file['inhoud']),76,"\r\n"));
return $attachment_header.$file['inhoud']."\n";
}
else {
echo "Het bestand ".$file." bestaat niet!!.\n";
}
}
#WELKE CATEGORIEËN?
$catstring = '';
foreach($_POST["cats"] as $cat)
{
if ($catstring) $catstring .= ' OR ';
$catstring .= "mcid='$cat'";
}
#CONTROLEER DE CATEGORIEËN IN DE TABEL mail_cat
#$catresult = mysql_query("SELECT * FROM mail_cat WHERE mcid='".$_POST["cats"]."'") or mysql_error();
$catresult = mysql_query("SELECT * FROM mail_cat WHERE $catstring") or mysql_error();
#$geef = mysql_fetch_assoc($catresult);
$catstring = '';
while($geef = mysql_fetch_assoc($catresult)){
if ($catstring) $catstring .= ' OR ';
$catstring .= "mcid='".$geef['mcid']."'";
}
#CONTROLEER WIE ER HIERVOOR GEABONNEERD ZIJN
#$emid = mysql_query("SELECT * FROM Koppel_mcat_em WHERE mcid ='".$geef['mcid']."'") or mysql_error();
$emid = mysql_query("SELECT DISTINCT emid FROM Koppel_mcat_em WHERE $catstring") or mysql_error();
#VERSTUUR ELK EEN EMAIL
while($mailid = mysql_fetch_assoc($emid)) {
$select = mysql_query("SELECT * FROM email WHERE emid ='".$mailid['emid']."'") or mysql_error();
$emails = mysql_fetch_assoc($select);
if (!$emails['email']) continue; // Er staan lege combinaties in koppel_mcat_em !
#START EMAILBERICHT
$email = urldecode($emails['email']); //decoderen emailadressen
$mto = '[email protected]'; //Reply to
$from = 'Houstand'; //From
$msubj = "".$_POST['title'].""; //Titel van het bericht
$body_form_email= "".$_POST['bericht'].""; //bericht
$bericht = nl2br($body_form_email); //dit zorgt er voor dat het bericht verzonden
//wordt zoals het getypt wordt. incl. enters
#HEADERS
$headers = "From: ".$from." <".$mto.">\r\n"; //gegevens worden opgehaald
$headers .= "Reply-To: ".$from." <".$mto.">\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"$email_boundary\"\n\n";
$headers .= "--$email_boundary\n";
$headers .= attachment($file);
$headers .= "Content-Type: text/html; charset=iso-8859-1\r\n"; //dit zorgt er voor dat de HTML te
//zien is in het mailtje
#TEMPLATE
mail($email, $msubj, "<html>
<head><base href=\"http://www.houstand.nl/\"><LINK REL=STYLESHEET TYPE=\"text/css\" HREF=\"peter.css\">
<title>Hou Stand mail</title>
</head>
<body class=\"main\">
<table width=\"590\" bgcolor=\"#800000\" cellpadding=\"1\" cellspacing=\"0\">
<tr>
<td><table class=\"main\" width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
<tr>
<td bgcolor=\"#EFEFEF\" colspan=\"3\"><div align=\"center\"><br><img src=\"http://www.houstand.nl/HouStandNieuws.gif\"><br><br></div></td>
</tr>
<tr>
<td colspan=\"3\">
<table class=\"main\" bgcolor=\"white\" cellpadding=\"5\" cellspacing=\"0\">
<tr>
<td width=\"45\" bgcolor=\"#EFEFEF\" valign=\"bottom\"><img src=\"http://www.houstand.nl/lustrum_1.gif\"></td>
<td width=\"500\">".$bericht."</td>
<td width=\"45\" valign=\"top\" bgcolor=\"#EFEFEF\"><img src=\"http://www.houstand.nl/lustrum_2.gif\"></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>",$headers);
} // end while
// Log datum en subject in mailing.inc
$al = '';
$i = 0;
if (file_exists('mailing.inc')) {
// Lees de laatste 4 mailings
$fp = fopen( 'mailing.inc', "r" );
if ($fp) {
while(!feof($fp)) {
$line = fgets($fp, 128);
if (trim($line) != '') $al .= $line;
if (++$i > 4) break;
}
fclose($fp);
}
}
// Log nieuwe mailing vooraan
$fp = fopen( 'mailing.inc', "w" );
if ($fp) {
fputs( $fp, date("j-m-Y") . " $msubj" . "\n" . $al);
fclose( $fp );
}
echo '<META HTTP-EQUIV="refresh" content="1;URL=' . $main . '">';
echo '<strong>De mail is verstuurd</strong>, u wordt automatisch doorgeschakeld, moment geduld a.u.b.';
} // end if
else
{
//als nog niet op verzenden is gedrukt, formulier weergeven
?>
<fieldset>
<legend><h2>Mail verzenden</h2></legend>
<br>
<br>
<table width="70%" bordercolor="#C0C0C0" style="border-collapse: collapse">
<tr>
<td width="45%">
<td>
<form method="post" action="">
<table width="70%" class="Lmenu" border="0" cellpadding="2" cellspacing="0">
<tr bgcolor="EFEFEF">
<td width="10%" valign="top">Catagorie:</td>
<td width="60%"><SELECT MULTIPLE name="cats[]" SIZE="8">
<?
//de catagoriën van de mailservice
$catresult = mysql_query("SELECT * FROM mail_cat ORDER BY catnaam") or mysql_error();
while($geef = mysql_fetch_assoc($catresult)){
echo "
<option value='".$geef['mcid']."'>".$geef['catnaam']."<br></option>
";
}
?>
</SELECT></td>
</tr>
<tr bgcolor="FFFFFF">
<td width="10%" valign="top">Onderwerp:</td>
<td width="60%"><input type="text" name="title" id="inputtitle" size="54" maxlength="60"></td>
</tr>
</tr>
<tr bgcolor="FFFFFF">
<td width="10%" valign="top">Bijlage:</td>
<td width="60%"><input name="file" type="file"/></td>
</tr>
<tr bgcolor="FFFFFF">
<td width="10%" valign="top">Bericht:</td>
<td width="60%"><textarea name="bericht" id="bericht" cols="40" rows="10"></textarea></td>
</tr>
<tr bgcolor="EFEFEF">
<td width="10%"></td>
<td width="60%"><input type="submit" name="verzenden" value="Verzenden"></td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</fieldset>
if (isset($_POST['verzenden'])) {
$email_boundary = md5(uniqid(rand()) . microtime());
$inline_boundary = md5(uniqid(rand()) . microtime());
function attachment($file,$email_boundary) {
if(is_file($file)) {
$attachment_header = "--".$email_boundary."\n" ;
$attachment_header .= "Content-Type: application/octet-stream;\n name=\"$file\"\n";
$attachment_header .= "Content-Transfer-Encoding: base64\n";
$attachment_header .= "Content-Disposition: attachment;\n filename=\"$file\"\n\n";
$fo = fopen($file,"rb");
$file['inhoud'] = fread($fo,filesize($file));
fclose($fo);
$file['inhoud'] = rtrim(chunk_split(base64_encode($file['inhoud']),76,"\r\n"));
return $attachment_header.$file['inhoud']."\n";
}
else {
echo "Het bestand ".$file." bestaat niet!!.\n";
}
}
#WELKE CATEGORIEËN?
$catstring = '';
foreach($_POST["cats"] as $cat)
{
if ($catstring) $catstring .= ' OR ';
$catstring .= "mcid='$cat'";
}
#CONTROLEER DE CATEGORIEËN IN DE TABEL mail_cat
#$catresult = mysql_query("SELECT * FROM mail_cat WHERE mcid='".$_POST["cats"]."'") or mysql_error();
$catresult = mysql_query("SELECT * FROM mail_cat WHERE $catstring") or mysql_error();
#$geef = mysql_fetch_assoc($catresult);
$catstring = '';
while($geef = mysql_fetch_assoc($catresult)){
if ($catstring) $catstring .= ' OR ';
$catstring .= "mcid='".$geef['mcid']."'";
}
#CONTROLEER WIE ER HIERVOOR GEABONNEERD ZIJN
#$emid = mysql_query("SELECT * FROM Koppel_mcat_em WHERE mcid ='".$geef['mcid']."'") or mysql_error();
$emid = mysql_query("SELECT DISTINCT emid FROM Koppel_mcat_em WHERE $catstring") or mysql_error();
#VERSTUUR ELK EEN EMAIL
while($mailid = mysql_fetch_assoc($emid)) {
$select = mysql_query("SELECT * FROM email WHERE emid ='".$mailid['emid']."'") or mysql_error();
$emails = mysql_fetch_assoc($select);
if (!$emails['email']) continue; // Er staan lege combinaties in koppel_mcat_em !
#START EMAILBERICHT
$email = urldecode($emails['email']); //decoderen emailadressen
$mto = '[email protected]'; //Reply to
$from = 'Houstand'; //From
$msubj = "".$_POST['title'].""; //Titel van het bericht
$body_form_email= "".$_POST['bericht'].""; //bericht
$bericht = nl2br($body_form_email); //dit zorgt er voor dat het bericht verzonden
//wordt zoals het getypt wordt. incl. enters
#HEADERS
$headers = "From: ".$from." <".$mto.">\r\n"; //gegevens worden opgehaald
$headers .= "Reply-To: ".$from." <".$mto.">\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"$email_boundary\"\n\n";
$headers .= "--$email_boundary\n";
$headers .= attachment($file);
$headers .= "Content-Type: text/html; charset=iso-8859-1\r\n"; //dit zorgt er voor dat de HTML te
//zien is in het mailtje
#TEMPLATE
mail($email, $msubj, "<html>
<head><base href=\"http://www.houstand.nl/\"><LINK REL=STYLESHEET TYPE=\"text/css\" HREF=\"peter.css\">
<title>Hou Stand mail</title>
</head>
<body class=\"main\">
<table width=\"590\" bgcolor=\"#800000\" cellpadding=\"1\" cellspacing=\"0\">
<tr>
<td><table class=\"main\" width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
<tr>
<td bgcolor=\"#EFEFEF\" colspan=\"3\"><div align=\"center\"><br><img src=\"http://www.houstand.nl/HouStandNieuws.gif\"><br><br></div></td>
</tr>
<tr>
<td colspan=\"3\">
<table class=\"main\" bgcolor=\"white\" cellpadding=\"5\" cellspacing=\"0\">
<tr>
<td width=\"45\" bgcolor=\"#EFEFEF\" valign=\"bottom\"><img src=\"http://www.houstand.nl/lustrum_1.gif\"></td>
<td width=\"500\">".$bericht."</td>
<td width=\"45\" valign=\"top\" bgcolor=\"#EFEFEF\"><img src=\"http://www.houstand.nl/lustrum_2.gif\"></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>",$headers);
} // end while
// Log datum en subject in mailing.inc
$al = '';
$i = 0;
if (file_exists('mailing.inc')) {
// Lees de laatste 4 mailings
$fp = fopen( 'mailing.inc', "r" );
if ($fp) {
while(!feof($fp)) {
$line = fgets($fp, 128);
if (trim($line) != '') $al .= $line;
if (++$i > 4) break;
}
fclose($fp);
}
}
// Log nieuwe mailing vooraan
$fp = fopen( 'mailing.inc', "w" );
if ($fp) {
fputs( $fp, date("j-m-Y") . " $msubj" . "\n" . $al);
fclose( $fp );
}
echo '<META HTTP-EQUIV="refresh" content="1;URL=' . $main . '">';
echo '<strong>De mail is verstuurd</strong>, u wordt automatisch doorgeschakeld, moment geduld a.u.b.';
} // end if
else
{
//als nog niet op verzenden is gedrukt, formulier weergeven
?>
<fieldset>
<legend><h2>Mail verzenden</h2></legend>
<br>
<br>
<table width="70%" bordercolor="#C0C0C0" style="border-collapse: collapse">
<tr>
<td width="45%">
<td>
<form method="post" action="">
<table width="70%" class="Lmenu" border="0" cellpadding="2" cellspacing="0">
<tr bgcolor="EFEFEF">
<td width="10%" valign="top">Catagorie:</td>
<td width="60%"><SELECT MULTIPLE name="cats[]" SIZE="8">
<?
//de catagoriën van de mailservice
$catresult = mysql_query("SELECT * FROM mail_cat ORDER BY catnaam") or mysql_error();
while($geef = mysql_fetch_assoc($catresult)){
echo "
<option value='".$geef['mcid']."'>".$geef['catnaam']."<br></option>
";
}
?>
</SELECT></td>
</tr>
<tr bgcolor="FFFFFF">
<td width="10%" valign="top">Onderwerp:</td>
<td width="60%"><input type="text" name="title" id="inputtitle" size="54" maxlength="60"></td>
</tr>
</tr>
<tr bgcolor="FFFFFF">
<td width="10%" valign="top">Bijlage:</td>
<td width="60%"><input name="file" type="file"/></td>
</tr>
<tr bgcolor="FFFFFF">
<td width="10%" valign="top">Bericht:</td>
<td width="60%"><textarea name="bericht" id="bericht" cols="40" rows="10"></textarea></td>
</tr>
<tr bgcolor="EFEFEF">
<td width="10%"></td>
<td width="60%"><input type="submit" name="verzenden" value="Verzenden"></td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</fieldset>
Ziet iemand het probleem?
bedankt alvast
Gewijzigd op 01/01/1970 01:00:00 door Tim Groot
gebruik PHPmailer class, die heeft dit soort dingen standaard.
en zet die in je headers is buiten quotes
en ipv is_file() kun je ook file_exists() gebruiken.
Gewijzigd op 01/01/1970 01:00:00 door Onbekend Onbekend
hier zit al een grote mail service omheen. dus zou dubbel zijn als ik nu alleen om die bijlage een nieuwe PHPmailer ga gebruiken.
@Tommy
Die file_exists() snap ik. maar wat moet ik nu precies bijten de quotes zetten?
$headers .= attachment($file);
moet deze in quotes? of bedoel je $headers .= attachment(".$file."); ??
misschien zit de fout wel in de doorzending van formulier naar de function attachement?
Gewijzigd op 01/01/1970 01:00:00 door Tim Groot
Tim Groot schreef op 24.11.2007 19:45:
Waar is dan de mail-service? Ik zie toch echt de functie mail() in jouw code staan.@jurgen.
hier zit al een grote mail service omheen. dus zou dubbel zijn als ik nu alleen om die bijlage een nieuwe PHPmailer ga gebruiken.
hier zit al een grote mail service omheen. dus zou dubbel zijn als ik nu alleen om die bijlage een nieuwe PHPmailer ga gebruiken.
Het lijkt mij typisch een gevalletje wiel opnieuw uitvinden, phpmailer of Swift Mailer doen dit allemaal in een handomdraai.
Het kan toch makkelijk hierin gemaakt worden. dat is ook mijn vraag, of jullie hier bij kunnen helpen.
Dan kan ik misschien zelf de fout opsporen als deze niet direct gezien word.
Content-Type: multipart/mixed
let wel dat je dan met boundary moet gaan werken
Er zijn ook al suggesties gedaan richting:
phpMailer daar kan je ook uithalen hoe je een bijlage kan versturen
of je klikt op de link topic zoeken en typed bij zoeken op mailen met bijlage dan krijg andere topics waar misschien wat zinnigs in geschreven is.
Aan je vraag te zien weet je niet wat PHPmailer en swiftmailer doen. Kijk daar eens naar. Het zal je een hoop narigheid en gepiel besparen...
handleiding staat ook een voorbeeld voor het versturen van een email met bijlage, wellicht kun je daar wat mee.
Desondanks raad ik je aan om een aparte class zoals Swift Mailer te gaan gebruiken, dat maakt het leven een stuk eenvoudiger. En het is echt niet nodig om je huidige scripts nu direct aan te passen, pas alleen datgene aan wat je nu nodig hebt. Het is niet optimaal, maar het kan best.
In de Desondanks raad ik je aan om een aparte class zoals Swift Mailer te gaan gebruiken, dat maakt het leven een stuk eenvoudiger. En het is echt niet nodig om je huidige scripts nu direct aan te passen, pas alleen datgene aan wat je nu nodig hebt. Het is niet optimaal, maar het kan best.
Ik heb een aantal scripts al bekeken en handleidingen.
Volgens mij ben ik in mijn script die in de topicstart staat al een aardig eind. Mis ik daar nog iets in wat ik nodig heb voor de bijlage gedeelte dan? Want zoals ik overal kan lezen is het geen wat ik nodig heb al aanwezig in het script.
*Ik heb een apparte attachment function geschreven
*headers boundry en multipart/mixed zitten er ook in