smsonrails 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (101) hide show
  1. data/.gitignore +2 -0
  2. data/MIT-LICENSE +20 -0
  3. data/Manifest +101 -0
  4. data/README.rdoc +211 -0
  5. data/Rakefile +109 -0
  6. data/app/controllers/admin/sms_on_rails/base_controller.rb +11 -0
  7. data/app/controllers/admin/sms_on_rails/drafts_controller.rb +75 -0
  8. data/app/controllers/admin/sms_on_rails/outbounds_controller.rb +117 -0
  9. data/app/controllers/admin/sms_on_rails/phone_carriers_controller.rb +85 -0
  10. data/app/controllers/admin/sms_on_rails/phone_numbers_controller.rb +101 -0
  11. data/app/controllers/sms_on_rails/creation_support.rb +99 -0
  12. data/app/controllers/sms_on_rails_controller.rb +14 -0
  13. data/app/helpers/admin/sms_on_rails/drafts_helper.rb +2 -0
  14. data/app/helpers/admin/sms_on_rails/phone_carriers_helper.rb +2 -0
  15. data/app/helpers/sms_on_rails/phone_numbers_helper.rb +9 -0
  16. data/app/helpers/sms_on_rails/sms_helper.rb +44 -0
  17. data/app/models/sms_on_rails/draft.rb +9 -0
  18. data/app/models/sms_on_rails/outbound.rb +17 -0
  19. data/app/models/sms_on_rails/phone_carrier.rb +14 -0
  20. data/app/models/sms_on_rails/phone_number.rb +8 -0
  21. data/app/views/admin/sms_on_rails/base/index.html.erb +5 -0
  22. data/app/views/admin/sms_on_rails/drafts/_show.html.erb +34 -0
  23. data/app/views/admin/sms_on_rails/drafts/edit.html.erb +36 -0
  24. data/app/views/admin/sms_on_rails/drafts/index.html.erb +32 -0
  25. data/app/views/admin/sms_on_rails/drafts/new.html.erb +34 -0
  26. data/app/views/admin/sms_on_rails/drafts/send_sms.html.erb +3 -0
  27. data/app/views/admin/sms_on_rails/drafts/show.html.erb +4 -0
  28. data/app/views/admin/sms_on_rails/outbounds/edit.html.erb +68 -0
  29. data/app/views/admin/sms_on_rails/outbounds/index.html.erb +37 -0
  30. data/app/views/admin/sms_on_rails/outbounds/new.html.erb +54 -0
  31. data/app/views/admin/sms_on_rails/outbounds/show.html.erb +69 -0
  32. data/app/views/admin/sms_on_rails/phone_carriers/edit.html.erb +24 -0
  33. data/app/views/admin/sms_on_rails/phone_carriers/index.html.erb +24 -0
  34. data/app/views/admin/sms_on_rails/phone_carriers/new.html.erb +22 -0
  35. data/app/views/admin/sms_on_rails/phone_carriers/show.html.erb +24 -0
  36. data/app/views/admin/sms_on_rails/phone_numbers/edit.html.erb +33 -0
  37. data/app/views/admin/sms_on_rails/phone_numbers/index.html.erb +28 -0
  38. data/app/views/admin/sms_on_rails/phone_numbers/new.html.erb +31 -0
  39. data/app/views/admin/sms_on_rails/phone_numbers/show.html.erb +32 -0
  40. data/app/views/layouts/sms_on_rails/basic.html.erb +26 -0
  41. data/app/views/sms_on_rails/_phone_carrier_form_item.html.erb +6 -0
  42. data/app/views/sms_on_rails/_send_sms.html.erb +33 -0
  43. data/app/views/sms_on_rails/index.html.erb +8 -0
  44. data/app/views/sms_on_rails/send_sms.html.erb +3 -0
  45. data/app/views/sms_on_rails/show.html.erb +29 -0
  46. data/config/routes.rb +19 -0
  47. data/db/data/fixtures/sms_phone_carriers.yml +110 -0
  48. data/db/migrate/sms_on_rails_carrier_tables.rb +9 -0
  49. data/db/migrate/sms_on_rails_model_tables.rb +48 -0
  50. data/db/migrate/sms_on_rails_phone_number_tables.rb +11 -0
  51. data/db/seed_data.rb +16 -0
  52. data/generators/sms_on_rails/USAGE +31 -0
  53. data/generators/sms_on_rails/commands/inserts.rb +63 -0
  54. data/generators/sms_on_rails/commands/timestamps.rb +33 -0
  55. data/generators/sms_on_rails/runners/add_all_models.rb +6 -0
  56. data/generators/sms_on_rails/runners/dependencies.rb +1 -0
  57. data/generators/sms_on_rails/runners/remove_all_models.rb +5 -0
  58. data/generators/sms_on_rails/runners/sms_on_rails_routes.rb +14 -0
  59. data/generators/sms_on_rails/sms_on_rails_generator.rb +255 -0
  60. data/generators/sms_on_rails/templates/configuration/clickatell.rb +6 -0
  61. data/generators/sms_on_rails/templates/configuration/email_gateway.rb +7 -0
  62. data/generators/sms_on_rails/templates/migrate/schema_migration.rb +15 -0
  63. data/generators/sms_on_rails/templates/migrate/sms_on_rails_update_phone_numbers.rb +40 -0
  64. data/generators/sms_on_rails/templates/phone_number_collision.rb +2 -0
  65. data/init.rb +3 -0
  66. data/install.rb +1 -0
  67. data/lib/sms_on_rails.rb +10 -0
  68. data/lib/sms_on_rails/activerecord_extensions/acts_as_deliverable.rb +92 -0
  69. data/lib/sms_on_rails/activerecord_extensions/acts_as_substitutable.rb +80 -0
  70. data/lib/sms_on_rails/activerecord_extensions/has_a_sms_service_provider.rb +101 -0
  71. data/lib/sms_on_rails/activerecord_extensions/lockable_record.rb +186 -0
  72. data/lib/sms_on_rails/all_models.rb +3 -0
  73. data/lib/sms_on_rails/model_support/draft.rb +178 -0
  74. data/lib/sms_on_rails/model_support/outbound.rb +136 -0
  75. data/lib/sms_on_rails/model_support/phone_carrier.rb +77 -0
  76. data/lib/sms_on_rails/model_support/phone_number.rb +248 -0
  77. data/lib/sms_on_rails/model_support/phone_number_associations.rb +13 -0
  78. data/lib/sms_on_rails/schema_helper.rb +51 -0
  79. data/lib/sms_on_rails/service_providers/base.rb +222 -0
  80. data/lib/sms_on_rails/service_providers/clickatell.rb +52 -0
  81. data/lib/sms_on_rails/service_providers/dummy.rb +19 -0
  82. data/lib/sms_on_rails/service_providers/email_gateway.rb +68 -0
  83. data/lib/sms_on_rails/service_providers/email_gateway_support/errors.rb +20 -0
  84. data/lib/sms_on_rails/service_providers/email_gateway_support/sms_mailer.rb +21 -0
  85. data/lib/sms_on_rails/service_providers/email_gateway_support/sms_mailer/sms_through_gateway.erb +6 -0
  86. data/lib/sms_on_rails/util/sms_error.rb +12 -0
  87. data/lib/smsonrails.rb +1 -0
  88. data/public/images/sms_on_rails/railsYoDawg.jpg +0 -0
  89. data/public/stylesheets/sms_on_rails.css +137 -0
  90. data/tasks/sms_on_rails_tasks.rake +67 -0
  91. data/test/active_record_extensions/delivery_and_locking_test.rb +84 -0
  92. data/test/models/draft_test.rb +72 -0
  93. data/test/models/outbound_test.rb +89 -0
  94. data/test/models/phone_number_test.rb +131 -0
  95. data/test/run.rb +19 -0
  96. data/test/service_providers/abstract_test_support.rb +104 -0
  97. data/test/service_providers/clickatell_test.rb +37 -0
  98. data/test/service_providers/email_gateway_test.rb +30 -0
  99. data/test/test_helper.rb +24 -0
  100. data/uninstall.rb +1 -0
  101. metadata +201 -0
@@ -0,0 +1,69 @@
1
+ <p>
2
+ <b>Id:</b>
3
+ <%= h @outbound.id %>
4
+ </p>
5
+
6
+ <p>
7
+ <b>Status:</b>
8
+ <%=h @outbound.status %>
9
+ </p>
10
+
11
+ <% if @outbound.delivered? %>
12
+ <p>
13
+ <b>Message</b>
14
+ <%=h @outbound.actual_message %>
15
+ </p>
16
+ <% end %>
17
+
18
+ <p>
19
+ <b>Notes:</b>
20
+ <%=h @outbound.notes %>
21
+ </p>
22
+
23
+ <p>
24
+ <b>Procesed on:</b>
25
+ <%=h @outbound.processed_on %>
26
+ </p>
27
+
28
+ <p>
29
+ <b>Sms service provider:</b>
30
+ <%=h @outbound.sms_service_provider.human_name if @outbound.sms_service_provider %>
31
+ </p>
32
+
33
+ <p>
34
+ <b>Created at:</b>
35
+ <%=h @outbound.created_at %>
36
+ </p>
37
+
38
+ <p>
39
+ <b>Retry count:</b>
40
+ <%=h @outbound.retry_count %>
41
+ </p>
42
+
43
+ <p>
44
+ <b>Sub status:</b>
45
+ <%=h @outbound.sub_status %>
46
+ </p>
47
+
48
+ <p>
49
+ <b>Options:</b>
50
+ <%=h @outbound.options %>
51
+ </p>
52
+
53
+ <p>
54
+ <b>Send priority:</b>
55
+ <%=h @outbound.send_priority %>
56
+ </p>
57
+
58
+ <p>
59
+ <b>Draft:</b>
60
+ <%= link_to_sms_draft(@outbound.draft) %>
61
+ </p>
62
+
63
+ <p>
64
+ <b>Phone number:</b>
65
+ <%= link_to_sms_phone_number(@outbound.phone_number) %>
66
+ </p>
67
+
68
+ <%= link_to 'Edit', edit_sms_draft_outbound_path(@outbound.draft, @outbound) %> |
69
+ <%= link_to 'Back', sms_draft_outbounds_path(@outbound.draft) %>
@@ -0,0 +1,24 @@
1
+ <h1>Editing phone carrier</h1>
2
+
3
+ <% form_for(:phone_carrier, @phone_carrier, :url => sms_phone_carrier_path(@phone_carrier), :html => {:method => :put}) do |f| %>
4
+ <%= f.error_messages %>
5
+
6
+ <p>
7
+ <%= f.label :name %><br />
8
+ <%= f.text_field :name %>
9
+ </p>
10
+ <p>
11
+ <%= f.label :email_domain %><br />
12
+ <%= f.text_field :email_domain %>
13
+ </p>
14
+ <p>
15
+ <%= f.label :options %><br />
16
+ <%= f.text_field :options %>
17
+ </p>
18
+ <p>
19
+ <%= f.submit 'Update' %>
20
+ </p>
21
+ <% end %>
22
+
23
+ <%= link_to 'Show', sms_phone_carrier_path(@phone_carrier) %> |
24
+ <%= link_to 'Back', sms_phone_carriers_path %>
@@ -0,0 +1,24 @@
1
+ <h1>SMS Phone Carriers</h1>
2
+
3
+ <table>
4
+ <tr>
5
+ <th class="short">Id</th>
6
+ <th class="long">Name</th>
7
+ <th class="long">Email domain</th>
8
+ <th>Options</th>
9
+ </tr>
10
+
11
+ <% staggered_table_rows(@phone_carriers) do |phone_carrier| %>
12
+ <td><%=h phone_carrier.id %></td>
13
+ <td><%=h phone_carrier.name %></td>
14
+ <td><%=h phone_carrier.email_domain %></td>
15
+ <td><%=h phone_carrier.options %></td>
16
+ <td><%= link_to 'Show', sms_phone_carrier_path(phone_carrier) %></td>
17
+ <td><%= link_to 'Edit', edit_sms_phone_carrier_path(phone_carrier) %></td>
18
+ <td><%= link_to 'Destroy', sms_phone_carrier_path(phone_carrier), :confirm => 'Are you sure?', :method => :delete %></td>
19
+ <% end %>
20
+ </table>
21
+
22
+ <br />
23
+
24
+ <%= link_to 'New phone carrier', new_sms_phone_carrier_path %>
@@ -0,0 +1,22 @@
1
+ <h1>New phone carrier</h1>
2
+ <% form_for(:phone_carrier, @phone_carrier, :url => sms_phone_carriers_path ) do |f| %>
3
+ <%= f.error_messages %>
4
+
5
+ <p>
6
+ <%= f.label :name %><br />
7
+ <%= f.text_field :name %>
8
+ </p>
9
+ <p>
10
+ <%= f.label :email_domain %><br />
11
+ <%= f.text_field :email_domain %>
12
+ </p>
13
+ <p>
14
+ <%= f.label :options %><br />
15
+ <%= f.text_field :options %>
16
+ </p>
17
+ <p>
18
+ <%= f.submit 'Create' %>
19
+ </p>
20
+ <% end %>
21
+
22
+ <%= link_to 'Back', sms_phone_carriers_path %>
@@ -0,0 +1,24 @@
1
+ <h1>Carrier: <%=h @phone_carrier.name %></h1>
2
+ <p>
3
+ <b>Id:</b>
4
+ <%= h @phone_carrier.id %>
5
+ </p>
6
+
7
+ <p>
8
+ <b>Name:</b>
9
+ <%=h @phone_carrier.name %>
10
+ </p>
11
+
12
+ <p>
13
+ <b>Email domain:</b>
14
+ <%=h @phone_carrier.email_domain %>
15
+ </p>
16
+
17
+ <p>
18
+ <b>Options:</b>
19
+ <%=h @phone_carrier.options %>
20
+ </p>
21
+
22
+
23
+ <%= link_to 'Edit', edit_sms_phone_carrier_path(@phone_carrier) %> |
24
+ <%= link_to 'Back', sms_phone_carriers_path %>
@@ -0,0 +1,33 @@
1
+ <h1>Editing Phone Number</h1>
2
+
3
+ <% form_for(:phone_number, @phone_number, :url => sms_phone_number_path, :html => {:method => :put}) do |f| %>
4
+ <%= f.error_messages %>
5
+
6
+ <p>
7
+ <%= f.label :number %><br />
8
+ <%= f.text_field :number, :value => @phone_number.human_display %>
9
+ </p>
10
+ <p>
11
+ <%= f.label :carrier_id, 'Phone Carrier' %><br />
12
+ <%= phone_carriers_collection_select(f) %>
13
+ </p>
14
+ <p>
15
+ <%= f.label :country_code %><br />
16
+ <%= f.text_field :country_code %>
17
+ </p>
18
+ <p>
19
+ <%= f.label :do_not_send %><br />
20
+ <%= f.select :do_not_send, ['bounce', 'abuse', 'opt out', 'other'] %>
21
+ </p>
22
+ <p>
23
+ <%= f.label :white_list %><br />
24
+ <%= f.check_box :white_list %>
25
+ </p>
26
+
27
+ <p>
28
+ <%= f.submit 'Update' %>
29
+ </p>
30
+ <% end %>
31
+
32
+ <%= link_to 'Show', sms_phone_number_path(:id => @phone_number) %> |
33
+ <%= link_to 'Back', sms_phone_numbers_path %>
@@ -0,0 +1,28 @@
1
+ <h1>Phone Numbers</h1>
2
+
3
+ <table>
4
+ <tr>
5
+ <th class="short">Id</th>
6
+ <th class="long">Number</th>
7
+ <th>Carrier</th>
8
+ <th>Country code</th>
9
+ <th>Do Not Send</th>
10
+ <th>White List</th>
11
+ </tr>
12
+
13
+ <% staggered_table_rows(@phone_numbers) do |phone_number| %>
14
+ <td><%=h phone_number.id %></td>
15
+ <td><%=h phone_number.human_display %></td>
16
+ <td><%= phone_number_carrier_link(phone_number) %></td>
17
+ <td><%=h phone_number.country_code %></td>
18
+ <td><%=h phone_number.do_not_send %></td>
19
+ <td><%=h phone_number.white_list? %></td>
20
+ <td><%= link_to 'Show', sms_phone_number_path(:id => phone_number)%></td>
21
+ <td><%= link_to 'Edit', edit_sms_phone_number_path(phone_number) %></td>
22
+ <td><%= link_to 'Destroy', sms_phone_number_path(:id => phone_number), :confirm => 'Are you sure?', :method => :delete %></td>
23
+ <% end %>
24
+ </table>
25
+
26
+ <br />
27
+
28
+ <%= link_to 'New phone number', new_sms_phone_number_path %>
@@ -0,0 +1,31 @@
1
+ <h1>New Phone Number</h1>
2
+
3
+ <% form_for(:phone_number, @phone_number, :url => sms_phone_numbers_path) do |f| %>
4
+ <%= f.error_messages %>
5
+
6
+ <p>
7
+ <%= f.label :number %><br />
8
+ <%= f.text_field :number %>
9
+ </p>
10
+ <p>
11
+ <%= f.label :carrier_id, 'Phone Carrier' %><br />
12
+ <%= phone_carriers_collection_select(f) %>
13
+ </p>
14
+ <p>
15
+ <%= f.label :country_code %><br />
16
+ <%= f.text_field :country_code %>
17
+ </p>
18
+ <p>
19
+ <%= f.label :do_not_send %><br />
20
+ <%= f.select :do_not_send, ['bounce', 'abuse', 'opt_out', 'other'], :include_blank => true %>
21
+ </p>
22
+ <p>
23
+ <%= f.label :white_list %><br />
24
+ <%= f.check_box :white_list %>
25
+ </p>
26
+ <p>
27
+ <%= f.submit 'Create' %>
28
+ </p>
29
+ <% end %>
30
+
31
+ <%= link_to 'Back', sms_phone_numbers_path %>
@@ -0,0 +1,32 @@
1
+ <h1>Phone Number <%=h @phone_number.human_display %></h1>
2
+ <p>
3
+ <b>Id:</b>
4
+ <%= h @phone_number.id %>
5
+ </p>
6
+ <p>
7
+ <b>Number:</b>
8
+ <%=h @phone_number.human_display %>
9
+ </p>
10
+
11
+ <p>
12
+ <b>Carrier:</b>
13
+ <%= phone_number_carrier_link @phone_number %>
14
+ </p>
15
+
16
+ <p>
17
+ <b>Country code:</b>
18
+ <%=h @phone_number.country_code %>
19
+ </p>
20
+
21
+ <p>
22
+ <b>Do Not Send:</b>
23
+ <%=h @phone_number.do_not_send %>
24
+ </p>
25
+
26
+ <p>
27
+ <b>White List:</b>
28
+ <%=h @phone_number.white_list %>
29
+ </p>
30
+
31
+ <%= link_to 'Edit', edit_sms_phone_number_path(@phone_number) %> |
32
+ <%= link_to 'Back', sms_phone_numbers_path %>
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+
4
+ <!-- SMS On Rails is brought to you by snowgiraffe under the MIT License
5
+ Sms On Rails is martiniware. Buy yourself a martini if you like this software. -->
6
+
7
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
8
+
9
+ <head>
10
+ <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
11
+ <title>
12
+ <% if controller.class.name =~ /^Admin/ %>
13
+ Sms On Rails Admin
14
+ <% else %>
15
+ Sms
16
+ <% end %>
17
+ </title>
18
+ <%= stylesheet_link_tag 'sms_on_rails' %>
19
+ </head>
20
+ <body>
21
+ <div class="smsOnRailsHtml">
22
+ <p class="smsFlashNotice"><%= flash[:notice] %></p>
23
+ <%= yield %>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,6 @@
1
+ <% if requires_phone_carrier? %>
2
+ <p>
3
+ <%= phone_form.label :carrier_id, 'Phone Carrier' %><br />
4
+ <%= phone_carriers_collection_select(phone_form) %>
5
+ </p>
6
+ <% end %>
@@ -0,0 +1,33 @@
1
+ <% form_for(:draft, @draft, :url => send_sms_form_url) do |f| %>
2
+ <%= f.error_messages %>
3
+
4
+ <p>
5
+ <%= f.label :message %><br />
6
+ <%= f.text_area :message, :rows => 4 %>
7
+ </p>
8
+
9
+ <% f.fields_for :outbounds do |outbound_form| %>
10
+ <% outbound_form.fields_for :phone_number do |phone_form| %>
11
+ <p>
12
+ <%= phone_form.label :number, 'Phone Number' %>
13
+ <%= phone_form.text_field :number, :value => (phone_form.object.human_display if phone_form.object) %>
14
+ </p>
15
+ <%= render :partial => '/sms_on_rails/phone_carrier_form_item', :locals => {:phone_form => phone_form } %>
16
+ <% end %>
17
+
18
+ <% unless outbound_form.object.new_record? %>
19
+ <%= outbound_form.check_box '_delete' %>
20
+ <%= outbound_form.label '_delete', 'Remove' %>
21
+ <% end %>
22
+
23
+ <% end %>
24
+
25
+ <p>
26
+ <%= f.label :deliver_after %><br />
27
+ <%= f.datetime_select :deliver_after, :include_blank => true %>
28
+ </p>
29
+
30
+ <p>
31
+ <%= f.submit 'Send Sms' %>
32
+ </p>
33
+ <% end %>
@@ -0,0 +1,8 @@
1
+
2
+ <h1> SMS On Rails </h1>
3
+
4
+ <%= image_tag "sms_on_rails/railsYoDawg.jpg", :class => 'smsOnRailsImage' %>
5
+ <br />
6
+ <%= link_to 'Send SMS', new_sms_path %>
7
+ <br/>
8
+ <%= link_to 'Administer SMS', sms_admin_path %>
@@ -0,0 +1,3 @@
1
+ <h1> Send an SMS</h1>
2
+ <%= render :partial => '/sms_on_rails/send_sms.html' %>
3
+ <%= link_to 'Sms Home', sms_index_path %>
@@ -0,0 +1,29 @@
1
+
2
+ <p>
3
+ <b>Message:</b>
4
+ <%=h @draft.actual_message %>
5
+ </p>
6
+
7
+ <p>
8
+ <b>Status:</b>
9
+ <%=h @draft.status %>
10
+ </p>
11
+
12
+ <p>
13
+ <b>Deliver after:</b>
14
+ <%=h @draft.deliver_after %>
15
+ </p>
16
+
17
+ <p>
18
+ <b>Delivery date:</b>
19
+ <%=h @draft.delivery_date %>
20
+ </p>
21
+
22
+ <p>
23
+ <b> Phone Numbers: </b><br>
24
+ <% @draft.outbounds.each do |outbound| %>
25
+ <%= outbound.phone_number.human_display %><br>
26
+ <% end %>
27
+ </p>
28
+
29
+ <%= link_to 'Send More SMS Messages', new_sms_path %>
data/config/routes.rb ADDED
@@ -0,0 +1,19 @@
1
+ ActionController::Routing::Routes.draw do |map|
2
+
3
+ #Resources for sms on rails admin routes
4
+ #url: localhost:3000/admin/sms/drafts goes to the app/controllers/admin/sms_on_rails/draft_controller.rb
5
+
6
+ map.resources :sms_drafts, :new => {:send_sms => :any}, :as => 'admin/sms/drafts', :controller => 'admin/sms_on_rails/drafts' do |draft|
7
+ draft.resources :outbounds, :collection => {:deliver_sms => :any}, :controller => 'admin/sms_on_rails/outbounds'
8
+ end
9
+
10
+ map.resources :sms_drafts, :collection => {:send_sms => :any}, :as => 'admin/sms/drafts', :controller => 'admin/sms_on_rails/drafts'
11
+
12
+ map.resources :sms_phone_numbers, :as => 'admin/sms/phone_numbers', :controller => 'admin/sms_on_rails/phone_numbers'
13
+ map.resources :sms_phone_carriers, :as => 'admin/sms/phone_carriers', :controller => 'admin/sms_on_rails/phone_carriers'
14
+
15
+ map.resources :sms, :as => 'sms', :controller => 'sms_on_rails', :only => [:create, :show, :new, :index], :singular => 'sms'
16
+
17
+ map.sms_admin '/admin/sms', :controller => 'admin/sms_on_rails/base', :action => 'index'
18
+
19
+ end#end sms routeM
@@ -0,0 +1,110 @@
1
+ carrier_1:
2
+ id: "1"
3
+ name: Verizon
4
+ email_domain: "vtext.com"
5
+
6
+ carrier_2:
7
+ id: "2"
8
+ name: Alltel
9
+ email_domain: "message.alltel.com"
10
+
11
+ carrier_3:
12
+ id: "3"
13
+ name: Cingular mmode
14
+ email_domain: "mmode.com"
15
+ notes: "formerly AT&T, then Cingular, now AT&T Wireless - Original grandfathered rateplan customers"
16
+
17
+ carrier_4:
18
+ id: "4"
19
+ name: Cellular One
20
+ email_domain: "mobile.celloneusa.com"
21
+
22
+ carrier_5:
23
+ id: "5"
24
+ name: AT&T
25
+ email_domain: "txt.att.net"
26
+
27
+ carrier_6:
28
+ id: "6"
29
+ name: Nextel
30
+ email_domain: "page.nextel.com"
31
+
32
+ carrier_7:
33
+ id: "7"
34
+ name: OmnipointPCS
35
+ email_domain: "omnipointpcs.com"
36
+
37
+ carrier_8:
38
+ id: "8"
39
+ name: Qwest
40
+ email_domain: "qwestmp.com"
41
+
42
+ carrier_9:
43
+ id: "9"
44
+ name: Sprint
45
+ email_domain: "messaging.sprintpcs.com"
46
+
47
+ carrier_10:
48
+ id: "10"
49
+ name: T-Mobile
50
+ email_domain: "tmomail.net"
51
+
52
+ carrier_11:
53
+ id: "11"
54
+ name: Virgin Mobile
55
+ email_domain: "vmobl.com"
56
+
57
+ carrier_12:
58
+ id: "12"
59
+ name: US Cellular
60
+ email_domain: "email.uscc.com"
61
+
62
+ carrier_13:
63
+ id: "13"
64
+ name: Amp'd
65
+ email_domain: "ampdpix.com"
66
+
67
+ carrier_14:
68
+ id: 14
69
+ name: AT&T Formerly Cingular
70
+ email_domain: "cingularme.com"
71
+
72
+ carrier_15:
73
+ id: 15
74
+ name: AT&T Formerly Cingular MMS
75
+ email_domain: "mms.att.net"
76
+
77
+ carrier_16:
78
+ id: 16
79
+ name: Alaska Communications Systems
80
+ email_domain: "msg.acsalaska.com"
81
+
82
+ carrier_17:
83
+ id: 17
84
+ name: AT&T Enterprise Paging
85
+ email_domain: "number@page.att.net"
86
+
87
+ carrier_18:
88
+ id: 22
89
+ name: MetroPCS
90
+ email_domain: "mymetropcs.com"
91
+
92
+ carrier_19:
93
+ id: 19
94
+ name: Plateau Wireless
95
+ email_domain: "smsx.plateaugsm.com"
96
+
97
+ carrier_20:
98
+ id: 20
99
+ name: 7-11 Speakout
100
+ email_domain: "cingularme.com"
101
+
102
+ carrier_21:
103
+ id: 21
104
+ name: Cricket
105
+ email_domain: "sms.mycricket.com"
106
+
107
+
108
+
109
+
110
+