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

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
Guido
Mitglied
Beiträge: 1307
Registriert: 06.10.2002 09:44
Wohnort: Rheinland
Kontaktdaten:

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

Beitrag 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
Jensemann
Ehemaliges Teammitglied
Beiträge: 2549
Registriert: 25.02.2002 01:00

Beitrag 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";
Benutzeravatar
Guido
Mitglied
Beiträge: 1307
Registriert: 06.10.2002 09:44
Wohnort: Rheinland
Kontaktdaten:

Beitrag 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";
Benutzeravatar
Guido
Mitglied
Beiträge: 1307
Registriert: 06.10.2002 09:44
Wohnort: Rheinland
Kontaktdaten:

Beitrag 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
Benutzeravatar
Guido
Mitglied
Beiträge: 1307
Registriert: 06.10.2002 09:44
Wohnort: Rheinland
Kontaktdaten:

Beitrag 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"; }
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

Also ich hätte da einfach 'nen PHP-Skript raus gemacht ;-)

Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Benutzeravatar
Guido
Mitglied
Beiträge: 1307
Registriert: 06.10.2002 09:44
Wohnort: Rheinland
Kontaktdaten:

Beitrag 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
Antworten

Zurück zu „Coding & Technik“