E-Mail wird nicht versendet

Hast du einen Fehler in der aktuellen Version gefunden ? Diesen kannst du uns hier mitteilen und uns bei der Fehlersuche helfen.
Antworten
bkav-admin
Beiträge: 37
Registriert: 16. Apr 2009, 16:59

E-Mail wird nicht versendet

Beitrag von bkav-admin »

Hallo!

Sorry daß ich einen neuen thread aufmache, der alte geht aber nicht weiter. Vielleicht, weil der Betreff auch nicht mehr zum Inhalt paßt.

Ich versuche admidio 2.1.3 für meinen Verein nutzbar zu machen uns scheitere an der Mail-Funktion.
Nachdem ich herausgefunden habe, daß der hoster prinzipiell mail() unterstützt und auch nach eigener Aussage keine Einschränkungen hat, hab ich versucht, unwissenderweise etwas tiefer in den code von admidio einzusteigen.
Ich wollte herausfinden, was admidio alles an mail() übergibt, um in einer Test-php zu prüfen, ob alles funktioniert und ggf. etwas zu spielen.

Ich kann aber den Aufruf mail nicht finden, nur sendEmail(), korrekt?
Dann hätte ich dem hoster ganz falsche Fragen gestellt.
Wenn nein, wo kann ich denn den Aufruf finden?

Keine Ahnung, ob dieser code geeignet ist, um sendEmail() zu testen:

Code: Alles auswählen

<?
sendEmail("ich@domain", "du@domain", "subject", "body");
?>
Ergebnis ist jedenfalls
Fatal error: Call to undefined function: sendemail() in /.../html/admidio/mailtest.php on line 3
Bitte helft mir!

Gruß Thomas.
Benutzeravatar
fasse
Administrator
Beiträge: 6132
Registriert: 12. Nov 2005, 16:06

Re: E-Mail wird nicht versendet

Beitrag von fasse »

bkav-admin hat geschrieben:Sorry daß ich einen neuen thread aufmache, der alte geht aber nicht weiter. Vielleicht, weil der Betreff auch nicht mehr zum Inhalt paßt.
Er geht von meiner Seite nicht weiter, da ich im Moment keine Idee mehr habe, was bei dir dann schief läuft. Ein neuer Thread birgt immer die Gefahr, dass Leute dir deselben Antworten geben, wie du sie bereits im [ur=viewtopic.php?t=1790&start=15]alten Thread[/url] bekommen hast.

Dein Ansatz, mal ein bischen mit der mail-Funktion herumzuspielen, ist aber ganz gut und kann vielleicht den Hinweis darauf geben, was wo nicht passt.

Die Funktion sendMail() kommt aus unserer Mail-Klasse. Den Code dazu findest du unter adm_program/system/classes/email.php. Das Objekt dazu wird in ../modules/mail/mail_send.php in Zeile 85 erzeugt und danach mit den nötigen Infos ergänzt.

Gruß
Fasse
bkav-admin
Beiträge: 37
Registriert: 16. Apr 2009, 16:59

Beitrag von bkav-admin »

Hallo Fasse!

Antwort / Frage von inetsolutions:
Sehr geehrte Damen und Herren,

wie gesagt wir loggen ja, dort steht kein Fehler.
Wir haben uns die Funktion angescheit.
Problem ist dass $recipient leer ist.

Die Variable ist leer da $this->headerOptions['To'] auch leer ist (bzw. Nullstring).

Warum wissen wir auch nicht. Liegt an Programmierung oder einer Einstellung im admidio.

Braucht das admidio register_globals auf on?
Parallel per E.Mail.

Danke! Thomas.
Benutzeravatar
fasse
Administrator
Beiträge: 6132
Registriert: 12. Nov 2005, 16:06

Beitrag von fasse »

Hallo Thomas,

was erwartet dein Hoster denn in diesem Feld, wenn man es nicht füllen will ?

Hintergrund ist nämlich folgender:
Du schickst eine Mail an eine Rolle mit vielen Mitgliedern, damit jetzt nicht jedes Mitglied die E-Mail-Adressen der anderen sehen kann (Datenschutz), werden diese als BCC angehangen. Somit gibt es also keinen "richtigen" TO-Adressaten und wir füllen das Feld einfach nicht, was i.d.R. dann auch funktioniert.

Ich habe dies gerade noch mal mit ein paar Freemailern ausprobiert und auch dort kann man dann E-Mails ohne To verschicken. Als Empfänger sehe ich dann auch in der E-Mail kein To.

Gruß
Fasse
bkav-admin
Beiträge: 37
Registriert: 16. Apr 2009, 16:59

Beitrag von bkav-admin »

Hallo Fasse!
Langsam kreisen wir die Sache ein.:D
fasse hat geschrieben: was erwartet dein Hoster denn in diesem Feld, wenn man es nicht füllen will ?
Hab die Frage weitergeleitet.
fasse hat geschrieben: Du schickst eine Mail an eine Rolle mit vielen Mitgliedern, damit jetzt nicht jedes Mitglied die E-Mail-Adressen der anderen sehen kann (Datenschutz), werden diese als BCC angehangen. Somit gibt es also keinen "richtigen" TO-Adressaten und wir füllen das Feld einfach nicht, was i.d.R. dann auch funktioniert.
Ich kenne das so, daß in solchen Fällen der Absender gleich auch als Empfänger gesetzt wird. Allerdings geht dann die Option, einen festen Absender zu setzen nicht und müßte deaktiviert werden.

Kann ich ja mal testen. Wie müßte der Code in der email.php dann aussehen?

Was ich mal anmerken möchte, Du beantwortest pro post immer nur eine Frage, auch wenn mehrere gestellt sind. Ist das Absicht?;-)

Es wurde von meinem hoster noch gefragt:
Braucht das admidio register_globals auf on?
Gruß
Thomas
Benutzeravatar
fasse
Administrator
Beiträge: 6132
Registriert: 12. Nov 2005, 16:06

Beitrag von fasse »

Hallo Thomas,
bkav-admin hat geschrieben:Ich kenne das so, daß in solchen Fällen der Absender gleich auch als Empfänger gesetzt wird. Allerdings geht dann die Option, einen festen Absender zu setzen nicht und müßte deaktiviert werden.
Dann bekommt man aber selber auch immer die Mail geschickt, was man vielleicht nicht immer möchte. Wäre aber eine Alternative, die man überlegen könnte.
bkav-admin hat geschrieben:Kann ich ja mal testen. Wie müßte der Code in der email.php dann aussehen?
Du müsstest im E-Mail-Modul in der Datei mail_send.php so ca. Zeile 288, vor dem SendMail()-Befehl, folgende Zeile hinzufügen:

Code: Alles auswählen

$email->addRecipient('meine_adresse@anbieter.de', 'Mein Name');
bkav-admin hat geschrieben:Was ich mal anmerken möchte, Du beantwortest pro post immer nur eine Frage, auch wenn mehrere gestellt sind. Ist das Absicht?;-)
Nein, das ist jetzt bei dir Zufall. Im Eifer der Beantwortung der ersten Frage, übersehe ich scheinbar öfter die Zweite. Jetzt hab ich aber versucht alle zu beantworten.
Braucht das admidio register_globals auf on?
Nein, Admidio läuft mit register_globals = off

Viele Grüße
Fasse
bkav-admin
Beiträge: 37
Registriert: 16. Apr 2009, 16:59

Beitrag von bkav-admin »

Hi!
fasse hat geschrieben: Dann bekommt man aber selber auch immer die Mail geschickt, was man vielleicht nicht immer möchte. Wäre aber eine Alternative, die man überlegen könnte.
Wie ist das dann bei automatischen Mails? Dann bekäme doch der hier zwangsweise gesetzte Absender (weil sonst wieder "To" leer wäre?) immer eine Kopie als "To"? z.B. auch das neue Passwort?

Danke für die 2. Antwort. Habe ich weitergegeben. (keine Ahnung, was das bedeutet.)

Gruß Thomas.
bkav-admin
Beiträge: 37
Registriert: 16. Apr 2009, 16:59

Beitrag von bkav-admin »

Hallo nochmal,

ich habe nun doch noch etwas mit der mail()-Funktion gespielt. War für mich sehr aufwändig, weil ich erstmal die korrekte Syntax lernen mußte.
Dabei fiel mir auf, daß bei einem Versuch die Fehlermeldung kam, das im safe-mode das 5. Feld von mail(), additional-parameters, deaktiviert ist. Ist das ein Problem?

Beim Nachlesen im Forum habe ich entdeckt, daß der safe-mode auch an anderen Stellen problematisch sein kann (kam glaub ich auch bei der Installation als Hinweis). Ich werde den hoster fragen, ob ein Abschalten möglich ist.

Es gab für mich noch andere Phänomene: Es wird sehr strikt mit der Syntax verfahren (wird wohl immer so sein). Ein einfacher Zeilenumbruch im code schob die folgenden bcc's gleich in den Text. Case-sensitivity! Scheint sehr wichtig bei den additional headers (From, Reply-To, CC, BCC).

Zum Testen der vorangegangenen Überlegungen habe ich From und To identisch gemacht. Sonst waren die nirgendwo drin. Trotzdem hat diese Adresse 2 Mails bekommen. Vielleicht hat der hoster eingestellt, daß "From" immer eine Kopie bekommt? Kann aber auch an mir liegen. Ich hab mehrere Mail-Adressen mit der gleichen domain verwendet, die alle beim hoster auf mein Postfach laufen. Möglicherweise wird da auch blockiert.

Weiterhin gehen Adressen des Formates "Kelly <kelly@example.com>" nicht und führen zum "False", wogegen "kelly@example.com" geht. Das würde natürlich das mail-modul von admidio killen.

Ich bin gespannt auf die Antworten.

Gruß Thomas.
bkav-admin
Beiträge: 37
Registriert: 16. Apr 2009, 16:59

Beitrag von bkav-admin »

Hallo!

Heute erhielt ich verschiedene Antworten vom hoster, ohne Wertung, ich gebe einfach weiter:
also die Antwort im Forum ist komisch.
Die Funktion mail() erwartet ein TO. Ist dieses leer, weiß die Funktion ja nicht wo die Mail hingehen soll.
bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )
Zu dem BCC:
Es ist besser wenn Sie jedes BCC in eine neue Zeile schreiben (also mit \r\n)
der SafeMode muss nicht aktiviert sein. Richtig eingestellt (richtigen Rechte des Benutzers) läuft alles auch im SafeMode.
Ich habe auf den entsprechenden Thread viewtopic.php?t=76&highlight=safe+mode hingewiesen. Das ist aber gerade nicht mein Hauptproblem.

Ich hatte ja festgestellt, daß "Kelly <kelly@example.com>" nicht geht. Antwort:
Funktioniert „Kelly<kelly@example.com>" ?
Ev auch
„Kelly \<kelly@example.com\>" ?
geht beides nicht.

Ich bin verzweifelt. Ich hätte gern, daß sich Fachleute mit Fachleuten verständigen. Ich bin eben keiner.

Gruß Thomas.
Benutzeravatar
fasse
Administrator
Beiträge: 6132
Registriert: 12. Nov 2005, 16:06

Beitrag von fasse »

Hi Thomas,

momentan ist die Zeit bei mir was knapp, weshalb ich mich noch nicht richtig um dieses Problem kümmern konnte. Aber bevor ich deine Fragen bzw. Hoster-Weiterleitungen beantworte noch eine Gegenfrage, die bei der Klärung wichtig wäre:
Läuft dein Webspace beim Hoster auf einem Windows-Server ?

Gruß
Fasse
bkav-admin
Beiträge: 37
Registriert: 16. Apr 2009, 16:59

Beitrag von bkav-admin »

Hi!

Nein. inetsolutions.de nutzt Apache auf UNIX.

Gruß Thomas
bkav-admin
Beiträge: 37
Registriert: 16. Apr 2009, 16:59

Ursache gefunden - Mail wird nicht versendet

Beitrag von bkav-admin »

Hallo!

Siehe da, admidio versendet Mail vorbildlich. :-D

Der Fehler liegt NICHT in der nicht ausgefüllten $To - Variable.
Wie bereits ausgetestet akzeptiert mail() bei inetsolutions.de das Format

"Vorname Name <adresse@domain.de>"

nicht. Kann das am UNIX liegen? Das Format entstammt ja Windows.

Zum Test habe ich in meiner Unprofessionalität einige Zeilen der Klasse email.php einfach umgeschrieben und es funktioniert - auch ohne "$To"!

Das ist aber nicht die Lösung.
Daher bitte ich inetsolutions, die mail()-Funktion zu prüfen und zu korrigieren.

Alles in Allem war das von Seiten unseres Sponsors inetsolutions und auch von hier ein hervorragender Support.
Vorerst vielen Dank.
Freundliche Grüße von der Nahe!

Thomas
bkav-admin
Beiträge: 37
Registriert: 16. Apr 2009, 16:59

Gelöst: Mail wird nicht versendet

Beitrag von bkav-admin »

Hallo!

inetsolutions hat rausgefunden, was los ist.
Wir setzen ein komplexes Clustersystem und Chrooted Apache ein.
Ev. versteht unser mini_sendmail „Name <mail>“ nicht. Dies ist das einzigste was bei uns Systembedingt geändert wurde.
Die mail() wurde nicht geändert, nur der Transport. Wir setzen dazu externe Software ein: http://www.acme.com/software/mini_sendmail/
Wir hatten noch keinen User der als TO (recipient/RCPT) „Name <mail>“ eingesetzt hat, da dies ungewöhnlich ist.
Wir konnten dank Ihrer Hilfe den Fehler finden. Wir müssen die Software mini_sendmail nun umprogrammieren.
Die Technik macht sich gleich an die Arbeit.
Und vielleicht doch noch ein Hinweis an die Programmierer
:wink:
Normalerweise werden komplexe Mails nicht mit mail() verschickt sondern per SMTP mit z.B. PHP „PEAR Mail“.
Ich hoffe, daß ich in Kürze ein unverändertes email.php einsetzen kann.

Gruß Thomas
- der sich jetzt wieder der richtigen Verensarbeit widmen wird und nicht meht nervt -
matzman2000
Former team member
Beiträge: 1087
Registriert: 2. Sep 2007, 17:12
Wohnort: Itzstedt
Kontaktdaten:

Re: Gelöst: Mail wird nicht versendet

Beitrag von matzman2000 »

bkav-admin hat geschrieben:Und vielleicht doch noch ein Hinweis an die Programmierer
:wink:
Normalerweise werden komplexe Mails nicht mit mail() verschickt sondern per SMTP mit z.B. PHP „PEAR Mail“.
Das könnte man u.U. irgendwann mal als Option mit einbauen. Das ist heute bei vielen PHP basierenden Programmen möglich (zB phpbb). Da aber nicht jeder über einen SMTP Server verfügt, als Option.
Könnte man auf jeden Fall drüber nachdenken...
bkav-admin
Beiträge: 37
Registriert: 16. Apr 2009, 16:59

Gelöst: Mail wird nicht versendet

Beitrag von bkav-admin »

Hallo!

Inetsolutions hat mini_senmail gepatcht. Mail-Modul funktioniert bisweilen ohne meine Modifikation gut.

Gruß und Danke an Fasse und das Team für die Geduld!

Thomas.
Antworten