SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

PHP 5.3 & MySQL 5.1

PHP 5.3 & MySQL 5.1 zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 11.10.2004, 08:52:35
Wolfgagn Uhr Wolfgagn Uhr ist offline
Anfänger
 
Registriert seit: Jan 2004
Beiträge: 34
Problem beim Mailen mit Sonderzeichen ...

Einen wunderschönen guten Tag

Inzwischen habe ich wieder einmal ein Problem und hier weiss ich zur Zeit noch nicht einmal, ob es richtig platziert ist. Es kann ein php-Problem sein, aber es kann auch ein Problem sein des Befehls/Programms mail().

Ich habe folgenden Code in der php-Datei

PHP-Code:
  $strMailtext  "Dies sind Sonderzeichen aus der php-Datei: äöü Äöü ßn";
$strMailtext .= "Dies sind Sonderzeichen aus dem Formular : $testnnnnn"
Wobei ich dann die Variable $test auch mit "äöü ÄÖÜ ß" belege.

Dabei gebe ich die deutschen Sonderzeichen in ein utf-8 Formular auf der Webseite ein.

In der dann abgesendeten Mail steht so etwas:

Dies sind Sonderzeichen aus der php-Datei: äöü Äöü ß
Dies sind Sonderzeichen aus dem Formular : äöü ÄÖÜ ß

Das bedeutet, dass ich zwei Konvertierungsprobleme vorliegen habe, einmal muss ich die Zeichen in der php wohl noch konvertieren und einmal auch die Zeichen, die vom Clienten zurückgemeldet werden.

Die Mail, die der Server generiert, die hat die Angaben

Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: BASE64

Wenn ich mir von einem anderen E-Mail-Clienten eine utf-8-Codierte E-Mail zusende (in dem Fall kommen die Sonderzeichen korrekt bei mir an), dann habe ich die Angaben:

Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable

Meine Frage lautet nun: Wie verstelle ich hier was am besten, damit es richtig läuft?

Dabei ist für mich als Randbedingung wichtig, dass die Mail tatsächlich in utf-8 vorliegt. Wenn jemand zum Beispiel eine russische Adresse eingibt, dann muss man die mit einfachen Kopieren in das Adressprogramm übertragen können.

Und er Weg, der in http://de3.php.net/mail beschrieben ist, der scheint mir auch etwas unnötig kompliziert. Die Aussage beginnt mit "If you don't want to install IMAP ..." und IMAP ist installiert. Es steht aber nirgendwo, was man in diesem Fall machen kann.

Vielen Dank für die Hilfe
Wolfgang
Mit Zitat antworten
  #2  
Alt 11.10.2004, 09:04:21
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
Zeige mal den ganzen Quelltext für den Versand der E-Mail.
Mit Zitat antworten
  #3  
Alt 11.10.2004, 10:16:25
Wolfgagn Uhr Wolfgagn Uhr ist offline
Anfänger
 
Registriert seit: Jan 2004
Beiträge: 34
Hallo xabbuh

Ich fürchte, dass dies etwas lang ist aber ...

PHP-Code:
function SendOrder($lieferland) {

  include 
'LangRes.php';   // Sprachressourcen lesen
  
include 'BookList.php';  // Buchdaten lesen 

  
$strEmpfaenger 'testadresse@devsup.de';
  
$strFrom       '"Bestellsystem" <info@grieser-verlag.com>';
  
$strSubject    'Bestellung';
  
$strReturnhtml 'http://www.grieser-verlag.com/';
  
$strDelimiter  ":t";

  
$eMail $_POST["eMail"];

  
$rch_0 $_POST["rch_0"];
  
$rch_1 $_POST["rch_1"];
  
$rch_2 $_POST["rch_2"];
  
$rch_3 $_POST["rch_3"];
  
$rch_4 $_POST["rch_4"];
  
$rch_5 $_POST["rch_5"];
  
  
$dlv_0 $_POST["dlv_0"];
  
$dlv_1 $_POST["dlv_1"];
  
$dlv_2 $_POST["dlv_2"];
  
$dlv_3 $_POST["dlv_3"];
  
$dlv_4 $_POST["dlv_4"];
  
$dlv_5 $_POST["dlv_5"];

  
$bemerkung $_POST["bemerkung"];

  
$prsSumme $_POST["prsSumme"];
  
$vsdKosten $_POST["vsdKosten"];

  
$strMailtext .= "Sehr geehter Herr/Frau $rch_1nn";
  
$strMailtext .= "Wir möchten uns sehr herzlich bedanken für Ihre "
                 
."Bestellung von:nn";


  
// Ausgabe der Buchliste mit aktueller Stückzahl ...

  
If ($lieferland!=="ch") {
    for (
$i=0$i<=$intAnzBooks$i++) {
      
$help $arrAbkz[$i];
      
$anzBooks $_POST[$help] + 0;
      if (
$anzBooks<>0) {
        
$produkt $anzBooks $arrPriceEur[$i];
        
$strMailtext .= "$anzBooks * $arrTitel[$i] zu € " 
                       
."$arrPriceEur[$i] = € $produktn";
        
$prsSumme $prsSumme $produkt;                
        
$gewichtSumme $gewichtSumme $anzBooks $arrWeight[$i];
      }  
    }
  }

  If (
$lieferland=="ch") {
    for (
$i=0$i<=$intAnzBooks$i++) {
      
$help $arrAbkz[$i];
      
$anzBooks $_POST[$help] + 0;
      if (
$anzBooks<>0) {
        
$produkt $anzBooks $arrPriceChf[$i];
        
$strMailtext .= "$anzBooks * $arrTitel[$i] zu CHF " 
                       
."$arrPriceChf[$i] = CHF $produktn";
      
$prsSumme $prsSumme $produkt;                
      
$gewichtSumme $gewichtSumme $anzBooks $arrWeight[$i];
      }  
    }
  }

  switch (
$lieferland) {
    case 
"de":
      
$vsdKosten 1.5;
      break;
    case 
"ch":
      
$vsdKosten 3;
      break;
    case 
"au":
      
$vsdKosten 2;
      break;
    case 
"world":
      
$vsdKosten 5;
      break;
    default:
      
$vsdKosten 10;
    }

  
$strMailtext .= "nZugüglich einer Versandkostenpauschale von: $vsdKostennn";

  
$prsSumme $prsSumme $vsdKosten;

  
$strMailtext .= "Dies ergibt einen Gesamtbetrag von: $prsSummenn";

  
$strMailtext .= "Die Lieferung hat ein Gewicht von: $gewichtSummenn";

  if (
AdressInserted("rch")) {
    
$strMailtext .= "Die Rechnungsadresse lautet:n";
    If (
$rch_0!=="") {
      
$strMailtext .= "Firma: $rch_0n";
    };  
    
$strMailtext .= "Name: $rch_1n";
    
$strMailtext .= "Strasse: $rch_2n";
    
$strMailtext .= "Postleitzahl: $rch_3n";
    
$strMailtext .= "Ort: $rch_4n";
    
$strMailtext .= "Telefon: $rch_5nn";
  }  

  if (
AdressInserted("dlv")) {
    
$strMailtext .= "Die Lieferadresse lautet:n";
    If (
$rch_0!=="") {
      
$strMailtext .= "Firma: $dlv_0n";
    };  
    
$strMailtext .= "Name: $dlv_1n";
    
$strMailtext .= "Strasse: $dlv_2n";
    
$strMailtext .= "Postleitzahl: $dlv_3n";
    
$strMailtext .= "Ort: $dlv_4n";
    
$strMailtext .= "Telefon: $dlv_5nn";
  } else {
    
$strMailtext .= "Es wurde keine von der Rechnungsadresse abweichende "
                   
."Lieferadresse angegeben!nn";
  }  

  
$strMailtext .= "Ihre E-Mail-Adresse lautet: $eMailn";
  if (
"$bemerkung"!=="") {
    
$strMailtext .= "---n";
    
$strMailtext .= "Sie haben weiterhin folgenden Anmerkungen gemachtnn";
    
$strMailtext .= "$bemerkung";
    
$strMailtext .= "---n";
  }  

  
$strMailtext .= "Wir bedanken uns für Ihren Auftragn";
  
$strMailtext .= "Mit freundlichem Grußn";
  
$strMailtext .= "Ihr Fachbuchverlagn";
  
$strMailtext .= "Dr. Hans Jürgen Griesern";

  if(
get_magic_quotes_gpc()) {
    
$strMailtext stripslashes($strMailtext);
  };

  
mail($strEmpfaenger$strSubject$strMailtext"From: ".$strFrom);

Gruß
Wolfgang
Mit Zitat antworten
  #4  
Alt 11.10.2004, 10:18:29
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
Vielleicht hilft es schon, wenn du im Header der Mail Content-Type, charset etc. definierst?
Mit Zitat antworten
  #5  
Alt 11.10.2004, 10:50:31
Wolfgagn Uhr Wolfgagn Uhr ist offline
Anfänger
 
Registriert seit: Jan 2004
Beiträge: 34
PHP-Code:
  mail($strEmpfaenger$strSubject$strMailtext"From: .$strFrom" 
        
."Content-Type: text/plain; charset="utf-8""); 
Das jedenfalls (nach den Angaben dort: http://de3.php.net/function.mail ) hilft nicht ...

Sorry ich meinte
PHP-Code:
mail($strEmpfaenger$strSubject$strMailtext"From: .$strFrom""Content-Type: text/plain; charset="utf-8""); 

Geändert von Wolfgagn Uhr (11.10.2004 um 10:52:32 Uhr)
Mit Zitat antworten
  #6  
Alt 11.10.2004, 11:35:04
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
Du weißt schon, dass die Header mit 'rn' getrennt werden?
Mit Zitat antworten
  #7  
Alt 11.10.2004, 11:45:05
Wolfgagn Uhr Wolfgagn Uhr ist offline
Anfänger
 
Registriert seit: Jan 2004
Beiträge: 34
Nein das wußte ich nicht. Aber selbst ein Test mit

PHP-Code:
  mail($strEmpfaenger$strSubject$strMailtext"From: $strFrom""Content-Type: text/plain; charset="utf-16"rn"); 
führt interessanterweise nicht zu einer utf-16-Mail sondern zu einer utf-8-Mail

Dabei habe ich natürlich probiert:

PHP-Code:
  mail($strEmpfaenger$strSubject$strMailtext"From: $strFrom""Content-Type: text/plain; charset="utf-8"rn"); 
Und das geht auch nicht.
Mit Zitat antworten
  #8  
Alt 11.10.2004, 12:12:28
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
Der From: ... Teil gehört auch schon zum Header:
PHP-Code:
mail($strEmpfaenger$strSubject$strMailtext"From: {$strFrom}rnContent-Type: text/plain; charset="utf-16""); 
Mit Zitat antworten
  #9  
Alt 11.10.2004, 12:37:07
Wolfgagn Uhr Wolfgagn Uhr ist offline
Anfänger
 
Registriert seit: Jan 2004
Beiträge: 34
Danke, so funktioniert die Parameterübergabe. Aber nun habe ich folgendes:

Ohne diesen Content-Type-Parameter habe ich in der Mail drin stehen:

Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: BASE64
Message-Id: ....
<ende>

Mit diesem habe ich drin stehen

Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: BASE64
Message-Id: ....
Content-Type: text/plain; charset=UTF-8
<ende>


Dabei signalisiert <ende> das Ende der Parameterliste. Durch das hinzufügen des "Content-Type" wird also der alte Content-Type an das Ende der Parameterliste geschoben und der neue Type dort eingetragen, wo der alte stand.

Die Zeichen in der Mail ändern sich aber nicht.

Interessant ist, dass ich den Content-Transfer-encoding-Parameter jetzt ändern kann (hier wird kein neuer angelegt. ...)

Geändert von Wolfgagn Uhr (11.10.2004 um 13:25:48 Uhr)
Mit Zitat antworten
  #10  
Alt 11.10.2004, 13:37:32
Wolfgagn Uhr Wolfgagn Uhr ist offline
Anfänger
 
Registriert seit: Jan 2004
Beiträge: 34
> Interessant ist, dass ich den Content-Transfer-encoding-Parameter jetzt ändern kann (hier wird kein neuer angelegt. ...

Nein das ist falsch. Es wird doch ein neuer Parameter angelegt.

Ich habe jetzt jeweils zwei Parameter von beiden.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:20:09 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt