Seite 1 von 1

E-Mail mit -f-Option (Newsletter, Kontakt, e.g. Hosteurope)

Verfasst: Mo 24. Apr 2006, 14:08
von HerrB
Ein Tipp zu Hosteurope (und anderen Providern):
Hosteurope erwartet beim Senden von E-Mails, dass
a) die Absender-Adresse existiert (und bei ihnen liegt) und dass
b) diese bei der Standard-PHP-Mail-Funktion als Option "-f" angegeben wird.

In Contenido kann eine Mail auf zwei verschiedenen Wegen versendet werden:
1. Via PHP-Mail-Funktion: mail(...)
2. Via class.phpmailer.php: $mail->Send()

Zu 1.:
Wird im Modul die erste Variante verwendet, ist der Absender zusätzlich als -f-Option anzugeben:

Code: Alles auswählen

mail(<Empfänger-E-Mail>, <Subject>, <Body>, "From: absender@domain.tld", "-f absender@domain.tld");
Beispiel Modul-Änderung:
Alt:

Code: Alles auswählen

mail($this->email['adresses'],$this->email['subject'],$this->email['message'],"From: {$this->email['from']['name']} <{$this->email['from']['email']}>\nReply-To: {$this->email['from']['email']}\nX-Mailer: PHP/" . phpversion()); 
Neu:

Code: Alles auswählen

mail($this->email['adresses'],$this->email['subject'],$this->email['message'],"From: {$this->email['from']['name']} <{$this->email['from']['email']}>\nReply-To: {$this->email['from']['email']}\nX-Mailer: PHP/" . phpversion(),"-f".$this->email['from']['email']);
Zu 2.:
Wird die zweite Variante verwendet (es findet sich ein include der class.phpmailer.php im Code, d.h. die PHPMailer-Klasse wirdverwendet), ist explizit der "Sender" zu definieren - diese Angabe wird als "-f"-Option dann angefügt. Standardmäßig ist "Sender" leer und wird damit nicht beigefügt.

Beispiel ($mail ist PHPMailer-Objekt):

Code: Alles auswählen

$mail->Sender = "absender@domain.tld";
Das betrifft natürlich die Newsletter-Module, Form-Mailer und natürlich das Senden der Newsletter aus Contenido.

Beispiel für Newsletter-Module und -Dateien:
Newsletter Handler-Modul:
Ausgabe: Unterhalb jedes "$mail->From/ $mail->FromName"-Blocks den Sender festlegen:

Code: Alles auswählen

      $mail->From       = $arrSettings["SenderEMail"];
      $mail->FromName   = $arrSettings["SenderEMail"];
      $mail->Sender     = $arrSettings["SenderEMail"]; // , "-f somebody@domain.tld"
class.newsletter.php:
Unter

Code: Alles auswählen

								$mail->From = $from;
								$mail->FromName = $from;
den Sender festlegen:

Code: Alles auswählen

								$mail->From = $from;
								$mail->FromName = $from;
								$mail->Sender = $from;
Stichworte: Newsletter, mail(, -f-Option, Hosteurope, Kontakt, Kontaktformular, wird nicht gesendet.

Gruß
HerrB

Verfasst: Do 15. Jun 2006, 11:23
von emergence
@HerrB
ad.2 liesse sich das nicht direkt in der contenido klasse ändern ? ich meine das man diese option default in den core dazu rein baut...

Verfasst: Do 15. Jun 2006, 13:04
von HerrB
Diesen Vorschlag habe ich gerade mit 4fb angesprochen - und wurde genehmigt (wird eine Systemeinstellung).

Wird die entsprechende Einstellung gesetzt, verwendet die class.phpmailer.php bei fehlender Sender-Angabe die Absender-Angabe...

Gruß
HerrB

Verfasst: Do 15. Jun 2006, 15:23
von HerrB
Im CVS aufgenommen (Systemeinstellung. Typ: phpmailer, Name: mail_set_f_option, Value: true).

Gruß
HerrB