Mail met bijlage lukt niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Robert Fernan

Robert Fernan

03/12/2012 15:43:10
Quote Anchor link
Beste phpers/ programmeurs,

Ik ben een stagair en ik ben al enige tijd bezig met mijn stageopdracht, ik zit momenteel vast met mijn formulier.

Het formulier word verzonden via de mail, maar er word geen bijlage aan toegevoegd. Ik krijg alleen de naam het bestand te zien, in het bericht, waar ik dit stukje heb staan <td>".$_POST['foto1']."</td>. Wil dit zeggen dat mijn file input alleen de naam kopieert?

Mijn stukje script voor de bijlage ziet er als volgt uit:

<form method='post' enctype="multipart/form-data">
<input type="file" name="foto1" />
</form>

if($_FILES["foto1"]["name"] != "")
{
$strFilesName = $_FILES["foto1"]["name"];
$strContent = chunk_split(base64_encode(file_get_contents($_FILES["foto1"]["tmp_name"])));
$strHeader .= "--".$strSid."\n";
$strHeader .= "Content-Type: application/octet-stream; name=\"".$strFilesName."\"\n";
$strHeader .= "Content-Transfer-Encoding: base64\n";
$strHeader .= "Content-Disposition: attachment; filename=\"".$strFilesName."\"\n\n";
$strHeader .= $strContent."\n\n";
}

De mail verstuur ik als volgt:

if(mail($naar, $_POST['werkzaamheden'],$bericht,$headers, $strHeader)) // Als de mail naar de maker is verstuurd
{
echo 'Uw bericht is succesvol verstuurd!<br />';
}

Ik zit hier al héél lang op, ik heb phpmailer geprobeerd, maar AddAttachment krijgt geen acces tot file, zo heb ik ook MAILMIME en Swift geprobeerd, maar dan krijg ik altijd de melding dat er geen acces tot de file moglijk is. Zou iemand mij hiermee willen helpen, want ik weet het even niet meer.

Many Thanks!

Groetjes,

Robert
 
PHP hulp

PHP hulp

27/12/2024 14:02:49
 
Aad B

Aad B

03/12/2012 15:45:36
Quote Anchor link
Dat gaat nooit werken zo, ik adviseer je, met name vanwege de attachements, om phpmailer toe te passen. Hier boven neem je dus wel de filename op in de header maar je verwerkt de file zelf niet. De file moet in stukjes geknipt (while lus) en verwerkt maar dat kan phpmailer voor je doen.
Gewijzigd op 03/12/2012 15:47:11 door Aad B
 
Robert Fernan

Robert Fernan

03/12/2012 15:49:26
Quote Anchor link
Ja Aad ik denk dat je inderdaad gelijk hebt. Ik zal weer even phpmailer uploaden en implementeren. Daarna zal ik weer even laten zien hoe ik het gebruik, hopelijk kan je zien waar mijn fout(en) zit(ten). Bedankt voor de snelle reactie.

Grtz,

Robert

Toevoeging op 03/12/2012 16:18:08:

Ok, nu heb ik precies hetzelfde formulier, alleen ik heb PHPMAILER geupload en roep het in mijn code als volgt op:

require_once 'wp-content/themes/Kornuyt_Website/PHPMailer/class.phpmailer.php';
$mail = new PHPMailer(true);
$mail->AddAddress('[email protected]', 'John Doe');
$mail->AddAttachment($_POST['foto1']); // attachment
$mail->Send();


Deze heb ik uit de emaples map van PHPMAILER, namelijk de test_mail_advanced. Dit is puur de stuk van de attachments. Maar dan krijg ik de volgende meldingen:

Fatal error: Uncaught exception 'phpmailerException' with message 'Could not access file: Kornuyt_linkedin.png' in D:\www\c-kornuyt-bv.nl\www\wp-content\themes\Kornuyt_Website\PHPMailer\class.phpmailer.php:1347 Stack trace: #0 D:\www\c-kornuyt-bv.nl\www\wp-content\themes\Kornuyt_Website\offerte.php(257): PHPMailer->AddAttachment('Kornuyt_linkedi...') #1 D:\www\c-kornuyt-bv.nl\www\wp-content\themes\Kornuyt_Website\Offerte_Aanvraag.php(6): include('D:\www\c-kornuy...') #2 D:\www\c-kornuyt-bv.nl\www\wp-includes\template-loader.php(43): include('D:\www\c-kornuy...') #3 D:\www\c-kornuyt-bv.nl\www\wp-blog-header.php(16): require_once('D:\www\c-kornuy...') #4 D:\www\c-kornuyt-bv.nl\www\index.php(17): require('D:\www\c-kornuy...') #5 {main} thrown in D:\www\c-kornuyt-bv.nl\www\wp-content\themes\Kornuyt_Website\PHPMailer\class.phpmailer.php on line 1347

Dit zegt me allemaal niet zoveel, behalve de stuk van could not access file.

Ik hoop dat iemand mij hiermee kan helpen.

Groetjes,

Robert
Gewijzigd op 03/12/2012 15:50:39 door Robert Fernan
 
Aad B

Aad B

03/12/2012 17:04:31
Quote Anchor link
een groot deel hoort bij de 1e melding, Could not access file: Kornuyt_linkedin.png los dat eerst op en kijk welke meldingen volgen of overblijven. Wat gebruik je al server (WAMP XAMP oid?) die zijn vast niet in staat om de mail daadwerkelijk te verzenden. Zorg ook dat de includes goed lukken, die files worden dus ook niet gevonden.
Gewijzigd op 03/12/2012 17:05:45 door Aad B
 
Robert Fernan

Robert Fernan

04/12/2012 07:58:37
Quote Anchor link
Aad B op 03/12/2012 17:04:31:
een groot deel hoort bij de 1e melding, Could not access file: Kornuyt_linkedin.png los dat eerst op en kijk welke meldingen volgen of overblijven. Wat gebruik je al server (WAMP XAMP oid?) die zijn vast niet in staat om de mail daadwerkelijk te verzenden. Zorg ook dat de includes goed lukken, die files worden dus ook niet gevonden.


Nee ik zit niet op local, de website is online. Ja idd, ik ga er direct op duiken, nieuwe ronde, nieuwe kansen hè... ;)
Gewijzigd op 04/12/2012 07:59:16 door Robert Fernan
 
Elwin - Fratsloos

Elwin - Fratsloos

04/12/2012 09:33:08
Quote Anchor link
Als de bijlage uit de upload komt moet je de $_FILES-array gebruiken en niet $_POST.
 
Robert Fernan

Robert Fernan

04/12/2012 10:02:43
Quote Anchor link
Okey, ga ik meteen proberen, bedankt!

Toevoeging op 04/12/2012 13:41:15:

Okey, ik ben het even anders aan het proberen. Ik heb nu attach_mailer geupload en probeer het hiermee aan de praat te krijgen, want phpmailer blijft zeggen, cannot access file. Dus nu roep ik de functies van attach_mailer op:
require($_SERVER['DOCUMENT_ROOT']."/wp-content/themes/Kornuyt_Website/attach_mailer_class.php");
include ($_SERVER['DOCUMENT_ROOT']."/wp-content/themes/Kornuyt_Website/upload_class.php");

En vervolgens op een if(isset($_POST['verzend']))
{
$my_mail = new attach_mailer($name = $_POST['naam'], $from = $_POST['email'], $to ='[email protected]', $cc = "", $bcc = "", $subject = $_POST['werkzaamheden']);
$my_mail->text_body = $_POST['bericht'];
// upload part
$my_upload->the_temp_file = $_FILES['foto1']['tmp_name'];
$my_upload->the_file = $_FILES['foto1']['name'];
$my_upload->http_error = $_FILES['foto1']['error'];
if ($my_upload->upload()) {
$full_path = $my_upload->upload_dir.$my_upload->file_copy;
$my_mail->add_attach_file($full_path);
$my_mail->process_mail();
$my_upload->del_temp_file($full_path); // the file is not needed anymore
}
$msg .= $my_upload->show_error_string();
$msg .= $my_mail->get_msg_str();
}

Maar ik krijg de medling:
Warning: move_uploaded_file(d:\\www\\c-kornuyt-bv.nl\\www/wp-content/themes/Kornuyt_Website/mail/1354623714.png): failed to open stream: Permission denied in D:\www\c-kornuyt-bv.nl\www\wp-content\themes\Kornuyt_Website\upload_class.php on line 157 Warning: move_uploaded_file(): Unable to move 'C:\WINDOWS\Temp\php68EC.tmp' to 'd:\\www\\c-kornuyt-bv.nl\\www/wp-content/themes/Kornuyt_Website/mail/1354623714.png' in D:\www\c-kornuyt-bv.nl\www\wp-content\themes\Kornuyt_Website\upload_class.php on line 157

Nu heb ik lijn 157 opgezocht in de upload_class.php en daar staat:
if (move_uploaded_file($tmp_file, $newfile)) {
umask(0);
chmod($newfile , $this->fileperm);
return true;
} else {
return false;
}

Betekent dit dat mijn bestand waar de temp files geplaatst worden niet de juiste bestandsrechten heeft of zie ik dat verkeerd.
Ik probeer steeds CHMOD 777 toe te passen in Filezilla, maar dat neemt hij niet over.
Doe ik iets verkeerd? !PLEH
 
- SanThe -

- SanThe -

04/12/2012 13:52:43
Quote Anchor link
Echo $tmp_file en $newfile eens. Kijk wat daar in staat.
 
Robert Fernan

Robert Fernan

04/12/2012 13:53:27
Quote Anchor link
ga ik doen, één momentje...

Toevoeging op 04/12/2012 14:09:22:

Okey... echo $tmp_file en $newfile zijn blanco, maar ik heb ze pas nadat het verstuurd word gezet, dus ik denk dat ze dan al leeg zijn.

Maar het werkt!.... met bijlage!!!

WOW, hier zit ik al dagen aan, na mijn voorlaatste post over rechten ben ik mijn host gaan bellen om te kijken hoe het zit met bestandsrechten. Het lukte niet om CHMOD te doen via Filezilla, dat moest online via de persoonlijke pagina. Nou weet ik nog steeds niet waarom Phpmailer niet werkte, die had geen temp bestand nodig :S.

Bedankt allemaal voor jullie reacties en tijd.
 



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.