#!/usr/bin/perl # # splitsms.pl # # splits up a message in order for it to be # send to a mobile phone # use strict; use Mail::Send; ## some variables my $progname = "splitsms"; my $version = "0.1.0"; my $maxmesglen = 110; my $continuemesg = "(cont)"; ## subroutines sub split_message($) { my $message = shift(@_); my $char_count = length($message); # if $char_count is less than max character length, just return the message if ($char_count <= $maxmesglen) { return $message; } else { my @split_message; my @message_words = split(" ", $message); my $curr_word = 0; my $curr_array = 0; # while there are words left in the array while ($curr_word < scalar(@message_words)) { $split_message[$curr_array] = "" if (!defined($split_message[$curr_array])); if (length($split_message[$curr_array]) < ($maxmesglen - length($message_words[$curr_word]." ") - length($continuemesg))) { $split_message[$curr_array] .= $message_words[$curr_word]." "; $curr_word++; } else { $split_message[$curr_array] .= $continuemesg; $curr_array++; } # end if } # end while return @split_message; } # end if $char_count > maxmesglen } # end split_message() sub preview_message($$$$) { my ($to, $from, $subject, $message) = @_; print "to: $to\n"; print "from: $from\n"; my @out_message = split_message($message); if (scalar(@out_message) == 1) { print "==== message ====\n"; print "subject: $subject\n"; print "message: $out_message[0]\n"; } else { for(my $i = 0; $i < scalar(@out_message); $i++) { print "==== message ".($i+1)." ====\n"; print "subject: $subject [".($i+1)."]\n"; print "message: $out_message[$i]\n"; } # end for } # end if } # end preview_message() sub send_message($$$$$) { my ($to, $from, $subject, $message) = @_; my @out_message = split_message($message); if (scalar(@out_message) <= 0) { print "ERROR: less than 0 messages\n"; } elsif (scalar(@out_message) == 1) { my $mail = new Mail::Send; $mail->to($to); $mail->subject($subject); $mail->set("From", $from); my $body = $mail->open('sendmail'); print $body $out_message[0]; $body->close; } else { for(my $i = 0; $i < scalar(@out_message); $i++) { my $mail = new Mail::Send; $mail->to($to); $mail->subject("$subject [".($i+1)."]"); $mail->set("From", $from); my $body = $mail->open('sendmail'); print $body $out_message[$i]; $body->close; sleep(1); } # end for } # end if } # end send_message() 1;