Avatar billede TheYaXxE Juniormester
14. marts 2012 - 22:44 Der er 7 kommentarer og
1 løsning

Problem med php Formmail

Hej. Jeg har et lille problem med en formmail jeg har lavet.

Problemet er at den ikke gider skrive afsenders email adresse, når jeg får mailen.
Nogle gange kan den godt vises, men så står den på denne måde:
('email@adresse.dk') eller (.email@adresse.dk.).
Altså med '' og .. i hver side.

Det sjove er at den godt kan skrive email adressen inde i selve mailen, men ikke i headeren.

Min kode ser således ud:
http://pastie.org/private/z3zodqovth90coip23pv8a

Den ligger på linje 83.

Håber nogle kan hjælpe :)
Avatar billede olebole Juniormester
14. marts 2012 - 23:43 #1
<ole>

Du mangler en Content-Type meta i dit HEAD element i HTML-koden. Drfor er du nødt til alt det replace-halløj. Det er helt overflødigt, hvis du får styr på dit tegnsæt.´

Derudover bør du prøve dette e-mail-script:

<?php
function escapeAddr($addr) {
    $check = preg_match('/(.*)<(.*)>/', $addr, $a);
    if ($check) $addr = '=?UTF-8?B?'.base64_encode($a[1]).'?= <'.$a[2].'>';
    return $addr;
}
function mail_utf8($to, $subject='Intet emne', $message='', $from='', $cc='', $bcc='') {
    $from = escapeAddr($from);
    $header = 'From: '.$from.PHP_EOL
            . 'Return-Path: '.$from.PHP_EOL
            . 'Reply-To: '.$from.PHP_EOL
            . 'MIME-Version: 1.0'.PHP_EOL
            . 'Content-type: text/plain; charset=UTF-8'.PHP_EOL
            . 'X-Mailer: PHP/'.phpversion().PHP_EOL
            . 'Content-Transfer-Encoding: 8bit'.PHP_EOL;
    if ($cc!='') $header .= 'Cc: '.escapeAddr($cc).PHP_EOL;
    if ($bcc!='') $header .= 'Bcc: '.escapeAddr($bcc).PHP_EOL;
    $header .= PHP_EOL;
    return mail($to, '=?UTF-8?B?'.base64_encode($subject).'?=', $message, $header);
}

// Eksempel på brug:
mail_utf8('modtager@gmail.com', 'Besked til dig', 'Indhold af mail', 'fra@domain.dk');
?>

/mvh
</bole>
Avatar billede TheYaXxE Juniormester
15. marts 2012 - 10:09 #2
Men det kan da ikke gøre at afsenderens email adresse ikke gider vises.
Avatar billede olebole Juniormester
15. marts 2012 - 12:06 #3
Foreløbig lyder det mere som dig, der ikke gider ret meget. Hvis du gerne vil have hjælp fra folk, der har lavet i hundredevis af den slags løsninger, kunne det være, du skulle prøve, hvad du får foreslået  *o)
Avatar billede Slettet bruger
07. april 2012 - 20:06 #4
Hvad gør escapeAddr funktionen ?
- hvis jeg må være så fri..
Avatar billede olebole Juniormester
07. april 2012 - 22:37 #5
#4: Den base64 encoder en streng og prefix'er strengen med information om, at strengen er kodet i utf-8 og base64 kodet
Avatar billede Slettet bruger
07. april 2012 - 22:55 #6
For det tilfælde at navne-delen skulle indeholde ikke-ascii tegn ?
- Du "tvinger" modtagerens mail-client til at rendere mailen rigtigt, uanset dens default-encoding ?

Og det samme (for en sikkerheds skyld) med subject:
"=?UTF-8?B?"  .  base64_encode($subject)  .  "?="

Hvorfor så ikke med selve $message (eller har jeg misforstået) ?
Avatar billede olebole Juniormester
08. april 2012 - 16:41 #7
Det er kun adressefelt og subject, der giver de problemer.

Anyway, så ser det ikke ud til, at spørger gider forholde sig til sine egne spørgsmål - men så ved man jo det til næste gang  :o|
Avatar billede TheYaXxE Juniormester
19. april 2012 - 08:20 #8
Har fået det lavet nu. Det var det sted hvor siden var hostet (hostgator), der gjorde at afsenderens mail ikke kunne komme med.

Tak for svar ellers.
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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



IT-JOB