Avatar billede hyggelig75 Juniormester
12. august 2019 - 17:08 Der er 5 kommentarer

hjælp til mail php

hej bruge denne kode til at sende mail men den skriver kun navnet på den man sender til men ikke beskede og den vedhæftet fil
//Block 1
SQL data skjuldt

//Block 2
$from= 'email_address';

//Block 3
$subject= $_POST['subject'];
$body= $_POST['body'];
$fileToUpload= $_POST['fileToUpload'];
//Block 4
$dbc= mysqli_connect($host,$user,$password, $dbase)
or die("Unable to select database");

//Block 5
$query= "SELECT * FROM $table";
$result= mysqli_query ($dbc, $query)
or die ('Error querying database.');

//Block 6
while ($row = mysqli_fetch_array($result)) {
$navn= $row['navn'];

$email= $row['email'];

//Block 7
$msg= "hej $navn ,\n$body";
mail($email, $subject, $msg, 'From:' . $from);
echo 'Email sent to: ' . $email. '<br>';
}

//Block 8
mysqli_close($dbc);
?>
Avatar billede hyggelig75 Juniormester
12. august 2019 - 17:39 #1
her er min html
<form action="sendmail.php" method="post">
<label>Beskrivelse:</label><br>
<input type="text" name="subject" id="subject"/><br>
<label>Text:</label><br>
<textarea name="body" id="body" rows="10" cols="35"></textarea><br>
<label>Fil:</label>
<input type="file" name="fileToUpload" id="fileToUpload"><br>
<input type="submit" name=submit value="Submit"/>
</form>
Avatar billede Slater Ekspert
12. august 2019 - 18:57 #2
Hvor forsøger du at vedhæfte en fil? Du sætter en variabel der hedder $fileToUpload, men du gør intet med den i det viste kode.

Men det er notorisk besværligt at lave vedhæftninger i mail()-funktionen. Jeg vil langt anbefale dig at gå over til SwiftMailer eller PHPMailer, som gør det meget bedre.
Avatar billede hyggelig75 Juniormester
12. august 2019 - 19:09 #3
slater har du en script til dette eller et link jeg kan finde det på ??
kan godt få den til at sende mail med tekst men den vedhæftet fil vil den ikke vise nemmelig
Avatar billede Slater Ekspert
12. august 2019 - 19:26 #4
Det er klart den ikke vedhæfter, hvis du ikke gør noget for at vedhæfte det ;)

Men ja, hvis du tager f.eks. PHPMailer, som er den der er nemmest at forstå at benytte, så er der et glimrende eksempel her: https://github.com/PHPMailer/PHPMailer#a-simple-example - hvor du kan se hvordan man sætter koden op og vedhæfter filer.

Så skal du bare downloade PHPMailer-filerne (hvis du ikke bruger Composer, gør du det ved at klikke på den grønne "clone or download" knap nær toppen, og vælge "download zip") og pakke src-mappen ud i dit projekt og linke til filerne med require/include.
Avatar billede hyggelig75 Juniormester
12. august 2019 - 20:18 #5
har fundet dette her og det virker men hvordan får jeg den til at tage alle email i min sql
<?php
if (isset($_FILES) && (bool) $_FILES) {

    $allowedExtensions = array("pdf", "doc", "docx", "gif", "jpeg", "jpg", "png");

    $files = array();
    foreach ($_FILES as $name => $file) {
        $file_name = $file['name'];
        $temp_name = $file['tmp_name'];
        $file_type = $file['type'];
        $path_parts = pathinfo($file_name);
        $ext = $path_parts['extension'];
        if (!in_array($ext, $allowedExtensions)) {
            die("File $file_name has the extensions $ext which is not allowed");
        }
        array_push($files, $file);
    }

    // email fields: to, from, subject, and so on

    $to = $_POST['email'];
    $from = "bladnyt@dhl-hund.dk";
    $subject = $_POST['sub'];
    $message = $_POST['msg'];
    $headers = "From: $from";

    // boundary
    $semi_rand = md5(time());
    $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

    // headers for attachment
    $headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\"";

    // multipart boundary
    $message = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type: text/plain; charset=\"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n";
    $message .= "--{$mime_boundary}\n";

    // preparing attachments
    for ($x = 0; $x < count($files); $x++) {
        $file = fopen($files[$x]['tmp_name'], "rb");
        $data = fread($file, filesize($files[$x]['tmp_name']));
        fclose($file);
        $data = chunk_split(base64_encode($data));
        $name = $files[$x]['name'];
        $message .= "Content-Type: {\"application/octet-stream\"};\n" . " name=\"$name\"\n" .
                "Content-Disposition: attachment;\n" . " filename=\"$name\"\n" .
                "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n";
        $message .= "--{$mime_boundary}\n";
    }
    // send

    $ok = mail($to, $subject, $message, $headers);
    if ($ok) {
        echo "<p>mail sent to $to!</p>";
    } else {
        echo "<p>mail could not be sent!</p>";
    }
}
?>

<html>
    <body>
    <center>

        <h2>Send Email</h2>
        <form method="post" action="" enctype="multipart/form-data">
            <input type="text" name="email" placeholder="email"><br>
            <input type="text" name="sub" placeholder="Subject"><br>
            <textarea name="msg" placeholder="Write email message"></textarea><br>

            Attach file:<br>
            <input type="file" name="attach1"/><br><br>
            <input type="submit" value="Send Mail"/>
        </form>
        </center>
    </body>
</html>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester