Mail met bijlage

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Tim Groot

Tim Groot

23/11/2007 14:47:00
Quote Anchor link
Hé phphulpers,
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)
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
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>

Ziet iemand het probleem?

bedankt alvast
Gewijzigd op 01/01/1970 01:00:00 door Tim Groot
 
PHP hulp

PHP hulp

26/04/2024 16:36:44
 
Jurgen assaasas

Jurgen assaasas

23/11/2007 15:00:00
Quote Anchor link
gebruik PHPmailer class, die heeft dit soort dingen standaard.
 
Onbekend Onbekend

Onbekend Onbekend

23/11/2007 15:00:00
Quote Anchor link
echo is je $file.

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
 
Tim Groot

Tim Groot

24/11/2007 19:45:00
Quote Anchor link
@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.

@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
 
Frank -

Frank -

24/11/2007 19:54:00
Quote Anchor link
Tim Groot schreef op 24.11.2007 19:45:
@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.
Waar is dan de mail-service? Ik zie toch echt de functie mail() in jouw code staan.

Het lijkt mij typisch een gevalletje wiel opnieuw uitvinden, phpmailer of Swift Mailer doen dit allemaal in een handomdraai.
 
Tim Groot

Tim Groot

24/11/2007 19:58:00
Quote Anchor link
De mailservice zit erachter. ik bedoel gewoon dat het niet een opzichzelf staand script is. als je kijkt in dit script zie je dat ook. er zit een aanmeld, admin, ledensysteem etc al in. dus vandaar zeg ik ook, dat ik het niet allemaal ga aanpassen alleen voor een bijlage erin te maken.

Het kan toch makkelijk hierin gemaakt worden. dat is ook mijn vraag, of jullie hier bij kunnen helpen.
 
Tim Groot

Tim Groot

24/11/2007 20:20:00
Quote Anchor link
Misschien moet ik de vraag anders stellen. wat is er noodzakelijk voor het verzenden van een email met bijlage?
Dan kan ik misschien zelf de fout opsporen als deze niet direct gezien word.
 
Noppes

Noppes

24/11/2007 22:17:00
Quote Anchor link
Zoeken op :
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.
 
Crispijn -

Crispijn -

24/11/2007 22:25:00
Quote Anchor link
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...
 
Frank -

Frank -

24/11/2007 22:29:00
Quote Anchor link
In de 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.
 
Tim Groot

Tim Groot

24/11/2007 23:51:00
Quote Anchor link
ja precies. bedankt voor de uitleg.

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
 



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.