Avatar billede camsti Seniormester
22. september 2020 - 12:31 Der er 3 kommentarer og
1 løsning

Mailform sender ikke mail hvis den indeholder æøå

Jeg meget lidt om php og  lidt om webprogrammering generelt.
Alligevel har jeg under stor morskab lavet en hjemmeside som jeg faktisk synes fungerer ret godt.
Men min mailform driller.
Hvis navnet eller selve meddelelsen indeholder æøå kommer den simpelthen ikke frem. Der kommer ingen fejlmeddelelse eller noget, mailen dukker bare aldrig op i indboksen.
Kan nogen mon hjælpe?
Jeg kan kopiere koden herind, og jeg kan også give en behjælpelig person adgang til koden hvis det er nødvendigt.

På forhånd tak for hjælpen!
Avatar billede arne_v Ekspert
22. september 2020 - 15:44 #1
Encoder du ÆØÅ som Quoted Printable (eller Base64)?
Avatar billede camsti Seniormester
23. september 2020 - 13:42 #2
Aner det ikke ..  Jeg troede det blev defineret i UTF charset :)

Jeg håber det er OK ellers må du sige til så sletter jeg det igen.
Jeg har kopieret koden ind her - først html og dernæst php.

Jeg håber det giver mening ...

Følgende kode er indsat i kontakt.html:
<form action="feedback.php" method="post" id="tswfbform" accept-charset="UTF-8">
                        <label for="tswname">Name</label> <input type="text" name="fullname" style="max-width: 100%;" id="tswname" size="39" /><br />&nbsp;<br />
                        <label for="tswemail">Email</label> <input type="text" style="max-width: 100%;" id="tswemail" name="email" size="39" /><br />&nbsp;<br />
                        <label for="tswtel">Telephone</label> <input type="text" id="tswtel" style="max-width: 100%;" name="tel" size="39" /><br />&nbsp;<br />
                        <label for="tswcomments">Comments</label><br />&nbsp;<br />
                        <textarea rows="15" cols="45" name="comments" style="max-width: 100%;" id="tswcomments"></textarea>
                        <br />&nbsp;<br />
                        <input id="tswsubmit" type="submit" value="Send Feedback" />
                    </form>

Følgende kode er indsat i feedback.php

// ------------- CONFIGURABLE SECTION ------------------------

$mailto = 'per@tmpm.dk' ;
$subject = "Email Feedback Form" ;
$formurl = "http://tmpm.dk/feedback.html" ;
$thankyouurl = "http://www.tmpm.dk/thankyou.html" ;
$errorurl = "http://tmpm.dk/error.html" ;
$want_tel_field = 1;
$want_addr_field = 0;

$email_is_required = 1;
$name_is_required = 1;
$comments_is_required = 1;
$uself = 0;
$use_envsender = 0;
$use_sendmailfrom = 0;
$smtp_server_win = '' ;
$use_webmaster_email_for_from = 0;


// -------------------- END OF CONFIGURABLE SECTION ---------------

define( 'MAX_LINE_LENGTH', 998 );
define( 'CONTENT_TYPE', 'Content-Type: text/plain; charset="utf-8"' );

$linesep = $uself ? "\n" : "\r\n" ;
if ($use_sendmailfrom) {
    ini_set( 'sendmail_from', $mailto );
}
if (strlen($smtp_server_win)) {
    ini_set( 'SMTP', $smtp_server_win );
}
$envsender = "-f$mailto" ;
$fullname = trim($_POST['fullname']) ;
$email = trim($_POST['email']) ;
$comments = $uself ? preg_replace( '/\r\n/', "\n", $_POST['comments'] ) : $_POST['comments'] ;
$http_referrer = $_SERVER['HTTP_REFERER'];

if (!isset($_POST['email'])) {
    header( "Location: $formurl" );
    exit ;
}
if (($email_is_required && (empty($email) || (substr_count($email,'@') != 1))) || (strlen($email) > 254) || preg_match("/[\s<>,;'\"]/", $email) ||
    ($name_is_required && empty($fullname)) || (strlen($fullname) > 729) || preg_match("/[\r\n@<>,;\"]/", $fullname) ||
    ($comments_is_required && empty($comments))) {
    header( "Location: $errorurl" );
    exit ;
}

if (empty($email)) {
    $email = $mailto ;
}
$fromemail = $use_webmaster_email_for_from ? $mailto : $email ;
if (function_exists( 'get_magic_quotes_gpc' ) && get_magic_quotes_gpc()) {
    $comments = stripslashes( $comments );
}
$opt_flds = $want_addr_field ? "Address: " . $_POST['addr'] . $linesep : '' ;
$opt_flds .= $want_tel_field ? "Telephone: " . $_POST['tel'] . $linesep : '' ;
$messageproper =
    "This message was sent from:" . $linesep .
    $http_referrer . $linesep .
    "------------------------------------------------------------" . $linesep .
    "Name of sender: $fullname" . $linesep .
    "Email of sender: $email" . $linesep .
    $opt_flds .
    "------------------------- COMMENTS -------------------------" . $linesep . $linesep .
    $comments . $linesep . $linesep .
    "------------------------------------------------------------" . $linesep ;
$messageproper = wordwrap( $messageproper, MAX_LINE_LENGTH, $linesep, true ) ;

$headers =
    "From: \"$fullname\" <$fromemail>" . $linesep . "Reply-To: \"$fullname\" <$email>" . $linesep . "X-Mailer: chfeedback.php 3.0.0" .
    $linesep . 'MIME-Version: 1.0' . $linesep . CONTENT_TYPE ;

if ($use_envsender && !ini_get('safe_mode')) {
    mail($mailto, $subject, $messageproper, $headers, $envsender );
}
else {
    mail($mailto, $subject, $messageproper, $headers );
}
header( "Location: $thankyouurl" );
exit ;

?>
Avatar billede arne_v Ekspert
23. september 2020 - 15:07 #3
Der er en ingen encoding i den kode.

:-)
Avatar billede arne_v Ekspert
23. september 2020 - 15:08 #4
Hvis du sender en header:

"Content-Transfer-Encoding: quoted-printable"

og sender header og body med ÆØÅ gennem:

function header_encode($str) {
    return '=?ISO-8859-1?Q?' . qp_encode($str) . '?=';
}
function body_encode($str) {
    return qp_encode($str, true);
}

så kommer dine mail måske frem.
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