-
Notifications
You must be signed in to change notification settings - Fork 1
/
flowroute-sms-email-only.pl
70 lines (62 loc) · 1.44 KB
/
flowroute-sms-email-only.pl
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/usr/bin/env perl
#
# Author: Fred Posner <fred@qxork.com>
# Twitter: @fredposner
# Contact: http://qxork.com
# Date: 2016-03-18
# Copyright: The Palner Group, Inc.
# License: GPLv3
#
use strict;
use warnings;
#
# need CGI, JSON,
# MIME::LITE for email,
#
use CGI ();
use JSON ();
use MIME::Lite;
#
# Declare variables
#
my ($status, $input);
#
# Where do you want to send the email?
#
my $email = "ME\@MYDOMAIN.ORG";
#
# receive and parse POSTDATA
#
my $q = CGI->new;
my $json = JSON->new->utf8;
if ($q->param('POSTDATA')) {
$input = $json->decode( $q->param('POSTDATA') );
} else {
&SimpleJSONResponse("error","no JSON data found");
exit(0);
}
unless (($input->{to}) && ($input->{from}) && ($input->{body}) && ($input->{id})) {
#
# if we don't get the required fields from flowroute,
# return an error
#
&SimpleJSONResponse("error","required fields not present");
} else {
my $msg = MIME::Lite->new(
From => "sms-no-reply\@DOMAIN",
To => $email,
Subject => "SMS Received",
Data => "Sent to: " . $input->{to} . "\n\nSent from: " . $input->{from} . "\n\nSMS: " . $input->{body} . "\n\n"
);
MIME::Lite->send('smtp','localhost',Timeout=>60);
$msg->send;
&SimpleJSONResponse("success","message sent to $email");
}
#
# Subroutines
#
sub SimpleJSONResponse() {
my($key, $value) = @_;
print $q->header(-type => "application/json", -charset => "utf-8");
print $json->encode({ $key => $value });
}