Zur Navigation

Anzeige Mailversand [2]

11 tobi

phpmyadmin zeigt in der Übersicht:
anmeldungen_2014_test MyISAM utf8_general_ci 7.8 KiB und beim Klicken direkt in die Tabelle in die Struktur dann latin1_german1_ci

07.07.2014 18:50

12 Jörg Kruse

Maßgeblich ist der Charset der Datenbankverbindung, welcher mit mysql_set_charset() gesetzt werden kann oder in SQL mit "SET NAMES"

Wenn du kein Charset gesetzt hast, erhältst du die Daten vermutlich in Latin1 aka ISO-8859-1

Du könntest es ja mal mit ISO-8859-1 probieren:

Content-Type: text/plain; charset=ISO-8859-1

Möglicherweise wird dann aber das Euro-Zeichen nicht korrekt angezeigt, da nicht in ISO-8859-1 enthalten. Das schaut irgendwie nach Euro-Zeichen aus:

Vorkasse: 9€

07.07.2014 18:59

13 tobi

Zitat von Jörg
Maßgeblich ist der Charset der Datenbankverbindung, welcher mit mysql_set_charset() gesetzt werden kann oder in SQL mit "SET NAMES"

Wenn du kein Charset gesetzt hast, erhältst du die Daten vermutlich in Latin1 aka ISO-8859-1

Du könntest es ja mal mit ISO-8859-1 probieren:

Content-Type: text/plain; charset=ISO-8859-1

Möglicherweise wird dann aber das Euro-Zeichen nicht korrekt angezeigt, da nicht in ISO-8859-1 enthalten. Das schaut irgendwie nach Euro-Zeichen aus:
Vorkasse: 9€
ISO-8859-1 bringt selbiges ergebnis.
Hier der Auszug aus der Config.
<?php
$link = mysql_connect(');
mysql_set_charset('utf8',$link);
if (!$link) {
    die('Verbindung nicht m�glich : ' . mysql_error());
}

// benutze Datenbank 
$db_selected = mysql_select_db('', $link);
if (!$db_selected) {
    die ('Kann Datenbank nicht benutzen : ' . mysql_error());
}

mysql_set_charset('utf8',$link); 
?>

07.07.2014 19:04

14 Jörg Kruse

mysql_set_charset('utf8',$link);

Das ist soweit auch in Ornung

Das Problem sind zum größten Teil wohl auch gar nicht die Daten aus der Datenbank:

Hier als Bestätigung und zur Überprüfung die angegebenen Daten:

Der Text steht hardcodiert in der PHP-Datei:

				$text.='Anmeldung bei uns eingegangen.
Hier als Bestätigung und zur Überprüfung die angegebenen Daten:';

Dann ist diese Datei wahrscheinlich nicht in UTF-8 codiert. Das solltest du ändern, d.h. beim Abspeichern UTF-8 als Codierung auswählen - wobei du uner Windows darauf achten musst, dass kein BOM eingebaut wird:

https://jkip.de/howtos/bom-byte-order-mark

Die Euro-Zeichen kommen aber wohl aus der Datenbank?

phpmyadmin zeigt in der Übersicht:
anmeldungen_2014_test MyISAM utf8_general_ci 7.8 KiB und beim Klicken direkt in die Tabelle in die Struktur dann latin1_german1_ci

In latin1_german1_ci kann kein Euro-Zeichen gespeichert werden.

07.07.2014 19:34 | geändert: 07.07.2014 19:35

15 tobi

Die Datei ist UTF8 ohne Bom kodiert. Das € Zeichen ist in der php Datei und nicht in der Datenbank.

07.07.2014 20:13

16 Jörg Kruse

Vielleicht gibt es ein Problem bei der Konvertierung der Mail in die Webanzeige von gmx.

Probier mal noch zusätzlich diesen Header:

Content-Transfer-Encoding: quoted-printable

Wie die übrigen muss er getrennt durch ein "\r\n" an den vorigen Header angehängt werden.

07.07.2014 20:37

17 tobi1 (Gast)

bringt leider auch nix.

08.07.2014 13:15

18 Jörg Kruse

Ja, ich vergaß, die betreffenden Textabschitte müssen ja auch noch entsprechend codiert werden :-\ Ab PHP 5.3 steht hierfür die Funktion quoted_printable_encode() zur Verfügung.

$text.=quoted_printable_encode('Anmeldung bei uns eingegangen.
Hier als Bestätigung und zur Überprüfung die angegebenen Daten:');

08.07.2014 14:19

19 tobi

wird noch schlimmer:

Hallo Max Mustermann15,=0A=09=09=09=0Asoeben (Tuesday; 08.07.2014 17:06:59)=

ist Ihre Anmeldung bei uns eingegangen.=0A=09=09=09=09=0AHier als Best=C3=A4tigung u=

nd zur =C3=9Cberpr=C3=BCfung die angegebenen Daten:

	      	$today=date('l; d.m.Y H:i:s');
			$to=$_POST['email'];
			$subject='Bestätigung der Anmeldung';
			if($altSignUp) $subject='Warteliste - Bestätigung der Daten';
			$text=quoted_printable_encode('Hallo '.$_POST['vorname'].' '.$_POST['nachname'].',
			
soeben ('.$today.') ist Ihre ');
			if(!$altSignUp)
				$text.=quoted_printable_encode('Anmeldung bei uns eingegangen.
				
Hier als Bestätigung und zur Überprüfung die angegebenen Daten:');
			else
				$text.=quoted_printable_encode('Anfrage zu einer Turnierteilnahme bei uns eingegangen.
Aktuell ist die Teilnehmergrenze in Ihrem gemeldeten Wettbewerb überschritten und wir können Ihre Anfrage aktuell noch nicht bestätigen. Erfahrungsgemäß sagen aber kurz vor Turnierbeginn noch der ein oder andere Spieler ab. In einem solchen Fall würden wir Sie dann umgehend kontaktieren.
Hier zur Überprüfung die angegebenen Daten:');

			$text.=quoted_printable_encode('
Angemeldete Turnierklasse samt Turniertag: '.$turnierklassestr.(intval($_POST['turnierklasse_ex'])?' (freiwillig eine Klasse höher)':'').'

Vorname: '.$_POST['vorname'].'
Nachname: '.$_POST['nachname'].'
Q-TTR 11.05.2014: '.$_POST['ttr'].'
Verein: '.$_POST['verein'].'
Startgebühr: '.$startgeld.'
Vorkasse: '.$vorkasse.'

Für eine schnellere Abwicklung beim Turnier gibt es die Möglichkeit per Vorkasse bis zum 11.09.2014 (Geldeingang) die Startgebühr zu überweisen.
Kontodaten:
Vereinsname
KTO: 
BLZ: 1
Bank
Betrag: '.$vorkasse.'
Verwendungszweck: PPC 2014, '.$_POST['nachname'].', '.$_POST['vorname'].', '.$turnierklasse.', '.$_POST['verein'].' 

Hinweis:
Die Teilnehmer des Turniers werden zeitnah auf der Homepage veröffentlicht. Zu den einzelnen Teilnehmerfeldern:
http://test.de/');
			if(!$altSignUp)
				$text.=quoted_printable_encode('
Falls eine Teilnahme - aus welchen Gründen auch immer - nicht erfolgen kann, bitte um Abmeldung via E-mail:test2014@test.de

Vielen Dank!
Mit freundlichen Grüßen
Test');
			else
				$text.=quoted_printable_encode('
				Vielen Dank!
Mit freundlichen Grüßen
Test');
			$header='From:Test <test2014@test.de>'."\r\n".'Reply-To: Test <test2014@test.de>'."\r\n";
			if(!empty($_POST['email_alt'])) $header .='Cc: '.$_POST['email_alt']."\r\n";
$header .= "Mime-Version: 1.0\r\n";
$header .= "Content-Type: text/plain; charset=utf-8\r\n";
$header .= "Content-Transfer-Encoding: quoted-printable\r\n";
if(mail($to,'=?UTF-8?B?'.base64_encode($subject).'?=',$text,$header))

08.07.2014 17:31 | geändert: 08.07.2014 17:31

20 Jörg Kruse

Dann weiß ich leider auch nicht weiter :-\

Such mal in einer Suchmaschine mit den Suchbegriffen "GMX UTF8" - da scheint es öfters Probleme mit zu geben. Ich kann das leider nicht reproduzieren, da ich seit einiger Zeit keinen GMX-Account mehr habe.

Hatten die anderen Leute auch diese Zeichenprobleme oder war die Darstellung der Mail verkehrt? Ich hatte es erst so verstanden, dass die Darstellung verkehrt ist. Wenn auch dort nur Zeichen falsch angezeigt werden, könntest du auch wieder HTML verwenden und dann die Textabschnitte (nicht die HTML-Tags) mit htmlentities() codieren.

08.07.2014 17:55 | geändert: 08.07.2014 17:56