Seite 1 von 1

Betreff in einer Mail mit Serverzeit füllen ? (CGI)

Verfasst: 09.03.2004 12:18
von Guido
Hallo

Ich nutze zur Zeit ein kleines cgi-Script als Formmailer, es geht um folgenden Teil:

Code: Alles auswählen

.
.
.
.
open(MAIL, "|$sendmail -oi -t") or die "FEHLER $sendmail: $!\n";
print MAIL "To: $recipient\n";
print MAIL "Bcc:$bccrecipient\n";
print MAIL "From: $sender\n";
print MAIL "Subject: $subject\n\n";
print MAIL "$mail_body";
close(MAIL) or die "FEHLER $sendmail: $!\n";
.
.
.
.
Die Variable $subject wird weiter oben im Script definiert. Dort kan man irgendeinen Text eintragen.
Mein Wunsch wäre jetzt das zusätzlich zu diesem Text noch die Serverzeit wann die Mail geschickt wurde im Betreff angezeigt wird.

Nun meine Fragen

- Muss ich dazu eine neue Varible definieren und wenn ja wie muss die Aussehen ?
- Wie wird die Variable in o.g. Code richtig eingebunden ?

Vielen Dank für eure Hilfe !

Guido

Verfasst: 09.03.2004 15:22
von Jensemann
Zur info für alle, das is perl code.

Wie du in perl an die Zeit kommst steht auf:

http://search.cpan.org/~roode/Time-Form ... /Format.pm

Die variable die die da in den print verwenden kannst du einfach in dein subject Feld mit einfügen, etwa:

Code: Alles auswählen

print MAIL "Subject: $subject - $time{'hh:mm:ss'}\n\n";

Verfasst: 09.03.2004 17:01
von Guido
Hallo Jensemann

Vielen Dank für den Versuch mir zu helfen, aber perl/cgi oder wie auch immer ist mir wirklich zu "hoch" :oops: . Ich hab jetzt nach 1,5 Stunden probieren aufgegeben. eigentlich kann es sich doch nur um 1-2 Zeilen handeln die man ändern muss oder ?
In der Hoffnung dass Du mir die reinschreibst ist hier mal das ganze Script. Dank Dir !!

Code: Alles auswählen

#!/usr/bin/perl

$sendmail = '/usr/sbin/sendmail';

$recipient = 'info@domain.de';

$bccrecipient = 'bcc@domain.de';

$sender = 'ICH';

$subject ='Betreff';

$danke = 'danke.htm';

use CGI;
$query = new CGI;

foreach $field (sort ($query->param)) {
    foreach $value ($query->param($field)) {
        $mail_body .= "$field: $value\n";
    }
}

if (($email = $query->param('07_email')) and
    ($query->param('07_email') =~ /@/)) {

    if ($name = $query->param('01_name')) {

        $name =~ s/"//g; # lose any double-quotes in name
        $sender = "\"$name\" <$email>";
    } else {

        $sender = "$email";
    }
}

open(MAIL, "|$sendmail -oi -t") or die "FEHLER $sendmail: $!\n";
print MAIL "To: $recipient\n";
print MAIL "Bcc:$bccrecipient\n";
print MAIL "From: $sender\n";
print MAIL "Subject: $subject\n\n";
print MAIL "$mail_body";
close(MAIL) or die "FEHLER $sendmail: $!\n";

print "Content-type: text/html\n\n";

open (dankefile, "$danke");
@dankefile = <dankefile>;

print "@dankefile\n";

Verfasst: 10.03.2004 00:16
von Guido
Hallo

So nach mehreren Stunden hab ich doch noch was hinbekommen, es klappt auch nur die Optik stimmt noch nicht.
Vielleicht kann mir dabei einer helfen.. So sieht das Ergebnis im Betreff aus (wenn die Mail ankommt):

Code: Alles auswählen

0:4:18 - 10.2.2004


So sollte es aber sein (mit führenden Nullen)

Code: Alles auswählen

00:04:18 - 10.02.2004
So sieht mein Code aus (die Variablen):

Code: Alles auswählen

$time = time;
($sec, $min, $hour, $day, $mon, $year) = (localtime($time))[0,1,2,3,4,5];
$year = $year + 1900;
So wird die Betreffzeile im Code definiert:

Code: Alles auswählen

print MAIL "Subject: ${hour}:${min}:${sec} - ${day}.${mon}.${year}\n\n";
Guido

Verfasst: 10.03.2004 16:42
von Guido
Hallo

ihr braucht euch nicht weiter bemühen, ich hab`s geschafft. So muss es im Endeffekt aussehen:

Code: Alles auswählen

$time = time;
($sec, $min, $hour, $day, $mon, $year) = (localtime($time))[0,1,2,3,4,5];
$year = $year + 1900;
if ($hour < 10) { $hour = "0$hour"; }
if ($min < 10) { $min = "0$min"; }
if ($sec < 10){ $sec = "0$sec"; }

Verfasst: 10.03.2004 16:56
von PhilippK
Also ich hätte da einfach 'nen PHP-Skript raus gemacht ;-)

Gruß, Philipp

Verfasst: 10.03.2004 17:16
von Guido
PhilippK hat geschrieben:Also ich hätte da einfach 'nen PHP-Skript raus gemacht ;-)

Gruß, Philipp
Wenn ich den Aufwand vorher gewust hätte, hast Du sicher Recht, aber nachher hat`s mich einfach gepackt und ich wollte das gelöst bekommen, aber Perl ist schon so ein Thema für sich..;-)

Guido