Email met attachments class

Door Bas Kreleger, 18 jaar geleden, 11.757x bekeken

Met deze class kun je zoveel attachments (bijlagen) als je wilt toevoegen aan een e-mail bericht.

Ik heb het gemaakt zodat ik de door een PHP script gemaakte en geuploade PDF bestanden kan e-mailen. Dit is dus niet gemaakt om voor bezoekers van een website bestanden te uploaden die vervolgens per e-mail worden verstuurd. Hierdoor is er geen extentie beveiliging ingebouwd zodat ieder bestand als attachment toegevoegd kan worden. Dit kun je er echter nog wel zelf inbouwen.

In het bestand class_mail_attachment.php, kun je onder de comments CONFIG de settings aanpassen. Hierin kun je o.a. een standaard ontvanger en standaard afzender van het e-mail bericht opgeven.

Beveiliging
- Totaal aantal Mb's aan te geven (per bestand of in totaal)
- Zelfde bestand twee keer uploaden kan niet

Gebruik voorbeeld #1

Wil je gebruik maken van de door jou opgegeven ontvanger en afzender die je hebt opgegeven in class_email_attachment.php, dan kun je het als volgt gebruiken:

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
<?
    //-- include class
    include("classes/class_mail_attachment.php");
    
    //-- array with attachments
    $files[] = "files/Afbeelding422.jpg";
    $files[] = "../ander_path/pdfbestand.pdf";
    
    //-- subject of e-mail
    $subject = "Onderwerp van e-mail bericht";
    
    //-- message of e-mail
    $message = "Bericht in de e-mail";
    
    //-- open class
    $mail = new MailAttach();
    echo $mail->SendMailAttach($subject, $message, $files);
?>


Gebruik voorbeeld #2

Wil je NIET gebruik maken van de door jou opgegeven ontvanger en afzender die je hebt opgegeven in class_email_attachment.php, dan kun je het als volgt gebruiken:

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
<?
    //-- include class
    include("classes/class_mail_attachment.php");
    
    //-- array with attachments
    $files[] = "files/Afbeelding422.jpg";
    $files[] = "../ander_path/pdfbestand.pdf";
    
    //-- subject of e-mail
    $subject = "Onderwerp van e-mail bericht";
    
    //-- message of e-mail
    $message = "Bericht in de e-mail";
    
    //-- open class
    $mail = new MailAttach();
    echo $mail->SendMailAttach($subject, $message, $files, 'Naam Ontvanger', 'naamontvanger@emailadres.nl', 'Naam Afzender', 'naamafzender@emaildres.nl');
?>


Gebruik voorbeeld #3

Je kunt de class ook gebruiken om een e-mail te sturen zonder attachment. Dit kun je als volgt doen:

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
<?
    //-- include class
    include("classes/class_mail_attachment.php");
    
    //-- subject of e-mail
    $subject = "Onderwerp van e-mail bericht";
    
    //-- message of e-mail
    $message = "Bericht in de e-mail";
    
    //-- open class
    $mail = new MailAttach();
    echo $mail->SendMailAttach($subject, $message, '', 'Naam Ontvanger', 'naamontvanger@emailadres.nl', 'Naam Afzender', 'naamafzender@emaildres.nl');

    // of als je gebruik wilt maken van config afz. en ontv.:
    // echo $mail->SendMailAttach($subject, $message);

?>


Have fun :)

Gesponsorde koppelingen

PHP script bestanden

  1. email-met-attachments-class

 

Er zijn 9 reacties op 'Email met attachments class'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen


18 jaar geleden
 
0 +1 -0 -1
Waarom doe je bij de errors een <pre> en een <code> en niet één van deze?
Beetje vreemd:
$this->error[4] = "<pre><code><b>Error 3:</b><br />Mail could not be send: Attachment is not unique.</code></pre>";
Bas Kreleger
Bas Kreleger
18 jaar geleden
 
0 +1 -0 -1
Dat beetje vreemd was idd een schoonheidsfoutje.. :)

<pre> & <code> werken samen.. <code> om het lettertype en <pre> zodat het de regel niet afbreekt.. Ik gebruik het voornamelijk om SQL queries mee te echo-en.. Dan breekt hij de regel niet af wat soms de leesbaarheid verhoogd.. Maar doet dat er eigenlijk toe? Als je alles goed doet krijg je die errors niet te zien ;).
Jelmer -
Jelmer -
18 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
        DEFINE('bound', md5(uniqid(time())));
?>


Je kan dus maar 1 keer SendMailAttach() aanroepen. Een tweede keer zal hij een foutmelding geven dat 'bound already defined' is. Dus mij lijkt een normale variabele hier meer op zijn plaats ;)

En die() in een klasse, kan dat niet anders?
Bas Kreleger
Bas Kreleger
18 jaar geleden
 
0 +1 -0 -1
Aangepast!
PHP erik
PHP erik
18 jaar geleden
 
0 +1 -0 -1
Hmm je gooit het in een klasse zonder functionaliteit van object georienteerd programmeren toe te voegen. Ik zou de errordefinities in een aparte functie gooien, nu zit ik vast aan de meldingen in de klasse en kan ik dit alleen veranderen door de klasse zelf aan te passen. Verder zou het fijn zijn als de headers aangepast kunnen worden doormiddel van een functie. Hetzelfde met maxfilesize en dergelijke.

Om dit lekker overal te kunnen gebruiken moet ik de klasse zelf de hele tijd aanpassen en daar word ik niet gelukkig van.

Oh en wat me opvalt. Waarom return je niet gewoon true of false maar een message? Dat is juist voor het procedural gedeelte en niet voor het OOP gedeelte lijkt mij.

Nice verder :) :)
Edwin
Edwin
18 jaar geleden
 
0 +1 -0 -1
Ik heb zojuist het script gebruikt als voorbeeld/ leidraad, erg handig!

Vier opmerkingen:
- op regel 117 en regel 181 moet \n staan i.p.v. \r\n. Dit voorkomt weer wat punten bij Spamassasin

- aan het eind van een MIME bericht moet je ook afsluiten met de boundary, maar dan ook afgesloten met -- (oftewel $body .= "--" . $bound . "--\r\n";)

- de headers uitbreiden met de volgende regels verbetert de acceptatie van de e-mail en voorkomt dat de e-mail als spam gezien wordt:

$headers .= "Reply-To: " . $from_email . "\r\n";
$headers .= "X-mailer: PHP/" . phpversion() . "\r\n";

- Hetzelfde geldt voor het verzenden met (t.b.v. o.a. Tiscali-mail):

mail($to_name . " <" .$to_email . ">", $subject, $body, $headers, "-f " . $from_email);


Verder zeer goed script.
Rogier H
Rogier H
18 jaar geleden
 
0 +1 -0 -1
Ik gebruik dit script om bijlages aan een aantal mensen tegelijk te sturen. Het werkt prima, maar bij elk volgend mailtje komt er een bijlage bij. Dit komt (denk ik) door de string.

$files[]

Maar hoe krijg ik bij elk volgend mailtje de bijlages weg, zodat het opnieuw begint. Er een gewone variabele van maken

$files

werkt ook niet.
Wie kan er helpen?
Rene Wennekes
Rene Wennekes
8 jaar geleden
 
0 +1 -1 -1
Misschien unset($files[]) ???
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Ozzie PHP
Ozzie PHP
8 jaar geleden
 
1 +1 -0 -1
Rene, wil je aub niet reageren op een vraag van 9 jaar oud... Dank je.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. email-met-attachments-class

Labels

Navigatie

 
 

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.