Mail

Her kan du få hjælp og stille spørgsmål til PHP!
MadsHaupt
Entusiast
Entusiast
Indlæg: 48
Tilmeldt: 8. jan 2013, 14:00

Mail

Indlæg af MadsHaupt » 8. jan 2013, 14:17

Når jeg sender en mail i php bliver æ, ø og å i emnet til nole mærklige tegn
Hvordan undgår jeg det? :(

Brugeravatar
scootergrisen
Moderator
Moderator
Indlæg: 709
Tilmeldt: 21. jun 2012, 23:40
Kontakt:

Re: Mail

Indlæg af scootergrisen » 8. jan 2013, 15:25

Sørg for og send en header med den encoding du har teksten i.

Kode: Vælg alt

$headers .= "Content-type: text/plain; charset=utf-8\r\n";

mail($tilemail, $emne, $besked, $headers)

MadsHaupt
Entusiast
Entusiast
Indlæg: 48
Tilmeldt: 8. jan 2013, 14:00

Re: Mail

Indlæg af MadsHaupt » 8. jan 2013, 16:05

Det virker ikke! :( :( :( :(

Brugeravatar
scootergrisen
Moderator
Moderator
Indlæg: 709
Tilmeldt: 21. jun 2012, 23:40
Kontakt:

Re: Mail

Indlæg af scootergrisen » 8. jan 2013, 16:17

Hvad encoding er din tekst i ?
Og hvordan ser din kode ud ?

MadsHaupt
Entusiast
Entusiast
Indlæg: 48
Tilmeldt: 8. jan 2013, 14:00

Re: Mail

Indlæg af MadsHaupt » 8. jan 2013, 16:29

Min tegnindkodning er utf-8
og koden ser sådan ud:

<!DOCTYPE html>
<html>
<head lang="da">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../bodystyle.css" />
<script type="text/javascript" src="../MHIE/download/download.js"></script>
<script type="text/javascript" src="admin.js"></script>
<title>Conto oplysninger</title>
</head>
<body>
<div></div>
<?php
session_start();

mysql_connect("host", "brugernavn", "kodeord");
mysql_select_db("database");
$data = mysql_query("SELECT * FROM Users");

$username;
$password;
$passwordtocode;
$fornavn;
$efternavn;
$email;

$step = 5;

if (isset($_SESSION["logt"])) {
if (isset($_GET["username"]) && isset($_GET["admininfo"])) {
if ($_GET["username"] == $_SESSION["logt"]) {
while ($userinfo = mysql_fetch_array($data)) {
if ($userinfo["brugernavn"] == $_GET["username"]) {
$username = $userinfo["brugernavn"];
$password = $userinfo["password"];
$fornavn = $userinfo["fornavn"];
$efternavn = $userinfo["efternavn"];
$email = $userinfo["email"];
}
}
if ($_GET["admininfo"] == "admininfo") {
echo "Dit bugernavn: $username<br /><label>*****</label><a href=".'"?username='.$_GET["username"].'&admininfo=newpassword"'."><input type=".'"button"'." value=".'"Ændra dit password"'." /></a><br /><a href=".'"?username='.$_GET["username"].'&admininfo=newname"'."><input type=".'"button"'." value=".'"Skift navn"'." /></a><br />Dit fornavn: $fornavn<br />Dit efternavn: $efternavn<br />Din email: $email<a href=".'"?username='.$_GET["username"].'&admininfo=newemail"'."><input type=".'"button"'." value=".'"Ændra din email"'." /></a>";
}
else if ($_GET["admininfo"] == "newpassword") {
if (isset($_POST["nps"]) && isset($_SESSION["logt"])) {
$necode = rand(0, 1000000000000000);
mysql_query("INSERT INTO NewPassword(bc, np, bn) VALUES('".$necode."', '".$_POST["npassword"]."', '".$_SESSION["logt"]."')");
mail($email, "Bekkræftelse af bin nye email", "For at bekræfte skal du klikke her: http://madshaupt.dk/admin/?npcode=".$necode);
$header = "?username=$username&admininfo=admininfo";
$script = "document.location.href = '$header';";
echo '<center><label>Du har fået tilsendt en bekræftelse af dit nye password til <font color="yellowgreen">"'.$email.'"</font></label></center><script type="text/javascript">setInterval("'.$script.'", '.($step * 1000).');</script>';
}
else {
echo '<form method="post" action="" name="newpassword" onsubmit="return newpasswordtjek('."'$password'".');"><label for="gpassword">Dit gamle password</label><br /><input type="password" name="gpassword" id="gpassword" /><br /><label for="npassword">Nyt password</label><br /><input type="password" name="npassword" id="npassword" /><br /><label for="gnpassword">Gentag password</label><br /><input type="password" name="gnpassword" id="gnpassword" /><br /><input type="submit" value="OK" name="nps" /></form>';
}
}
else if ($_GET["admininfo"] == "newemail") {
if (isset($_POST["nemail"]) && isset($_SESSION["logt"])) {
$necode = rand(0, 1000000000000000);
mysql_query("INSERT INTO NewEmail(bc, ne, bn) VALUES('".$necode."', '".strtolower($_POST["nemail"])."', '".$_SESSION["logt"]."')");
mail($email, "Bekkræftelse af bin nye email", "For at bekræfte skal du klikke her: http://madshaupt.dk/admin/?necode=".$necode);
$header = "?username=$username&admininfo=admininfo";
$script = "document.location.href = '$header';";
echo '<center><label>Du har fået tilsendt en bekræftelse af din nye email "'.strtolower($_POST["nemail"]).'" til <font color="yellowgreen">"'.$email.'"</font></label></center><script type="text/javascript">setInterval("'.$script.'", '.($step * 1000).');</script>';
}
else {
echo '<form method="post" action="" name="newemail" onsubmit="return newemailtjek();"><label for="nemail">Ny email</label><br /><input type="text" name="nemail" id="nemail" /><br /><label for="gemail">Gentag email</label><br /><input type="text" name="gemail" id="gemail" /><br /><input type="submit" value="OK" name="nps" /></form>';
}
}
else if ($_GET["admininfo"] == "newname") {
if (isset($_POST["nname"]) && isset($_SESSION["logt"])) {
mysql_query("UPDATE Users SET fornavn = '".$_POST["nforname"]."' WHERE brugernavn = '$username'");
mysql_query("UPDATE Users SET efternavn = '".$_POST["neftername"]."' WHERE brugernavn = '$username'");
$header = "?username=$username&admininfo=admininfo";
$script = "document.location.href = '$header';";
echo '<center><label>Dit navn er blevet ænreret</label></center><script type="text/javascript">setInterval("'.$script.'", '.($step * 1000).');</script>';
}
else {
echo '<form method="post" action="" name="newname"><label for="nforname">Fornavn</label><br /><input type="text" name="nforname" id="nforname" value="'.$fornavn.'" /><br /><label for="neftername">Efternavn</label><br /><input type="text" name="neftername" id="neftername" value="'.$efternavn.'" /><br /><input type="submit" value="OK" name="nname" /></form>';
}
}
else {
$header = "?username=".$_GET["username"]."&admininfo=admininfo";
$script = "document.location.href = '$header';";
echo '<script type="text/javascript">'.$script.'</script>';
}
}
else {
$header = "?username=".$_SESSION["logt"]."&admininfo=".$_GET["admininfo"];
$script = "document.location.href = '$header';";
echo '<script type="text/javascript">'.$script.'</script>';
}
}
else if (isset($_GET["npcode"])) {
$npdata = mysql_query("SELECT * FROM NewPassword");
$np;
$bn;
while ($npdatainfo = mysql_fetch_array($npdata)) {
if ($npdatainfo["bc"] == $_GET["npcode"]) {
$np = $npdatainfo["np"];
$bn = $npdatainfo["bn"];
}
}
if ($np == "") {
echo "Dit password er alerrade blevet aktivert";
}
else {
mysql_query("UPDATE Users SET password = '$np' WHERE brugernavn = '$bn'");
mysql_query("DELETE FROM NewPassword WHERE bc = '".$_GET["npcode"]."'");
echo "Dit nye password er blevet aktivert";
}
}
else if(isset($_GET["necode"])) {
$npdata = mysql_query("SELECT * FROM NewEmail");
$ne = "";
$bn;
while ($npdatainfo = mysql_fetch_array($npdata)) {
if ($npdatainfo["bc"] == $_GET["necode"]) {
$ne = $npdatainfo["ne"];
$bn = $npdatainfo["bn"];
}
}
if ($ne == "") {
echo "Din email er alerrade blevet aktivert";
}
else {
mysql_query("UPDATE Users SET email = '$ne' WHERE brugernavn = '$bn'");
mysql_query("DELETE FROM NewEmail WHERE bc = '".$_GET["necode"]."'");
echo "Din nye email er blevet aktivert";
}
}
else {
$header = "?username=".$_SESSION["logt"]."&admininfo=admininfo";
$script = "document.location.href = '$header';";
echo '<script type="text/javascript">'.$script.'</script>';
}
}
else if (isset($_GET["npcode"])) {
$npdata = mysql_query("SELECT * FROM NewPassword");
$np;
$bn;
while ($npdatainfo = mysql_fetch_array($npdata)) {
if ($npdatainfo["bc"] == $_GET["npcode"]) {
$np = $npdatainfo["np"];
$bn = $npdatainfo["bn"];
}
}
if ($np == "") {
echo "Dit password er alerrade blevet aktivert";
}
else {
mysql_query("UPDATE Users SET password = '$np' WHERE brugernavn = '$bn'");
mysql_query("DELETE FROM NewPassword WHERE bc = '".$_GET["npcode"]."'");
echo "Dit nye password er blevet aktivert";
}
}
else if(isset($_GET["necode"])) {
$npdata = mysql_query("SELECT * FROM NewEmail");
$ne = "";
$bn;
while ($npdatainfo = mysql_fetch_array($npdata)) {
if ($npdatainfo["bc"] == $_GET["necode"]) {
$ne = $npdatainfo["ne"];
$bn = $npdatainfo["bn"];
}
}
if ($ne == "") {
echo "Din email er alerrade blevet aktivert";
}
else {
mysql_query("UPDATE Users SET email = '$ne' WHERE brugernavn = '$bn'");
mysql_query("DELETE FROM NewEmail WHERE bc = '".$_GET["necode"]."'");
echo "Din nye email er blevet aktivert";
}
}
else {
echo '<script type="text/javascript">logpå(document.location.href);</script>';
}
?>
</body>
</html>

;)
Senest rettet af MadsHaupt 17. mar 2015, 20:03, rettet i alt 2 gange.

Brugeravatar
scootergrisen
Moderator
Moderator
Indlæg: 709
Tilmeldt: 21. jun 2012, 23:40
Kontakt:

Re: Mail

Indlæg af scootergrisen » 8. jan 2013, 17:12

Du er kommet til at skrive dine login oplysninger.

Der står ikke charset i forbindelse med mail() funktionen i din kode.

Se her : http://netkoder.dk/netkoder/kode_email.php

Brugeravatar
Daniel
Admin
Admin
Indlæg: 625
Tilmeldt: 14. jun 2011, 09:27
Geografisk sted: Danmark, Fyn, Nørre Aaby
Kontakt:

Re: Mail

Indlæg af Daniel » 8. jan 2013, 21:42

Har lige tilladt mig at fjerne dine MySQL oplysninger fra tråden, ikke lige så smart at have stående på et offentligt forum. :)

MadsHaupt
Entusiast
Entusiast
Indlæg: 48
Tilmeldt: 8. jan 2013, 14:00

Re: Mail

Indlæg af MadsHaupt » 10. jan 2013, 17:10

Jeg har fundet ud af det

kode:

<?php

function encode_subject($subject,$charset) {
$return = "=?".$charset."?Q?".str_replace("=\r\n", "", preg_replace("/\?/", "=3F", imap_8bit($subject)))."?=";
return $return;
}

mail($email, encode_subject("æøå", "utf-8"), $message);

?>
Senest rettet af MadsHaupt 17. mar 2015, 20:09, rettet i alt 1 gang.

Brugeravatar
scootergrisen
Moderator
Moderator
Indlæg: 709
Tilmeldt: 21. jun 2012, 23:40
Kontakt:

Re: Mail

Indlæg af scootergrisen » 10. jan 2013, 18:18

Det var godt nok en dårlig måde og løse problemet på.

MadsHaupt
Entusiast
Entusiast
Indlæg: 48
Tilmeldt: 8. jan 2013, 14:00

Re: Mail

Indlæg af MadsHaupt » 10. jan 2013, 19:10

Hvordan skulle jeg ellers løse problemet?

Brugeravatar
scootergrisen
Moderator
Moderator
Indlæg: 709
Tilmeldt: 21. jun 2012, 23:40
Kontakt:

Re: Mail

Indlæg af scootergrisen » 10. jan 2013, 19:47

Sæt headeren til den encoding din tekst er i.

MadsHaupt
Entusiast
Entusiast
Indlæg: 48
Tilmeldt: 8. jan 2013, 14:00

Re: Mail

Indlæg af MadsHaupt » 10. jan 2013, 20:16

Det virker jo kun i indholdet af mailen

Brugeravatar
scootergrisen
Moderator
Moderator
Indlæg: 709
Tilmeldt: 21. jun 2012, 23:40
Kontakt:

Re: Mail

Indlæg af scootergrisen » 10. jan 2013, 23:10

Det gælder for hele emailen hvis du sætter headeren.

MadsHaupt
Entusiast
Entusiast
Indlæg: 48
Tilmeldt: 8. jan 2013, 14:00

Re: Mail

Indlæg af MadsHaupt » 11. jan 2013, 09:36

Hvis du sender koden til mig kan jeg se om det virker

Brugeravatar
scootergrisen
Moderator
Moderator
Indlæg: 709
Tilmeldt: 21. jun 2012, 23:40
Kontakt:

Re: Mail

Indlæg af scootergrisen » 11. jan 2013, 11:04

Hvad encoding er din tekst i som skal sendes med email ?

MadsHaupt
Entusiast
Entusiast
Indlæg: 48
Tilmeldt: 8. jan 2013, 14:00

Re: Mail

Indlæg af MadsHaupt » 11. jan 2013, 11:40

Tegnindkodningen er utf-8
Senest rettet af MadsHaupt 17. mar 2015, 20:08, rettet i alt 1 gang.

Brugeravatar
scootergrisen
Moderator
Moderator
Indlæg: 709
Tilmeldt: 21. jun 2012, 23:40
Kontakt:

Re: Mail

Indlæg af scootergrisen » 11. jan 2013, 11:56

Jeg ved ikke hvad du mener med Time encoding.

Men hvis din email er UTF-8 så sæt det i headeren med parameter 4 som jeg har skrevet tidligere.

Besvar