Avatar billede albert Juniormester
10. oktober 2016 - 20:33 Der er 14 kommentarer og
2 løsninger

PHP mail med danske tegn æ ø å

Hej.

Har et stykke kode hvor jeg gerne vil sende en mail med noget php

        $customerFirstname = $_POST['contactfirstname'];
        $customerSurname = $_POST['contactsurname'];
        $customerAddress = $_POST['contactaddress'];
        $customerZipcode = $_POST['contactzipcode'];
        $customerCity = $_POST['contactcity'];
        $customerPhone = $_POST['contactphone'];
        $customerEmail = $_POST['contactemail'];
        $customerMessage = $_POST['contactmessage'];
        $yourEmail = "kontakt@tordvin.dk";
        $header = "postmaster@tordvin.dk";
        $header .= "Content-Type: text/html; charset=iso-8859-1\r\n";

        $msg = " Fornavn: " .$customerFirstname. "\n Efternavn: " .$customersurname. "\n Adresse: " .$customerAddress. "\n Postnummer:" .$customerZipcode. "\n By: " .$customerCity. "\n Tlf.: ". $customerPhone. "\n Kundens e-mail: " .$customerEmail. "\n Besked: ". $customerMessage;
        $emne = "Forespørgsel fra - ". $customerFirstname."  ".$contactsurname;

    mail($yourEmail, $emne, $msg, $header);

?>

Virker men problemet er at den ikke fatter æ ø å. Jeg har manualt siddet og prøve at skrive ø i $emne vaiablen, men så skriver den baren oslash i mailen man modtager. Så jeg går ikke ud fra at man skal til at rode med noget replace funktion?? Tænker helt sikkert at det så er noget med ISO 8859-1 eller UTF-8? Må indrømme det er et godt stykke tid siden jeg har rodet med noget php, eller generelt med HTML . Eller er jeg slet ikke på den rette vej?

har prøvet at undersøge om det er lign posts, og fandt den her: http://stackoverflow.com/questions/17270376/php-how-to-include-special-characters-with-mail. Har jeg også prøvet at nørkle med men kan ummiddelbar ikke få det til at virke. På den anden side er det også en gammel post allerede. Tiden går bare alt for hurtig for mig xD

MVH Jonas Albertsen
Avatar billede jakobdo Ekspert
10. oktober 2016 - 20:44 #1
Det er måske overkill, men jeg ender altid med at bruge swiftmailer eller phpmailer, da de håndtere det ud af boksen.

Prøv at kig på dem.
Men ellers har du ret.
UTF8 er vejen frem.
Og det skal både angives i din email og du skal huske at gemme filen i utf8 format.
Avatar billede albert Juniormester
10. oktober 2016 - 20:50 #2
swiftmailer og phpmailer skriver du. Er det noget en bestemt server skal understøtte? eller er det bare en færdig programmeret mail function i PHP. Har nemlig webhotel ved one.com.. Ved ikke om det har noget at sige?
Avatar billede olsensweb.dk Ekspert
10. oktober 2016 - 20:55 #3
Avatar billede expnet Seniormester
10. oktober 2016 - 21:01 #5
Prøv den her line

    mail($yourEmail, utf8_encode($emne), utf8_encode($msg), $header);
Avatar billede albert Juniormester
10. oktober 2016 - 21:12 #6
Super tusind tak lige hvad jeg ledte efter! brugte den funktion du nævnte om fra php.net. Må undskylde hvis det er et normalt spørgsmål og ikke har kunne finde en anden lign post. Har bare ikke kunne for noget til at virke xD og sikke en jungle nogen gang. men tusind tak

Jonas Albertsen
Avatar billede albert Juniormester
10. oktober 2016 - 21:13 #7
ja okay expnet. Det viker jo ret simpel!
Avatar billede albert Juniormester
10. oktober 2016 - 21:15 #8
men må meddele at det ikke rigtig virker expnet :-S
Avatar billede olsensweb.dk Ekspert
10. oktober 2016 - 21:20 #9
Avatar billede albert Juniormester
10. oktober 2016 - 21:22 #10
ja okay. Men tusind tak for hjælpen!
Avatar billede albert Juniormester
11. oktober 2016 - 13:22 #11
Well har siddet i et godt stykke tid til at få det her funke.

min kode ser sådan ud:

    <?php
        $customerFirstname = $_POST['contactfirstname'];
        $customerSurname = $_POST['contactsurname'];
        $customerAddress = $_POST['contactaddress'];
        $customerZipcode = $_POST['contactzipcode'];
        $customerCity = $_POST['contactcity'];
        $customerPhone = $_POST['contactphone'];
        $from_email = $_POST['contactemail'];
        $customerMessage = $_POST['contactmessage'];
        $to = "youremail@testmeail.dk";

        $subject = "Forespørgsel fra - ". $customerFirstname."  ".$contactsurname;

        $message = " Fornavn: " .$customerFirstname. "\n Efternavn: " .$customersurname. "\n Adresse: " .$customerAddress. "\n Postnummer:" .$customerZipcode. "\n By: " .$customerCity. "\n Tlf.: ". $customerPhone. "\n Besked: ". $customerMessage;



        function mail_utf8($to, $from_user, $from_email, $subject, $message)
            {
                $from_user = "=?UTF-8?B?".base64_encode($from_user)."?=";
                $subject = "=?UTF-8?B?".base64_encode($subject)."?=";

                $headers = "From: $from_user <$from_email>\r\n".
                        "MIME-Version: 1.0" . "\r\n" .
                        "Content-type: text/html; charset=UTF-8" . "\r\n";

                return mail($to, $subject, $message, $headers);

            }
       
        mail_utf8($to, $subject, $message, $headers);
    ?>


længere nede på siden har jeg så den her som bekræfter om mailen bliver sendt eller ej:

                <?php
                if (mail_utf8($yourEmail, $subject, $message, $customerEmail)) { ?>
                    <p>Tak for din henvendelse, <i><?php echo $customerFirstname ." ". $customerSurname ?></i></p>
                    <p>Vi vil besvare din mail eller opkald hurtigst muligt.</p>
                    <p>MVH Tordbj&oslash;rn Albertsen</p>
                <?php
                }else {
                ?>
                    <p>Tak for din henvendelse, <i><?php echo $customerFirstname ." ". $customerSurname ?></i></p>
                    <p>Din e-mail kunne desværre ikke sendes grundet tekniske fejl. <br/> Pr&oslash;v venligst igen senere</p>
                    <p>MVH Tordbj&oslash;rn Albertsen</p>
                <?php
                }
                ?>


Kan ikke forstå hoved eller hale i hvad jeg gør forkert eller om det er min host som ikke er glad for mig. Må nok også indrømme at jeg kører rundt med de variabler som jeg sikkert gør forkert? nogen der kan hjælpe mig lidt ud?

har skiftet $to ud med en anden mail. :-)

Jonas Albertsen
Avatar billede olsensweb.dk Ekspert
11. oktober 2016 - 20:33 #12
et hurtigt kig
ref

function mail_utf8($to, $from_user, $from_email, $subject, $message) {
    $from_user = "=?UTF-8?B?" . base64_encode($from_user) . "?=";
    $subject = "=?UTF-8?B?" . base64_encode($subject) . "?=";

    $headers = "From: $from_user <$from_email>\r\n" .
            "MIME-Version: 1.0" . "\r\n" .
            "Content-type: text/html; charset=UTF-8" . "\r\n";

    return mail($to, $subject, $message, $headers);
}
mail_utf8($to, $subject, $message, $headers);       

denne linje:
mail_utf8($to, $subject, $message, $headers);
hvad er meningen med den ??, her passer parameterne ihvert fald ikke

hvilke fejl får du ??
slå error_reporting og display error til
Avatar billede olsensweb.dk Ekspert
11. oktober 2016 - 21:18 #13
her
if (mail_utf8($yourEmail, $subject, $message, $customerEmail)) { ?>
passer parameter heller ikke med din function
Avatar billede olsensweb.dk Ekspert
12. oktober 2016 - 13:05 #14
prøv denne (utested)

<?php
function mail_utf8($to, $from_user, $from_email, $subject, $message) {
    $from_user = "=?UTF-8?B?" . base64_encode($from_user) . "?=";
    $subject = "=?UTF-8?B?" . base64_encode($subject) . "?=";

    $headers = "From: $from_user <$from_email>\r\n" .
            "MIME-Version: 1.0" . "\r\n" .
            "Content-type: text/html; charset=UTF-8" . "\r\n";

    return mail($to, $subject, $message, $headers);
}

$customerFirstname = $_POST['contactfirstname'];
$customerSurname = $_POST['contactsurname'];
$customerAddress = $_POST['contactaddress'];
$customerZipcode = $_POST['contactzipcode'];
$customerCity = $_POST['contactcity'];
$customerPhone = $_POST['contactphone'];
$customerMessage = $_POST['contactmessage'];
$from_email = $_POST['contactemail'];       
$from_user = $customerFirstname . " " . $customersurname; // var ikke angivet
$to = "youremail@testmeail.dk";       
$subject = "Forespørgsel fra - " . $customerFirstname . "  " . $contactsurname;
$message = " Fornavn: " . $customerFirstname . "\n Efternavn: " . $customersurname . "\n Adresse: " . $customerAddress . "\n Postnummer:" . $customerZipcode . "\n By: " . $customerCity . "\n Tlf.: " . $customerPhone . "\n Besked: " . $customerMessage;
mail_utf8($to, $from_user, $from_email, $subject, $message); // burde virke
// mail_utf8($to, $subject, $message, $headers); // forkerte parameter
?>


bruger ikke selv functionen mail_utf8 fra php.net/mail, men derimod den function OleBole lavede her på E

parameterne til det kald længere ned på siden kan du selv lave, hvis denne virker
Avatar billede albert Juniormester
13. oktober 2016 - 13:07 #15
Tusind tak for jeres hjælp. Har virkelig gjort min dag til en go dag! I må self også have en go dag!

Jonas Albertsen
Avatar billede Jonathan Friis Worm Praktikant
04. maj 2022 - 10:42 #16
At tilføje :
$mail->Encoding = '8bit';
$mail->CharSet = 'utf-8';

Var løsningen for mig.
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