eMail mit Perl und sendmail

PatrickD

Mitglied
Hallo Leute,

da ich nicht besonders fit bin in Perl eine Frage an Euch.

Für was steht das "-t" hinter $program (enthält:-> sendmail)
in dieser Zeile?

if(open(MAIL, "|$program -t"))

ich habe auch schon gesehen das hinter sendmail die
Empfängeradresse direkt steht. Also:

if(open(MAIL, "|sendmail $empfaenger"))

Was bewirkt denn das ?
 
Hallo Patrick,

das -t hinter sendmail bedeuted, dass man keinen Empfänger in der Befehlszeile angeben muss. Stattdessen erfolgt die Angabe des Empfängers beim schreiben der eigentlichen Nachricht. Also in etwa so:

Code:
open (MAIL, "|/usr/lib/senmail -t") or die "Konnte sendmail nicht öffnen!";
print (MAIL, "From: <EMail Adresse>\n");
print (MAIL, "To: <EMail Adresse>\n");
print (MAIL, "Subject: Betreff\n");
print (MAIL, "Dein Text\n");
close(MAIL);

Wenn Du das -t nicht angibst, fordert Sendmail die Empfängeradresse direkt in der Befehlszeile.

Zusätzlich empfehle ich Dir die Verwendung von -oi. Das bewirkt, dass eine Zeile mit einem einzelnen "." nicht als Nachrichtenende behandelt wird.

Grüße Thomas
 
Perl-Mail

Danke für die Info Taurus,

werde es gleich mal ausprobieren!

Hintergrund meiner Frage war bzw. ist ein Problem, das
meine mit Perl versendeten Mails nicht korrekt formatiert ankommen.

D.h. es sind im Mailbody alle Zeilenumbrüche ignoriert worden.
Die Felder: Absender und Betreff sind leer.

Eine solche Mail sind dann so aus (Ausschnitt):

From: mail@lercher.de Subject: Auftragsbestätigung von Shop
Message-Id: <E19NFVa-0000Nl-00@mrvnet.kundenserver.de>

---------------------------------------- Auftragsbestätigung von
Shop Eingereicht von: Mustermann Email: patrick@t-online.de Datum:
03/06/2003, 19:23:36 ----------------------------------------
Bestellung: ... etc.


Das Perl-Script ist vorgefertigt, also nicht von mir.
Läuft auf anderen Server jedoch einwandfrei.
Ich dachte daher es muß an Sendmail oder so liegen!

Kann das sein?
 
Hallo Patrick,

schließt Du die Zeilen mit "\n" ab?

Das sollte eigentlich reichen, um einen Zeilenumbruch einzufügen.


Grüße Thomas
 
Hi Taurus,

habe nochmal was hin und her probiert.

Dabei habe ich festgestellt das es an was anderem liegt.
Ich habe mir die vom Script generierten Mails mal per
Webmail abgeholt und nicht mit meinem Outlook-Client, und
siehe da, die Formatierung stimmt.

Also muss zwischenzeitlich irgendwas mit Outlook passiert
sein.
Ich gehe der Sache mal weiter nach.
Wäre doch peinlich wenn alle Outlook User die Mails so
verunstaltet bekommen würden.

Trotzdem vielen Dank.
 
\r\n

Hi there,

ich hab den Fehler gefunden.
Lag nicht an Outlook.

Die Zeilen waren alle mit \r\n abgeschlossen.
Jetzt habe ich das "\r" in allen Zeilen
weggelassen und es funktioniert.

Nur ein Prob noch.
Ich habe diese Zeichenfolge (\r\n) auch in einem längeren String stehen.

Wie bekomme ich die alle mit Perl aus dem Sting entfernt.
Es gibt doch bestimmt ne Suchen/Ersetzten Funk. wie "str_replace"
in PHP !?
 
Suchen und ersetzen geht ganz einfach mithilfe von Regulären Ausdrücken:

$string =~ s/SUCHPATTERN/ERSETZENPATTERN/OPTIONEN;

Dadurch wird alles in $string nach SUCHPATTERN durchsucht und dann entsprechend durch ERSETZENPATTERN ersetzt. Bei Optionen kann man verschiedene Dinge angeben, was du am besten in der Perldoku nachlesen kannst.

Wenn dir deutsch lieber ist, kannste auch mal in den CGI/Perl Teil von SelfHTML schauen. :)
 

Neue Beiträge

Zurück