[PHP] phpmailer functie verstuurt geen attachment mee?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Beste mensen., ik heb een sollicitatieformulier gemaakt met een mail() functie van php. PHPmailer heb ik daarvoor gebruikt. Nu werkt alles prima, alle gegevens van het formulier worden netjes in een mail gezet naar de ontvanger. Alleen bij het meesturen van de CV klopt er iets niet. Hij geeft geen foutmelding maar hij neem de CV niet mee. Terwijl toen ik lokaal heb getest dat ie wel netjes een bijlage mee stuur. Hebben jullie enig idee wat ik moet veranderen?

Hieronder de code van het stukje waar hij de CV moet uploaden en meesturen
code:
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
$attachmentcv = $_SESSION['email']['upload'];
                    $body1 = $_SESSION['email']['msg'];
                    $body2 = $_SESSION['email']['msg2'];
                    $body = $body1.'<BR />'.$body2;
                    $subject = $onderwerp;

                    $mail = new PHPMailer();
                    
                    $mail->From     = $verzender;
                    $mail->FromName = $verzender_naam;
                    $mail->IsHTML(true);
                    
                    $mail->Subject = $subject;
                    $mail->AddAddress($ontvanger,$ontvanger_naam);
                    
                    
                    $mail->Host     = $smtp_host;
                    $mail->Mailer   = $mailer_type;
                    
                    $mail->Body    = $body;
                    
                    if(!empty($uploadcv)){
                        $mail->AddAttachment($attachmentcv, "bestand");  // optional name
                    }
                    
                    if(!$mail->Send()){
                       echo "Er was een error om dit bericht te versturen";
                       exit;
                    }else{                  
                        session_destroy();
                    }
                    

                                        
                ?>

Acties:
  • 0 Henk 'm!

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

is (bijvoorbeeld) $uploadcv wel gevuld ?

Acties:
  • 0 Henk 'm!

  • beetle71
  • Registratie: Februari 2003
  • Laatst online: 09-09 15:24
/me Zoekt glazen bol..... ;)

Heb je al geprobeerd of dit stuk wel wordt uitgevoerd?
PHP:
1
2
3
if(!empty($uploadcv)){
                        $mail->AddAttachment($attachmentcv, "bestand");  // optional name
                    }


Waar komt $uploadcv vandaan? Een formulier?!

Graag wat meer info over hoe en wat

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
het zit in feite zo in elkaar.

ik heb een html form
code:
1
2
3
4
5
6
7
8
<beginhtml> 

<form name="formulier" method="post">
 <input type="file" name="uploadcv" alt="uploadcv" value="uploadcv">
 <input type="submit" name="submit" value="ok" />
</form>

</endhtml>

als ik dit formulier post dan komt er het volgende stukje php code
code:
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
<?

require("./phpmailer/class.phpmailer.php");

$uploadcv = $_POST["uploadcv"];

$mail = new PHPMailer();
                    
$mail->From     = 'email1@email.com';
$mail->FromName = 'email1@email.com';
$mail->IsHTML(true);
$mail->Subject = 'dit is het onderwerp';
$mail->AddAddress('emailadres@emailadres.com','emailadd van pietersen');
$mail->Host     = 'mail.chello.nl';
$mail->Mailer   = 'smtp'; 
$mail->Body    = "dit spreekt voor zich";
                    
if(!empty($uploadcv)){
 $mail->AddAttachment($attachmentcv);  // optional name
}
                    
if(!$mail->Send()){
  echo "Er was een error om dit bericht te versturen";
  exit;
}else{
  session_destroy();

}


?>

Het gekke is. via smtp hier lokaal wil het verzenden met attachment wel werken maar
door het gebruik van de mail functie niet lokaal wil hij online de attachment niet meegeven.
en dus werkt alles wel gewoon en de code zit wel goed in elkaar voor zover ik kan zien maar het werkt gewoon niet.

Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 21-09 12:54
Volgens mij klopt heel je file-upload HTML gewoon niet. Check even de PHP-faq, of duik de GoT-search in met wat keywords als: php file upload.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dat heb ik dus al wel gedaan...Maar dat gaat over uploaden in een database. Bij mij wordt het in een mail gezet en verstuurd.

Hij doet het gewoon,...alleen geen attachment wordt meegestuurd. Het formulier bestaat uit twee delen, na het eerste deel wordt alles onthouden in een sessie, dan in het tweede deel ook en dan pakt ie die gegevens en zet hem in een email. Lokaal pakt ie wel een bijlage en online niet. Dus wat zou er dan niet kloppen?

Acties:
  • 0 Henk 'm!

Verwijderd

Staat het geuploade document wel op de "online" webserver na het uploaden?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik ga nu even proberen om bij de formulieren enctype="multipart/form-data" neer te zetten..Misschien dat ie dan wel wilt werken

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:44

crisp

Devver

Pixelated

sowieso staan uploaded files niet in $_POST maar in $_FILES, en ik snap ook niet waar $attachmentcv vandaan zou moeten komen. M.i. zou dit moeten werken:
PHP:
1
2
3
4
if (isset($_FILES['uploadcv']) && is_uploaded_file($_FILES['uploadcv']['tmp_name']))
{
    $mail->AddAttachment($_FILES['uploadcv']['tmp_name']);
}

[ Voor 6% gewijzigd door crisp op 20-09-2005 17:23 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

crisp schreef op dinsdag 20 september 2005 @ 17:22:
sowieso staan uploaded files niet in $_POST maar in $_FILES, en ik snap ook niet waar $attachmentcv vandaan zou moeten komen. M.i. zou dit moeten werken:
PHP:
1
2
3
4
if (isset($_FILES['uploadcv']) && is_uploaded_file($_FILES['uploadcv']['tmp_name']))
{
    $mail->AddAttachment($_FILES['uploadcv']['tmp_name']);
}
Daarmee zend je het bestand wel met zijn temp naam mee. Zelf nog even moven binnen de tmp dir naar $_FILES['uploadcv']['name'] is wat netter.

Acties:
  • 0 Henk 'm!

  • disjfa
  • Registratie: April 2001
  • Laatst online: 03-07 14:47

disjfa

be

http://nl3.php.net/manual/en/features.file-upload.php
<form enctype="multipart/form-data" action="__URL__" method="POST">

Note: Be sure your file upload form has attribute enctype="multipart/form-data" otherwise the file upload will not work.

[ Voor 15% gewijzigd door disjfa op 20-09-2005 17:30 ]

disjfa - disj·fa (meneer)
disjfa.nl


Acties:
  • 0 Henk 'm!

  • Civil
  • Registratie: Oktober 2002
  • Laatst online: 20-09 17:13
Verwijderd schreef op dinsdag 20 september 2005 @ 17:08:
ik ga nu even proberen om bij de formulieren enctype="multipart/form-data" neer te zetten..Misschien dat ie dan wel wilt werken
Best opvallend dat niemand dit gelijk heeft geroepen in dit topic. Het was bij mij in ieder geval de eerste ingeving die bij me op kwam.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hieronder onderdeel van het formulier waar het document opgezocht kan worden.
code:
1
2
3
4
5
6
7
8
9
<tr>
<td>Curriculum Vitae*<br><input style="width:280px;" type="file" enctype="multipart/form-data" name="uploadcv" alt="uploadcv" value="uploadcv"></td>
</tr>

/////////////////
HIer heb ik boven elke pagina van het formulier de enctype ook aangebracht
/////////////////

<form method="post" enctype="multipart/form-data" action="vacatures2.php">


Nu heb ik de volgende phpscript die ervoor moet zorgen dat ie de attachement meestuurt.

code:
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
require("plugins/phpmailer/class.phpmailer.php");

$uploadcv = $_FILES['uploadcv'];

$_SESSION['email']['upload'] = $uploadcv;

/////////////////////////////////////////////////////////
hieronder het stukje die het zou moeten meesturen
////////////////////////////////////////////////////////

$attachmentcv = $_SESSION['email']['upload'];
$body1 = $_SESSION['email']['msg'];
$body2 = $_SESSION['email']['msg2'];
$body = $body1.'<BR />'.$body2;
$subject = $onderwerp;

$mail = new PHPMailer();
                    
$mail->From     = $verzender;
$mail->FromName = $verzender_naam;
$mail->IsHTML(true);
                    
$mail->Subject = $subject;
$mail->AddAddress($ontvanger,$ontvanger_naam);
                    
                    
$mail->Host     = $smtp_host;
$mail->Mailer   = $mailer_type;
                    
$mail->Body    = $body;
                    
if (isset($_FILES['uploadcv']) && is_uploaded_file($_FILES['uploadcv']['tmp_name'])) {
$mail->AddAttachment($_FILES['uploadcv']['tmp_name']); 
 } 
                    
        
if(!$mail->Send()){
   echo "Er was een error om dit bericht te versturen";
exit;
}else{                  
session_destroy();
}


Nu werkt hij nog steeds niet.. heb al jullie adviezen en hulp opgevolgd en zodanig aangepast. HEt kan zijn dat ik iets kleins over het hoofd zie?? Laat het me dan weten.


?>

Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 21-09 12:54
Als ik jouw was zou ik even jouw probleem uit je applicatie lichten. Maak bijvoorbeeld even een kleine testapplicatie aan, met alleen een formulier om een bestand naar de server te versturen. Dus zonder die PHPmailer meuk erom heen en de rest van je php-scripts. Dan weet je in ieder geval hoe het moet en dat die code het weldegelijk doet. Voorbeelden, script samples e.d. mag ik aannemen dat je die zelf wel kunt verzinnen of opzoeken.

Als je dan eenmaal werkend hebt is het veel gemakkelijker om het te integreren in je huidige applicatie.

Verwijderd

Topicstarter
Ja dat is ook een mogelijkheid. Alleen zoals al eerder vermeld, het moet niet naar een server gmaild worden maar rechtstreeks in een mail zetten en versturen. Er komt dus geen server aan te pas waar het bestand naartoe wordt gestuurd. Maar toch bedankt

Verwijderd

Verwijderd schreef op woensdag 21 september 2005 @ 19:56:
Ja dat is ook een mogelijkheid. Alleen zoals al eerder vermeld, het moet niet naar een server gmaild worden maar rechtstreeks in een mail zetten en versturen. Er komt dus geen server aan te pas waar het bestand naartoe wordt gestuurd. Maar toch bedankt
Uhm ... ik denk dat jij je eigen script niet goed begrijpt dan. De file moet eerst ge-upload worden naar de server waar PHP draait, om vervolgens vanaf daar te worden verstuurd naar de gewenste gebruiker.

Wat Sybr_E-N bedoelt is dat je die onderdelen van elkaar los trekt en kijken of die onafhankelijk van elkaar werken.

  • Joen
  • Registratie: Juli 2003
  • Laatst online: 09-08 18:34
Op de manier van TS gaat het natuurlijk nooit lukken.
TS zal eerst het bestand door het script moeten uploaden naar de server en met bepaalde PHP-functies het tijdelijk door PHP aangemaakte bestand voor de upload moeten lezen om vervolgens in de variabele $attachmentcv te laden.
Een andere methode is het geüploade bestand wegschrijen naar de server, inhoud van het bestand inlezen naar $attachmentcv en dan het bestand verwijderen.
Pagina: 1