Bestandsbijlage met PHPMailer

Ik heb een HTML-formulier met de optie om een bestand te uploaden.
Ik wil dat bestand dan samen met de rest van de formuliergegevens als bijlage naar het e-mailadres sturen.
Ik gebruik PHP Mailer en ik krijg de formuliergegevens om te verzenden: zoals naam, telefoonnummer, enz.

Ik krijg de afbeelding niet meegestuurd. Ik heb de code gegeven die ik tot nu toe heb

<!DOCTYPE html>
<html>
<head>
<title>Form</title>
</head>
<body>
<form id='contactus' action='contact.php' enctype="multipart/form-data" method='post'>
<fieldset >
<legend>Contact us</legend>
<div class='container'>
    <label for='email' >Name*:</label><br/>
    <input type="text" id="name" name="name" required /><br>
    <label for='email' >Phone*:</label><br/>
    <input type="text" id="phone" name="phone" required /><br>
    <label for='email' >Email*:</label><br/>
    <input type='text' name='email' id='email' required/><br/>
    <label for='message' >Message:</label><br/>
    <textarea rows="10" cols="50" name='message' id='message'></textarea>
    <br>
    <!-- Name of input element determines name in $_FILES array -->
    Send this file: <input id="file" name="image" type="file" />
    <input type='submit' name='Submit' value='Submit' />
</div>
</fieldset>
</form>
    </body>
</html>

Antwoord 1, autoriteit 100%

Als je belt

move_uploaded_file($file_tmp,"uploads/".$file_name);

Dit maakt een bestand in de uploads/Gids met de naam van het bestand zoals het op de computer van de uploader is genoemd.

Dan gebruikte u voorbeeldcode om de bijlage aan Phpmailer toe te voegen, zodat u in feite niet-bestaande bestanden probeert bij te voegen.

Deze twee regels:

$mail->addAttachment('uploads/file.tar.gz');   // I took this from the phpmailer example on github but I'm not sure if I have it right.      
$mail->addAttachment('uploads/image.jpg', 'new.jpg');

moet worden gewijzigd in:

$mail->addAttachment("uploads/".$file_name);

Noteer ook, het is niet nodig om te bellen met move_uploaded_fileAls u de bijlage na het geüpload en gemaild niet wilt opslaan. Als dat het geval is, bel dan gewoon AddAttachmentmet $_FILES['image']['tmp_name']als het bestandsargument.

Ook, in uw HTML-formulier, hebt u

<input id="file" name="file" type="file" />

, maar raadpleeg de invoer als imagein de code. U moet de naam van die ingang van filenaar image.

Om de afbeelding alleen bij te voegen en niet op te slaan, laat het de move_uploaded_filecode uit en toevoegen:

$file_tmp  = $_FILES['image']['tmp_name'];
$file_name = $_FILES['image']['name'];
//...
$mail->AddAttachment($file_tmp, $file_name);

Antwoord 2

$mail->addAttachment("uploads/".$file_name);

Gebruik gewoon bovenstaande code voor de php-mailer verzendfunctie

Other episodes