Mail met bijlage lukt niet
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
Gewijzigd op 03/12/2012 15:47:11 door Aad B
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
Gewijzigd op 03/12/2012 17:05:45 door Aad B
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
Als de bijlage uit de upload komt moet je de $_FILES-array gebruiken en niet $_POST.
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
Echo $tmp_file en $newfile eens. Kijk wat daar in staat.
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.