Как изменить скрипт email2sms для поиска классификатора ВНИМАНИЕ: вопиющий плагиат - PullRequest
0 голосов
/ 17 июля 2011

Я нашел Perl-скрипт, который проверяет учетную запись электронной почты и пересылает содержимое на телефон GSM. Он использует код ниже, чтобы определить тело письма. Это может отличаться для каждого пакета электронной почты, поэтому на самом деле не работает. Вместо этого я собирался получить # в начале тела письма, как бы я это сделал?

  sub ProcessEmail
 {
   # Assign parameter to a local variable
   my (@lines) = @_;
   my $body_start = 'FALSE';
   $sms_body = "";

   # Declare local variables
   my ($from, $line, $sms_to);

   # Check each line in the header
   foreach $line (@lines)
   {
 print $line;
     if($line =~ m/^From: (.*)/)
     {
        # We found the "From" field, so let's get what we need
        $from = $1;
        $from =~ s/"|<.*>//g;
        $from = substr($from, 0, 39);               # This gives us the 'From' Name
    }
    elsif( $line =~ m/^Subject: (.*)/)
    {
        # We found the "Subject" field. This contains the No to send the SMS to.

       $sms_to   = $1;
        $sms_to = substr($sms_to, 0, 29);

       if ($sms_to =~ /^[+]?\d+$/ )             # here we check if the subject is a no. If so we proceed.
       {
           print "Got email. Subject is a number. Processing further\n";
       }
   else #Otherwise we delete the message and ignore it.
       {
        print "Got email. Subject is NOT a number. Ignoring it. \n";
        return;
      }
     } 
   elsif(( $line =~ m/^Envelope-To:/)||($body_start eq 'TRUE')) # This is the last line in the email header
    {          # after this the body starts
   if($body_start ne 'FALSE')
   {
   $sms_body = $sms_body . $line;
   }
       $body_start='TRUE';
    }
   }

   # At this point we know the Subject, From and Body.
   # So we can send the SMS out to the provided no.

   $sms_body = "SMS via Email2SMS from $from: " . $sms_body;

   # You can only send SMS in chunks of 160 chars Max according to gnokii. 
   # so breaking the body into chunks of 160 and sending them 1 at a time.
 print  $sms_to;
 print $sms_body;

Ответы [ 2 ]

1 голос
/ 17 июля 2011

Это то, что вы сможете избежать повторного изобретения, используя для этого модуль из CPAN.

На первый взгляд Mail :: Message :: Body из дистрибутива Mail :: Box выглядит так, как будто это должно сработать.Смотри также Email :: Abstract .

0 голосов
/ 02 сентября 2011

Изменено для поиска строки, специфичной для почтовой программы.Противно и будет работать только от определенного отправителя почты, но это сработало

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...