Seite 1 von 1

cMailer

Verfasst: Mi 25. Apr 2018, 14:09
von malsdgtac
Hallo,

ich test über den integrierten Mailer Mails zu versenden.

Ich habe raus gefunden, dass man mit den folgenden zwei Codzeilen ein einfaches Mail versenden kann:

Code: Alles auswählen

$mailer = new cMailer();
$mailer->sendMail("Empfänger", "Absender", "Betreff, Nachricht");
Ist es denn nun so, dass für den Versand Swiftmailer verwendet wird und dabei auf die Konfigurationsdaten unter "System/Konfiguration" zurück gegriffen wird? Wenn ich also dort eine Verschlüsselung angebe, wird das Mail über eine gesicherte Verbindung gesendet?
Noch wichtig für mich: wo und wie werden die Konfigurationsdaten gespeichert?

Danke für Eure Antworten.

Re: cMailer

Verfasst: Do 26. Apr 2018, 09:23
von frederic.schneider_4fb
Guten Morgen,

standardmäßig setzen neuere CONTENIDO-Versionen auf den SMTP-Transport via Swiftmailer. Relevant dafür ist die System-Variable "mail_transport" mit dem Standardwert "smtp" (wir haben diese Prüfung eingeführt, um ein Fallback über die PHP-Funktion mail() bereitstellen zu können). Dies entspricht den Konfigurationsdaten unter System -> Konfiguration. Analog findest Du unter dem selben Reiter auch die Einstellungsmöglichkeiten für SMTP. Die Daten werden letztendlich in der Datenbank als weitere System-Variablen abgespeichert. Gibst Du eine Verschlüsselung und den passenden Port entsprechend den Vorgaben Deines Webhosters an, so findet der Versendeprozess verschlüsselt statt. Wichtig: Hängt an dem Mailsystem ein Eingabeformular o. ä., musst Du selbst für die verschlüsselte Übertragung der eingegebenen Daten sorgen; wir empfehlen daher, die Website über einen SSL-Layer (https) laufen zu lassen.

Re: cMailer

Verfasst: Do 26. Apr 2018, 09:54
von malsdgtac
Hallo,

vielen Dank für deine Antwort.

Also wenn ich ein Kontaktformular habe und die dort eingegeben Daten dann über CMailer versende und
1. die Seite unter SSL/HTTPS läuft und
2. unter System / Konfiguration / SMTP die Maildaten und eine Verschlüsselung angebe
dann werden die Mails über eine verschlüsselte Verbindung versendet?

Kannst du mir bitte noch beantworten, wie die in der Konfiguration angegeben Daten sicher gespeichert werden? Werden diese verschlüsselt?

Re: cMailer

Verfasst: Do 26. Apr 2018, 10:02
von frederic.schneider_4fb
Lieber malsdgtac,

zur ersten Frage:
Ja, das ist pauschal beantwortet so korrekt. Explizit beantworten könnte ich es natürlich nur, wenn ich die Seite und den dahinterliegenden Code sehen würde, aber wenn Du diese Prinzipien anwendest, ist das der richtige Weg.

Zu letzterem:
Die Konfigurationsdaten werden in der Datenbank nicht verschlüsselt abgelegt, was auch regelmäßig keinen Sinn macht, da Daten wie etwa der Hostname vom Mail-System in Klartext benötigt werden. Man könnte allenfalls mit einer Verschlüsselung die Daten in der Datenbank speichern und vom selben Skript später wieder entschlüsseln lassen. Damit stünden sie zwar verschlüsselt in der Datenbank, könnten aber, wer die Verschlüsselungsart kennt, ohne großen Aufwand wieder entschlüsselt werden. Da die Datenbank allerdings im Regelfall nur mit Zugangsdaten gelesen werden kann, sind die Daten grundsätzlich erst einmal von fremden Zugriffen geschützt.

Re: cMailer

Verfasst: Do 26. Apr 2018, 10:06
von malsdgtac
Danke für deine Einschätzung

Re: cMailer

Verfasst: Do 26. Apr 2018, 10:08
von frederic.schneider_4fb
Immer gerne :D

Re: cMailer

Verfasst: Mi 23. Mai 2018, 16:33
von McHubi
Hallo zusammen,

ich bin gerade dabei meinen Formulargenerator in punkto smtp aufzubohren. Der Versand klappt soweit, allerdings stellt sich die Frage, inwiefern HTML-Mails realisierbar sind. Der PIFA versendet ja - korrigiert mich wenn ich falsch liege - ausschließlich Textmails, oder? Lässt sich die von malsdgtac genannte Zeile (hab sie mal etwas abgewandelt)

Code: Alles auswählen

$mailer->sendMail("Empfängermailadresse", "Absendername", "Betreff", "Nachricht");
ggf. noch um die Info "HTML oder Text" ergänzen?
In den Docs wurde diese Frage bereits vor ziemlich langer Zeit gestellt, allerdings nicht beantwortet:
https://docs.contenido.org/display/CONDEVE/cMailer

Danke euch für Infos! :D

Markus

Re: cMailer

Verfasst: Mi 23. Mai 2018, 16:44
von Oldperl
Moin Markus,

hinter dem cMailer liegt die Swiftmailer-Lib. Einfach dort mal die Doku durchstöbern :arrow: https://swiftmailer.symfony.com/docs/introduction.html

Gruß aus Franken

Ortwin

Re: cMailer

Verfasst: Mi 23. Mai 2018, 16:47
von McHubi
Moin Ortwin,

ja, die schau ich mir grad seit ein paar Minuten durch. Sowas hier (mit Varianten) funktioniert allerdings nicht:

Code: Alles auswählen

  $mailer = new cMailer();
  $mailer->setContentType(text/html);
  $mailer->sendMail($email, $name, $mail_subject, $mail_body);
Jetzt werf ich mal einen Blick in die class.mailer.php

Re: cMailer

Verfasst: Mi 23. Mai 2018, 16:49
von Oldperl
Hier noch was zum Thema HTML-Mails :arrow: http://www.php-rocks.de/thema/91-html-e ... ailer.html

Gruß aus Franken

Ortwin

Re: cMailer

Verfasst: Mi 23. Mai 2018, 16:59
von McHubi
1)
So. Eine Anpassung einer Zeile in der class.mailer.php auf

Code: Alles auswählen

    public function sendMail($from, $to, $subject, $body = '', $cc = NULL, $bcc = NULL, $replyTo = NULL, $resend = false, $contentType = 'text/html') {
bringt schon mal eine vernünftige HTML-Mail zustande. Jetzt muss ich nur noch eine Möglichkeit finden, die hardcodierte Änderung hinsichtlich künftiger Updates aus dem Modul heraus anzusprechen, heißt "irgendwie" hier:

Code: Alles auswählen

  $mailer = new cMailer();
  $mailer->sendMail($email, $name, $mail_subject, $mail_body);
EDIT:
So geht's, ein Beispiel mit mehreren Empfängern und Auswahl von text/html oder text/plain:

Code: Alles auswählen

$send_from_email="mail@domain.de";
$recipients_in_array=array("peter@test.de","holla@waldfee.de");
$content_type="text/html";
$mail_subject="Infos im Betreff";
$mail_body="<table><tr><td>Name:</td><td>Lorem ipsum</td></tr></table>";
$mail_body_plain_text="Name: Lorem ipsum";

$mailer = new cMailer();
$message = Swift_Message::newInstance();
$message->setFrom($send_from_email);
$message->setSubject($mail_subject);
$message->setContentType($content_type);
if($content_type=="text/html") $message->setBody($mail_body);
  else $message->setBody($mail_body_plain_text);
foreach($recipients_in_array as $recipient)
  {
  $message->setTo($recipient);
  $mailer->send($message);
  }
Eine Anpassung in der class.mailer.php ist dann NICHT mehr notwendig!

2)
Aufgetauchte Zusatzfrage beim Lesen der Kommentare in der class.mailer.php:
* By default the cMailer tries to use an SMTP transport with optional
* authentication. If starting the SMTP transport fails, a simple MAIL
* transport will be used (using PHP's mail() function).
Wie finde ich heraus, dass smtp nicht geklappt hat? Kommt dann eine Fehlermeldung? Vor allem wenn statt der function
$mailer->sendMail(...);
aus der class.mailer.php
$mailer->send(...);
verwendet wird? :shock:

3)
Hat jemand evtl. ein eigenes Kontaktformular zustande gebracht, bei dem mit dem cMailer() eine Mail mit per Formular hochgeladenem Dateianhang drangeflanscht ist? Dann müsste ich hier nicht das Rad neu erfinden - allen Selbstlerneffekten zum Trotz... :wink:
EDIT:
Dazu braucht es in der Tat - für die Generierung der Mail jedenfalls - nur eine weitere Zeile:

Code: Alles auswählen

$message->attach(Swift_Attachment::fromPath($_FILES['attachment']['tmp_name'])->setFilename($_FILES['attachment']['name']));
Damit bliebe nur noch Frage 2 zu beantworten... :roll: