Formulargenerator

Alles rund um Module und Plugins in CONTENIDO 4.9.
McHubi
Beiträge: 1209
Registriert: Do 18. Nov 2004, 23:06
Wohnort: Mettmann
Kontaktdaten:

Re: Formulargenerator

Beitrag von McHubi » Do 19. Feb 2015, 18:29

Ja, Du bräuchtest die Eingabe im Formularfeld nur an das Array $recipients_in_array im Abschnitt "sending mail" anhängen. Das würde ich aber über die Konfiguration als optional "zuschaltbar" einbinden, damit das Modul mehrfach verwendbar bleibt. Wichtig: Der Variablenname zum Anhängen an das Array der Empfänger im Output muss mit dem in der Konfiguration übereinstimmen.
seamless-design.de
"Geht nicht!" wohnt in der "Will nicht!"-Strasse.

Das Handbuch zur Version 4.10: CONTENIDO für Einsteiger (4.10)

Das Handbuch zur Version 4.9: CONTENIDO für Einsteiger (4.9)

Freddy
Beiträge: 252
Registriert: Fr 6. Mai 2005, 21:01
Wohnort: Gummersbach
Kontaktdaten:

Re: Formulargenerator

Beitrag von Freddy » Fr 4. Dez 2015, 12:26

Habe das gleiche Problem und komme nicht weiter. Gibt es mittlerweile schon eine Lösung??
egon2358 hat geschrieben: "keine Verbindung zum Mailserver - bitte nochmal versuchen
keine Verbindung zum Mailserver - bitte nochmal versuchen

Vielen Dank für Ihre Nachricht. Folgende Informationen wurden übermittelt."


Ich würde ja sagen es hängt an phpmailer jedoch bekomme ich das nicht zusammen.. wo genau kann ich das umstellen? :

# ggf. Umstellung von mail() auf smtp im Bereich ***** sending mail and displaying mailed data begin ***** der Modul-Ausgabe

Ich weiß momentan nicht weiter.

McHubi
Beiträge: 1209
Registriert: Do 18. Nov 2004, 23:06
Wohnort: Mettmann
Kontaktdaten:

Re: Formulargenerator

Beitrag von McHubi » Fr 4. Dez 2015, 19:53

Hast Du mal andere Kontaktformulare ausprobiert? Klappen die?
Artikelkonfiguration korrekt?
Bei Egon lags am Hosting und den entsprechenden Servereinstellungen -> Post vom 20.10.2014, Nachtrag
seamless-design.de
"Geht nicht!" wohnt in der "Will nicht!"-Strasse.

Das Handbuch zur Version 4.10: CONTENIDO für Einsteiger (4.10)

Das Handbuch zur Version 4.9: CONTENIDO für Einsteiger (4.9)

Freddy
Beiträge: 252
Registriert: Fr 6. Mai 2005, 21:01
Wohnort: Gummersbach
Kontaktdaten:

Re: Formulargenerator

Beitrag von Freddy » Mi 2. Mär 2016, 08:24

Meine Serverleute sagen mir folgendes:
Das Formularscript versucht jedenfalls erst gar nicht, die Mail über
PHP mail(), also direkt vom Webserver aus zu versenden.
Versuchen Sie ggf. einmal, die Konfiguration des Scripts bzw. Moduls
auf SMTP umzustellen.
Habe jetzt Contenido 4.9.9 installiert und versuche das Kontaktformular erneut zum laufen zu bekommen. Kann mir jemand weiterhelfen wie ich das Modul auf SMTP umstelle?

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Formulargenerator

Beitrag von Oldperl » Mi 2. Mär 2016, 11:46

Hallo Freddy,
Freddy hat geschrieben:Kann mir jemand weiterhelfen wie ich das Modul auf SMTP umstelle?
Dieses Modul kann (so wie es programmiert ist) momentan ausschliesslich per PHP-Mail-Funktion senden

Code: Alles auswählen

if (@mail($recipient,$mail_subject,"",$mail_header)) $sent = true;
      else echo "<br/>keine Verbindung zum Mailserver - bitte nochmal versuchen";
    } 
Warum dieses bei deinem Hoster nicht geschieht müsste man an den entsprechenden Logs sehen können. Du kannst aber auch mal das @ vor dem mail-Befehl entfernen, dieses unterdrückt ja die Fehlerausgabe. Eventuell gibt es dann eine entsprechende Meldung.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

Freddy
Beiträge: 252
Registriert: Fr 6. Mai 2005, 21:01
Wohnort: Gummersbach
Kontaktdaten:

Re: Formulargenerator

Beitrag von Freddy » Mi 2. Mär 2016, 12:15

Habe es jetzt mal ohne @ versucht aber es kommt wieder nur die Fehlermeldung: keine Verbindung zum Mailserver - bitte nochmal versuchen.
Im Errorlog steht folgendes:
[02-Mar-2016 12:08:50 Europe/Berlin] PHP Warning: mail(): Multiple or malformed newlines found in additional_header in /home/www/.../contenido/includes/frontend/include.front_content.php(750) : eval()'d code on line 302
Den Pfad habe ich mit ... gekürzt. Mit dem Errorlog kann ich aber nicht wirklich was anfangen.

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Formulargenerator

Beitrag von Oldperl » Mi 2. Mär 2016, 12:37

Hi,

deine "Serverleute" sind nicht zufällig von 1und1? Wie auch immer.
Tante G. hätte da recht schnell geholfen :arrow: https://www.google.de/search?client=ubu ... 8&oe=utf-8
Da hab ich dann gleich diesen Beitrag gefunden :arrow: http://giveback.danielmenzel.de/?p=121

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

McHubi
Beiträge: 1209
Registriert: Do 18. Nov 2004, 23:06
Wohnort: Mettmann
Kontaktdaten:

Re: Formulargenerator

Beitrag von McHubi » Mi 2. Mär 2016, 14:00

EDIT: ANPASSUNG NICHT MEHR MIT AKTUELLER VERSION KOMPATIBEL!

Hallo Freddy,

ich habe mal Anpassungen vorgenommen. Zwar auf die Schnelle, aber es läuft. Für einen "runden" Neuaufbau des Bereichs /*########## sending mail and displaying mailed data begin ##########*/ fehlt mir momentan die Zeit. Die Ergänzungen betreffen ausschließlich den Output des Moduls:

1. Ergänze am Anfang des Outputs die Variable $method, die if-Abfrage und passe die Werte entsprechend an:

Code: Alles auswählen

<?php

/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   :     form_generator_sd
* Author(s)   :     Seamless-Design Markus Hübner
* Copyright   :     Markus Hübner
* Created     :     08/2014
* modified    :     03/2016: added smtp-support
************************************************/

$method="smtp"; // smtp or empty

if($method=="smtp")
  {
  $host = 'xxx.xxx.xxx.xxx';
  $username = 'xxx';
  $password = 'xxx';
  $mail_header_smtp_from = "adresse@domain.de";
  require_once "mail.php";
  require_once "Mail/mime.php";
  }

2. Ersetze ziemlich am Ende des Outputs

Code: Alles auswählen

      // Ende:
      $mail_header .= "\n--".$boundary."--";
     }    
    }
  foreach($recipients_in_array as $recipient)
    {
    if (@mail($recipient,$mail_subject,"",$mail_header)) $sent = true;
      else echo "<br/>keine Verbindung zum Mailserver - bitte nochmal versuchen";
    }
/********** sending mail end **********/
durch

Code: Alles auswählen

      // Ende:
      $mail_header .= "\n--".$boundary."--";
      
      if($method=="smtp") // different header is used, so attachment has to be placed within $mail_body
        {
        $mail_body = "--".$boundary."\nContent-Type: text/html; charset=iso-8859-1\r\n\n\n".$mail_body;
        $mail_body .= "\n--".$boundary;
        $mail_body .= "\nContent-Type: ".$_FILES['attachment']['type']."; name=\"".utf8_decode($_FILES['attachment']['name'])."\"";
        $mail_body .= "\nContent-Transfer-Encoding: base64";
        $mail_body .= "\nContent-Disposition: attachment; filename=\"".utf8_decode($_FILES['attachment']['name'])."\"";
        $mail_body .= "\n\n".$file_content;
        $attachment="true";
        }
     }    
    }
  foreach($recipients_in_array as $recipient)
    {
    if($method=="smtp")
      {
      $smtp = Mail::factory('smtp', array('host'=>$host, 'auth'=>true, 'username'=>$username, 'password'=>$password));  
        $headers = array(
        'From' => $mail_header_smtp_from,
        'Subject' => $mail_subject
        );
      if($attachment=="true")
        {
        $headers['Content-Type']="multipart/mixed; boundary=\"".$boundary."\"\n";
         }
         else
           {
           $headers['Content-Type']="text/html; charset=iso-8859-1\r\n";   
           }
      $mail = $smtp -> send($recipient, $headers,$mail_body);
      if(PEAR::isError($mail)) echo $mail->getMessage();
        else echo ''; 
      }
      else
        {
        if (@mail($recipient,$mail_subject,"",$mail_header)) $sent = true;
          else echo "<br/>keine Verbindung zum Mailserver - bitte nochmal versuchen";
        }
    }
/********** sending mail end **********/
Wichtig: Normalerweise passe ich im Eröffnungspost bei Korrekturen und Ergänzungen die Quelltexte an. Da diese Ergänzung zwar funktioniert aber "quick'n'dirty" ist, ist sie NICHT im Anfangsposting enthalten.

VG,

Markus
Zuletzt geändert von McHubi am So 2. Apr 2017, 21:10, insgesamt 1-mal geändert.
seamless-design.de
"Geht nicht!" wohnt in der "Will nicht!"-Strasse.

Das Handbuch zur Version 4.10: CONTENIDO für Einsteiger (4.10)

Das Handbuch zur Version 4.9: CONTENIDO für Einsteiger (4.9)

Freddy
Beiträge: 252
Registriert: Fr 6. Mai 2005, 21:01
Wohnort: Gummersbach
Kontaktdaten:

Re: Formulargenerator

Beitrag von Freddy » Mi 2. Mär 2016, 15:03

Vielen Dank für Eure Mühe. Der Vorschlag von McHubi läuft leider nicht bei mir aber der Tip von Tante G. habe ich versucht anzuwenden und siehe da es funktioniert. Bei Email mit Anhang kommt eine Email mit ewig langen Code an aber zum Glück brauche ich kein Formular mit Anhang. Habe nur noch ein Umlautproblem. Ich bin nicht beim Provider 1und1. Habe mal den Abschnitt wo ich Veränderungen gemacht habe hier gepostet. Vielleicht sieht jemand noch ein Fehler drin den man verbessern kann und vielleicht auch wie ich das Umlautprobelm gelöst bekomme.

Code: Alles auswählen

/********** sending mail begin **********/

$eol = PHP_EOL;
if($form_submitted!="" AND $no_errors=="true")
  {
  $ip = htmlspecialchars(strip_tags($_SERVER["REMOTE_ADDR"]));
  if($gender=="female") $gender_mail=mi18n("output email female");
    else $gender_mail=mi18n("output email male");
  //building array with recipients
  $recipients = "CMS_VALUE[100]";
  $array_recipients=array_filter(explode("//",$recipients));
  $recipients_in_array=explode("//",$recipients);
  //formatting subject of email
  $mail_subject="CMS_VALUE[200]";
  $mail_subject.=' - '.$name;
  // mail_body ist build within checking for errors section
  $mail_header = "From: ".$name." <".$email.">".$eol;
  $mail_header .= "X-Sender-IP: ".$ip."".$eol;
  if($filetype=="")
  {
  $mail_header .= "Content-type: text/html; charset=iso-8859-1".$eol;
  $mail_header .= $mail_body;
  $filename="";
  }
  else
    {
	$filename=$_FILES['attachment']['name'];
	if (isset($_FILES['attachment']['name']) && trim($_FILES['attachment']['name']) != "")
      {
      // Datei einlesen und codieren:
      $file_content = fread(fopen($_FILES['attachment']['tmp_name'],"r"),filesize($_FILES['attachment']['tmp_name']));
      $file_content = chunk_split(base64_encode($file_content),76,"");
      // Boundary festlegen:
      $boundary = md5(uniqid(rand()));
      // Mail-Header:
		  $mail_header .= "MIME-Version: 1.0";
      $mail_header .= "Content-Type: multipart/mixed; boundary=\"".$boundary."\"";
      $mail_header .= "This is a multi-part message in MIME format.".$eol;
      // Mail-Text:
      $mail_header .= "--".$boundary.$eol;
      $mail_header .= "Content-Type: text/html; charset=iso-8859-1".$eol;
      $mail_header .= $mail_body.$eol;
      // Attachment:
      $mail_header .= $boundary;
      $mail_header .= "Content-Type: ".$_FILES['attachment']['type']."; name=\"".$_FILES['attachment']['name']."\"".$eol;
      $mail_header .= "Content-Transfer-Encoding: base64".$eol;
      $mail_header .= "Content-Disposition: attachment; filename=\"".$_FILES['attachment']['name']."\"".$eol;
      $mail_header .= $file_content.$eol;
      // Ende:
      $mail_header .= "--".$boundary."--";
	  }	  
    }
  foreach($recipients_in_array as $recipient)
    {
    if (@mail($recipient,$mail_subject,"",$mail_header)) $sent = true;
      else echo "<br/>keine Verbindung zum Mailserver - bitte nochmal versuchen";
    }
/********** sending mail end **********/

McHubi
Beiträge: 1209
Registriert: Do 18. Nov 2004, 23:06
Wohnort: Mettmann
Kontaktdaten:

Re: Formulargenerator

Beitrag von McHubi » Mi 2. Mär 2016, 18:27

Bei Email mit Anhang kommt eine Email mit ewig langen Code an
Dann wird die Mail nicht als multipart verschickt. Ein paar "Output-Schnipsel" auf dem Weg dahin:

Prüfung ob ein Dateianhang übermittelt wurde und welchen Typs er ist:

Code: Alles auswählen

if($field[1]=="type_file")
    {
    $array_filetype=explode('/',$_FILES[$field[0]]['type']);
    $filetype=strtolower($array_filetype[1]);
Im Bereich /*########## sending mail and displaying mailed data begin ##########*/ wird dann der passende Header gesetzt

Code: Alles auswählen

if($filetype=="")
  {
  $mail_header .= "Content-type: text/html; charset=iso-8859-1\r\n";
  $mail_header .= "\n\n".$mail_body;
  $filename="";
  }
-> Mail ohne Anhang

Ist der Filetype gefüllt, wurde eine Datei angehängt. Der Content-Type muss anders lauten:

Code: Alles auswählen

  else
    {
   $filename=$_FILES['attachment']['name'];
   if (isset($_FILES['attachment']['name']) && trim($_FILES['attachment']['name']) != "")
      {
      // Datei einlesen und codieren:
      $file_content = fread(fopen($_FILES['attachment']['tmp_name'],"r"),filesize($_FILES['attachment']['tmp_name']));
      $file_content = chunk_split(base64_encode($file_content),76,"\n");
      // Boundary festlegen:
      $boundary = md5(uniqid(rand()));
      // Mail-Header:
      $mail_header .= "MIME-Version: 1.0\n";
      $mail_header .= "Content-Type: multipart/mixed; boundary=\"".$boundary."\"\n";
      $mail_header .= "This is a multi-part message in MIME format.\n";
      // Mail-Text:
      $mail_header .= "--".$boundary;
      $mail_header .= "\nContent-Type: text/html; charset=iso-8859-1\r\n";
      $mail_header .= "\n\n".$mail_body;
      // Attachment:
      $mail_header .= "\n--".$boundary;
      $mail_header .= "\nContent-Type: ".$_FILES['attachment']['type']."; name=\"".$_FILES['attachment']['name']."\"";
      $mail_header .= "\nContent-Transfer-Encoding: base64";
      $mail_header .= "\nContent-Disposition: attachment; filename=\"".$_FILES['attachment']['name']."\"";
      $mail_header .= "\n\n".$file_content;
      // Ende:
      $mail_header .= "\n--".$boundary."--";
Da der Code in dieser Form beim Versenden per

Code: Alles auswählen

if (@mail($recipient,$mail_subject,"",$mail_header)) $sent = true;
          else echo "<br/>keine Verbindung zum Mailserver - bitte nochmal versuchen";
zumindest bei mir in mehreren Installation reibungslos läuft, schau bitte mal nach, ob Du hier in dem Bereich ggf. was angepasst hast. Evtl. lässt Dein Provider keine Dateianhänge zu?
seamless-design.de
"Geht nicht!" wohnt in der "Will nicht!"-Strasse.

Das Handbuch zur Version 4.10: CONTENIDO für Einsteiger (4.10)

Das Handbuch zur Version 4.9: CONTENIDO für Einsteiger (4.9)

McHubi
Beiträge: 1209
Registriert: Do 18. Nov 2004, 23:06
Wohnort: Mettmann
Kontaktdaten:

Re: Formulargenerator

Beitrag von McHubi » Do 3. Mär 2016, 12:00

Da ich mir das Modul ohnehin gerade angesehen habe, hab ich mal eben noch die Möglichkeit hinzugefügt, per "Trenner" (type_separator) Zwischenüberschriften einzufügen um Formulare segmentieren zu können. Die Quelltexte im Eröffnungspost sind angepasst.
seamless-design.de
"Geht nicht!" wohnt in der "Will nicht!"-Strasse.

Das Handbuch zur Version 4.10: CONTENIDO für Einsteiger (4.10)

Das Handbuch zur Version 4.9: CONTENIDO für Einsteiger (4.9)

Freddy
Beiträge: 252
Registriert: Fr 6. Mai 2005, 21:01
Wohnort: Gummersbach
Kontaktdaten:

Re: Formulargenerator

Beitrag von Freddy » Mi 27. Apr 2016, 13:53

Hallo Markus,
benutze das Modul auf eine Webseite mit zwei Sprachen. Wenn ich in einer Sprache das Modul konfiguriere wird es automatisch für die andere Übernommen. Kann man es irgendwie ausschalten.

McHubi
Beiträge: 1209
Registriert: Do 18. Nov 2004, 23:06
Wohnort: Mettmann
Kontaktdaten:

Re: Formulargenerator

Beitrag von McHubi » Do 28. Apr 2016, 08:31

Hallo Freddy,

muss ich mir näher anschauen. Kann Dir allerdings nicht sagen, wann ich das schaffe weil grad viel um die Ohren...
Meld mich aber hier nochmal dazu.

Bis dahin,


Markus
seamless-design.de
"Geht nicht!" wohnt in der "Will nicht!"-Strasse.

Das Handbuch zur Version 4.10: CONTENIDO für Einsteiger (4.10)

Das Handbuch zur Version 4.9: CONTENIDO für Einsteiger (4.9)

Freddy
Beiträge: 252
Registriert: Fr 6. Mai 2005, 21:01
Wohnort: Gummersbach
Kontaktdaten:

Re: Formulargenerator

Beitrag von Freddy » Fr 29. Apr 2016, 07:50

Ich glaube mittlerweile, dass es nicht ein Problem des Moduls sondern vom Contenido-System ist. Schlage mich mit ähnlichen Problemen in Download oder Artikelliste rum. Dort werden auch die Konfigurationswerte von der anderen Sprache teilweise übernohmen.

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Formulargenerator

Beitrag von Oldperl » Fr 29. Apr 2016, 09:11

Servus,
Freddy hat geschrieben:Ich glaube mittlerweile, dass es nicht ein Problem des Moduls sondern vom Contenido-System ist.
Ein ganz klares JEIN.
Contenido bietet seit jeher die Möglichkeiten Konfigurationen in Modulen Mandanten- und Sprach-spezifisch abzulegen. Jedoch müssen das die Module auch entsprechend nutzen. Hier kommt es dann doch sehr darauf an, wie die "interne" Verarbeitung von Konfigurationen umgesetzt wird.
Da es mehrere Möglichkeiten in Modulen dafür gibt (Input, XML, (Artikel-)Properties, etc.) kann man natürlich schwerlich eine allgemein gültige Aussage dazu machen. Zumindest im Modul-Input-Bereich werden direkt beim Artikel die Konfigurationswerte zu Sprache und/oder Mandant zugeordnet. Auch bei den Content-Types sollte das so sein. Sofern die globalen Variablen für 'idlang' und 'idclient' vorhanden und entsprechend befüllt sind, werden diese entweder direkt oder per cRegistry ausgewertet und verwendet.

Falls Jemand Zeit, Lust und Laune hat könnte sie/er ja einmal alle Möglichkeiten mit den entsprechenden Bereichen listen und hier einstellen. Dann könnte Jeder dort mal schauen ob die Kriterien erfüllt sind, oder ob es noch Bugs oder Nachbesserungspotential gibt.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

Antworten