email met bijlage

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Stefan van Iwaarden

Stefan van Iwaarden

16/01/2008 18:03:00
Quote Anchor link
Ik gebruik het onderstaande script voor het versturen van een e-mail met bijlage.
(op de plaats van de for moet een while loop met adressen uit een database komen)

Deze werkt prima, maar alleen als ik e-mail adressen invul van domeinen die op dezelfde server staan, zodra ik een e-mail adres van bijv. mijn eigen planet adres invul, dan komt het niet aan.

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
<?php
//mail formulier voor bijlage
//geneer boundary

DEFINE('bound',md5(uniqid(time())));
//check request method

    if($_SERVER['REQUEST_METHOD'] == 'POST')
    {

        for ($i=1; $i<=3; $i++)
        {

        if ($i==1)
        {

            $email = '';
        }

        elseif($i==2)
        {

            $email = '';
        }

        else
        {
            $email = '';
        }

        
         //if file upload send with email as mixed
         if(!empty($_FILES['file']['name']))
         {

            //check filesize
             if($_FILES['file']['size'] < 5242880)
             {

                  $headers = "From: ".$_POST['from']." <".$_POST['email'].">\r\n";
                $headers .= "Reply-To: ".$_POST['from']." <".$_POST['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";
                   //readfile
                   $fp = fopen($_FILES['file']['tmp_name'],'r');
                   $bestand = fread($fp,$_FILES['file']['size']);
                   fclose($fp);
                   //create body
                   //generenen een body. Dit is een multi part gezeik

                   $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
                $bericht = '';
                $bericht = $_POST['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);
                echo 'Email (Met een bijlage) is verzonden';
            }

            else
            {
                 echo 'Bestands groote is te groot';
             }
        }

        else
        {
            $headers = "From: ".$_POST['from']." <".$_POST['email'].">\r\n";
               $headers .= "Reply-To: ".$_POST['from']." <".$_POST['email'].">\r\n";
               $headers .= "MIME-Version: 1.0\r\n";
               $bericht = $_POST['bericht'];
               mail($email,$_POST['subject'],$bericht,$headers);
               echo 'Email (Zonder een bijlage) is verzonden';
         }
         }
     }

     else
     {
        //mail formulier je moet zelf het fomullier maken
    
        echo "<div id=\"contactform\" style=\"margin-left: 23px;\">";

        echo "<form action=\"" . $_SERVER['PHP_SELF'] . "\" method=\"POST\" enctype=\"multipart/form-data\">";
         echo "<p> Naam:</p><input type='text' name='from'><br />";
         echo "<p> Email:</p><input type='text' name='email'><br />";
         echo "<p> Onderwerp:</p><input type='text' name='subject'><br />";
         echo "<p> Bestand:</p><input type='file' name='file'><br />";
         echo "<p> Bericht:</p><textarea name='bericht' width='700' height='15'></textarea><br />";
        echo "<input type=\"submit\" value=\"Verzenden\">";
        
        echo "</div>";
    }

?>


oh ja, hier te testen http://www.elektronica-onderdelen.nl/mailbijlage.php
Gewijzigd op 01/01/1970 01:00:00 door Stefan van Iwaarden
 
PHP hulp

PHP hulp

16/05/2024 03:21:19
 
- SanThe -

- SanThe -

16/01/2008 18:08:00
Quote Anchor link
Check eens wat.

if(mail(..........))
{
//okee
}
else
{
//error
}

Edit: Zet dit bovenin je script.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

// rest
?>
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
 
Jurgen assaasas

Jurgen assaasas

16/01/2008 18:16:00
Quote Anchor link
gewoon phpmailer gebruiken dan hoef je alleen maar het relatieve pad naar het bestand aan te geven.
 



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.