[Perl] Newbie :) probleem

Pagina: 1
Acties:

  • corani
  • Registratie: December 2000
  • Laatst online: 05-10-2017

corani

__,,,_(^_^)_,,,__

Topicstarter
Het probleem is: Ik heb de onderstaande mail-header, en daaruit wil ik twee variabelen halen. Namelijk $from, daar moet het from-adres in staan en $subject met het subject.

Ik heb dus absoluut geen verstand van Perl :) maar ik heb het even nodig voor een procmail scriptje dat een smsje stuurt bij nieuwe meel.

De hele header staan in de variabele $header.

Wie kan me helpen?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Received: from atlantis (atlantis.berflo.lan [192.168.1.100])
    by alpha.berflo.lan (8.9.3/8.9.3/Debian 8.9.3-21) with SMTP id PAA16820
    for <dbos@berflo.dhs.org>; Thu, 23 Aug 2001 15:06:00 +0200
X-Authentication-Warning: alpha.berflo.lan: Host atlantis.berflo.lan [192.168.1.100] claimed to be atlantis
Message-ID: <006801c12bd3$4ecd8470$6401a8c0@berflo.yi.org>
From: "Lord Corani" <dbos@berflo.dhs.org>
To: <dbos@berflo.dhs.org>
Subject: test
Date: Thu, 23 Aug 2001 14:58:29 +0200
MIME-Version: 1.0
Content-Type: multipart/alternative;
    boundary="----=_NextPart_000_0065_01C12BE4.1223F9D0"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2462.0000
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2462.0000
Status:

Laat me nou toch eens met rust man!
Iedereen die in telekinese gelooft, steek a.u.b. mijn hand op


  • smooky
  • Registratie: Februari 2000
  • Niet online
moet je eens bij regular expression kijken in de perl handleiding. . . .

  • corani
  • Registratie: December 2000
  • Laatst online: 05-10-2017

corani

__,,,_(^_^)_,,,__

Topicstarter
Op donderdag 23 augustus 2001 15:35 schreef Smooky het volgende:
moet je eens bij regular expression kijken in de perl handleiding. . . .
Ik ben niet zo goed in regex, zeg maar slecht, of enorm beroerd :) Iemand die een beetje kan helpen? Dit is namelijk de eerste keer dat ik met Perl werk...

Laat me nou toch eens met rust man!
Iedereen die in telekinese gelooft, steek a.u.b. mijn hand op


  • corani
  • Registratie: December 2000
  • Laatst online: 05-10-2017

corani

__,,,_(^_^)_,,,__

Topicstarter
Nou, ik heb het voor elkaar hoor.. of kan het beter?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/usr/bin/perl
($header,$body) = split(/\n\n/, join("", <>), 2);
(@headers) = split(/\n/, $header);
foreach $regel (@headers)
{
  if ($regel =~ /^From/)
  {
    ($rommel, $from) = split(/:/, $regel);
    if ($from =~ / /)
    {
    if ($from =~ /".*"/)
    {
      ($from1, $rommel2) = split(/"/, $from);
      $from = $from1;
    }
    elsif ($from =~ /</)
    {
      ($from1, $rommel) = split(/</, $from);
      $from = $from1;
    }
    }
  }
  elsif ($regel =~ /^Subject/)
  {
    ($rommel, $subject) = split(/:/, $regel);
  }
}
system("/usr/bin/smssend everyday username password 0611111111 \"$from:$subject\"");

Laat me nou toch eens met rust man!
Iedereen die in telekinese gelooft, steek a.u.b. mijn hand op


  • Drop
  • Registratie: September 2001
  • Laatst online: 19-02-2022
Op donderdag 23 augustus 2001 16:07 schreef corani het volgende:
Nou, ik heb het voor elkaar hoor.. of kan het beter?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/usr/bin/perl
($header,$body) = split(/\n\n/, join("", <>), 2);
(@headers) = split(/\n/, $header);
foreach $regel (@headers)
{
  if ($regel =~ /^From/)
  {
    ($rommel, $from) = split(/:/, $regel);
    if ($from =~ / /)
    {
    if ($from =~ /".*"/)
    {
      ($from1, $rommel2) = split(/"/, $from);
      $from = $from1;
    }
    elsif ($from =~ /</)
    {
      ($from1, $rommel) = split(/</, $from);
      $from = $from1;
    }
    }
  }
  elsif ($regel =~ /^Subject/)
  {
    ($rommel, $subject) = split(/:/, $regel);
  }
}
system("/usr/bin/smssend everyday username password 0611111111 \"$from:$subject\"");
Dat wel ietsje beter denk ik :) Probeer dit eens?

my ($from) = $header =~ /From: (.+)/;
my ($subject) = $header =~ /Subject: (.+)/;

# verstuur SMS

  • corani
  • Registratie: December 2000
  • Laatst online: 05-10-2017

corani

__,,,_(^_^)_,,,__

Topicstarter
Nou, dat is bijna perfect! Het enige probleem (op dit moment :) ) is het volgende:

Als ik een email-header krijg die er als volgt uitziet:
code:
1
From: "Gebruikernaam" <gebruiker@mijndomein.com>

Dan wil ik alleen "Lord Corani" eruit halen. Terwijl ik bij deze header
code:
1
From: gebruiker@mijndomein.com

"gebruiker@mijndomein.com" wil hebben..

Laat me nou toch eens met rust man!
Iedereen die in telekinese gelooft, steek a.u.b. mijn hand op


  • 2
  • Registratie: November 2000
  • Laatst online: 31-03 13:52

2

code:
1
2
3
4
5
6
if($header =~ /regexp_met_(username)_en_(emailadres)/) {
  $user = $1;
}
elsif($header =~ /regexp_met_alleen_(emailadres)/) {
  $user = $1;
}

  • GiLuX
  • Registratie: Juni 1999
  • Laatst online: 12-11-2025
best aardige poging voor iemand die geen perl en regexpen kan...;)

"I disagree with what you are saying, but I will defend to the death your right to say it." -- not clear who


  • corani
  • Registratie: December 2000
  • Laatst online: 05-10-2017

corani

__,,,_(^_^)_,,,__

Topicstarter
Nou, iedereen bedankt! Want volgens mij werkt het zo:
code:
1
2
3
4
5
6
7
8
9
#!/usr/bin/perl
($header,$body)=split(/\n\n/, join("", <>), 2);
my ($from) = $header =~ /From: (.+)/;
my ($subject) = $header =~ /Subject: (.+)/;
if ($from =~ /^"(.+)"/)
{
  $from = $1;
}
print "From is: $from\n\nSubject is: $subject\n";

Laat me nou toch eens met rust man!
Iedereen die in telekinese gelooft, steek a.u.b. mijn hand op


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Misschien heb je er niks aan, maar ik doe in PHP gewoon dit:
PHP:
1
2
3
4
5
6
7
8
<?
        if (ereg("From: (.*)", $line, $regs)) {
            $mail["from"] = $regs[1];
            $mail["from"] = str_replace("\"", "", $mail["from"]);
            $mail["from"] = str_replace("<", "(", $mail["from"]);
            $mail["from"] = str_replace(">", ")", $mail["from"]);
        }
?>

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • 2
  • Registratie: November 2000
  • Laatst online: 31-03 13:52

2

Op maandag 10 september 2001 23:28 schreef GiLuX het volgende:
best aardige poging voor iemand die geen perl en regexpen kan...;)
Zeg hé....

:)

Vergis je niet! :P

Let vooral op mijn (haakjes) die staan daar niet zomaar ;)

* Anoniem: 2 voelt zich op zijn integere pikje getrapt :o

  • GiLuX
  • Registratie: Juni 1999
  • Laatst online: 12-11-2025
2 voelt zich op zijn integere pikje getrapt
gelukkig voor jou dat het dan geen Long is ;)

"I disagree with what you are saying, but I will defend to the death your right to say it." -- not clear who


  • 2
  • Registratie: November 2000
  • Laatst online: 31-03 13:52

2

BIGINT(9223372036854775807)


mu-ha :)

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Lastig.. zo;n groot getal past nooit in een socket... Winsock32 is namelijk maar 32 bits.

Localhost, sweet localhost


  • GiLuX
  • Registratie: Juni 1999
  • Laatst online: 12-11-2025
BIGINT(9223372036854775807)

mu-ha :)
ouch!
sorry, that gotta hurt :D

"I disagree with what you are saying, but I will defend to the death your right to say it." -- not clear who


  • 2
  • Registratie: November 2000
  • Laatst online: 31-03 13:52

2

Op dinsdag 11 september 2001 13:36 schreef kvdveer het volgende:
Lastig.. zo;n groot getal past nooit in een socket... Winsock32 is namelijk maar 32 bits.
Ja dat klopt, en die dames maar lijden.

* Anoniem: 2 wordt wel heel erg flauw nu :)
Pagina: 1