openrain-action_mailer_tls 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +6 -0
- data/README.markdown +82 -0
- data/VERSION.yml +4 -0
- data/generators/USAGE +16 -0
- data/generators/action_mailer_tls_generator.rb +11 -0
- data/generators/templates/config/initializers/smtp_gmail.rb +14 -0
- data/generators/templates/config/smtp_gmail.yml.sample +3 -0
- data/lib/smtp_tls.rb +65 -0
- metadata +64 -0
data/History.txt
ADDED
data/README.markdown
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
ActionMailerTLS
|
2
|
+
===============
|
3
|
+
|
4
|
+
Background
|
5
|
+
----------
|
6
|
+
|
7
|
+
This Ruby on Rails plugin makes it trivial to send email through a Google Apps for business account.
|
8
|
+
|
9
|
+
This gem will only work on Ruby 1.8.6.
|
10
|
+
|
11
|
+
Installation
|
12
|
+
------------
|
13
|
+
|
14
|
+
If you're on Ruby 1.8.7 and Rails >= 2.2.1, you don't need this plugin. See Notes below.
|
15
|
+
|
16
|
+
To install the gem (the preferred way):
|
17
|
+
|
18
|
+
1. sudo gem install openrain-action_mailer_tls -s http://gems.github.com
|
19
|
+
2. ./script/generate action_mailer_tls
|
20
|
+
3. Copy RAILS_ROOT/config/smtp_gmail.yml.sample to RAILS_ROOT/config/smtp_gmail.yml
|
21
|
+
4. Update the configuration file with your settings
|
22
|
+
|
23
|
+
To (optionally) vendor this gem
|
24
|
+
1. Add config.gem "openrain-action_mailer_tls", :source => "http://gems.github.com"
|
25
|
+
2. rake gems:unpack
|
26
|
+
|
27
|
+
To install the plugin (the old way)
|
28
|
+
|
29
|
+
1. ./script/plugin install git://github.com/openrain/action_mailer_tls.git -r '1.0.0'
|
30
|
+
2. Copy vendor/plugins/action_mailer_tls/sample/smtp_gmail.rb to config/
|
31
|
+
3. Copy vendor/plugins/action_mailer_tls/sample/mailer.yml.sample to config/
|
32
|
+
4. Update the configuration file with your settings
|
33
|
+
|
34
|
+
Testing it out
|
35
|
+
--------------
|
36
|
+
|
37
|
+
1. ./script/generate mailer Notifier hello_world
|
38
|
+
2. Add the following lines to config/environments/development.rb
|
39
|
+
config.action_mailer.raise_delivery_errors = true
|
40
|
+
config.action_mailer.perform_deliveries = true
|
41
|
+
config.action_mailer.delivery_method = :smtp
|
42
|
+
3. Update the recipients and from fields in app/models/notifier.rb
|
43
|
+
4. ./script/console
|
44
|
+
5. >> Notifier.deliver_hello_world!
|
45
|
+
|
46
|
+
Resources
|
47
|
+
---------
|
48
|
+
|
49
|
+
Blog posts
|
50
|
+
|
51
|
+
* http://www.rubyinside.com/how-to-use-gmails-smtp-server-with-rails-394.html
|
52
|
+
* http://www.prestonlee.com/archives/63
|
53
|
+
|
54
|
+
Books
|
55
|
+
|
56
|
+
* Advanced Rails Recipes pg. 238, Recipe #47.
|
57
|
+
|
58
|
+
Notes
|
59
|
+
-----
|
60
|
+
|
61
|
+
If you're running Rails >= 2.2.1 [RC2] and Ruby 1.8.7, you don't need this plugin. Ruby 1.8.7 supports
|
62
|
+
SMTP TLS and Rails 2.2.1 ships with an option to enable it if you're running Ruby 1.8.7.
|
63
|
+
|
64
|
+
To set it all up, in config/initializers/smtp_gmail.rb:
|
65
|
+
ActionMailer::Base.smtp_settings = {
|
66
|
+
:address => "smtp.gmail.com",
|
67
|
+
:port => 587,
|
68
|
+
:authentication => :plain,
|
69
|
+
:enable_starttls_auto => true
|
70
|
+
:user_name: your_username@gmail.com
|
71
|
+
:password: h@ckme
|
72
|
+
}
|
73
|
+
|
74
|
+
http://github.com/rails/rails/commit/732c724df61bc8b780dc42817625b25a321908e4
|
75
|
+
|
76
|
+
Author
|
77
|
+
------
|
78
|
+
* Marc Chung - marc [dot] chung [at] openrain [dot] com
|
79
|
+
|
80
|
+
License
|
81
|
+
-------
|
82
|
+
* Copyright (c) 2009 OpenRain, LLC. See MIT-LICENSE for details
|
data/VERSION.yml
ADDED
data/generators/USAGE
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
Description:
|
2
|
+
The action_mailer_tls generator adds smtp-tls support to your Rails projects.
|
3
|
+
|
4
|
+
The generator takes no arguments and only needs to be run once. It will create
|
5
|
+
a Rails initializer for Gmail, and a sample YAML configuration file.
|
6
|
+
|
7
|
+
Modify the contents of the configuration file with your Gmail username and
|
8
|
+
password
|
9
|
+
|
10
|
+
Example:
|
11
|
+
./script/generate action_mailer_tls
|
12
|
+
|
13
|
+
This will create the following files:
|
14
|
+
Initializer: config/initializers/smtp_gmail.rb
|
15
|
+
Config: config/smtp_gmail.yml.sample
|
16
|
+
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# This generator intalls ActionMailerTLS into a Rails project
|
2
|
+
class ActionMailerTlsGenerator < Rails::Generator::Base
|
3
|
+
|
4
|
+
def manifest
|
5
|
+
record do |m|
|
6
|
+
m.file "config/smtp_gmail.yml.sample", "config/smtp_gmail.yml.sample"
|
7
|
+
m.file "config/initializers/smtp_gmail.rb", "config/initializers/smtp_gmail.rb"
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# This file is automatically copied into RAILS_ROOT/initializers
|
2
|
+
|
3
|
+
require "smtp_tls"
|
4
|
+
|
5
|
+
config_file = "#{RAILS_ROOT}/config/smtp_gmail.yml"
|
6
|
+
raise "Sorry, you must have #{config_file}" unless File.exists?(config_file)
|
7
|
+
|
8
|
+
config_options = YAML.load_file(config_file)
|
9
|
+
ActionMailer::Base.smtp_settings = {
|
10
|
+
:address => "smtp.gmail.com",
|
11
|
+
:port => 587,
|
12
|
+
:authentication => :plain,
|
13
|
+
:enable_starttls_auto => true
|
14
|
+
}.merge(config_options) # Configuration options override default options
|
data/lib/smtp_tls.rb
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
require "openssl"
|
2
|
+
require "net/smtp"
|
3
|
+
|
4
|
+
Net::SMTP.class_eval do
|
5
|
+
private
|
6
|
+
def do_start(helodomain, user, secret, authtype)
|
7
|
+
raise IOError, 'SMTP session already started' if @started
|
8
|
+
check_auth_args user, secret, authtype if user or secret
|
9
|
+
|
10
|
+
sock = timeout(@open_timeout) { TCPSocket.open(@address, @port) }
|
11
|
+
@socket = Net::InternetMessageIO.new(sock)
|
12
|
+
@socket.read_timeout = 60 #@read_timeout
|
13
|
+
|
14
|
+
check_response(critical { recv_response() })
|
15
|
+
do_helo(helodomain)
|
16
|
+
|
17
|
+
if starttls
|
18
|
+
raise 'openssl library not installed' unless defined?(OpenSSL)
|
19
|
+
ssl = OpenSSL::SSL::SSLSocket.new(sock)
|
20
|
+
ssl.sync_close = true
|
21
|
+
ssl.connect
|
22
|
+
@socket = Net::InternetMessageIO.new(ssl)
|
23
|
+
@socket.read_timeout = 60 #@read_timeout
|
24
|
+
do_helo(helodomain)
|
25
|
+
end
|
26
|
+
|
27
|
+
authenticate user, secret, authtype if user
|
28
|
+
@started = true
|
29
|
+
ensure
|
30
|
+
unless @started
|
31
|
+
# authentication failed, cancel connection.
|
32
|
+
@socket.close if not @started and @socket and not @socket.closed?
|
33
|
+
@socket = nil
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def do_helo(helodomain)
|
38
|
+
begin
|
39
|
+
if @esmtp
|
40
|
+
ehlo helodomain
|
41
|
+
else
|
42
|
+
helo helodomain
|
43
|
+
end
|
44
|
+
rescue Net::ProtocolError
|
45
|
+
if @esmtp
|
46
|
+
@esmtp = false
|
47
|
+
@error_occured = false
|
48
|
+
retry
|
49
|
+
end
|
50
|
+
raise
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def starttls
|
55
|
+
getok('STARTTLS') rescue return false
|
56
|
+
return true
|
57
|
+
end
|
58
|
+
|
59
|
+
def quit
|
60
|
+
begin
|
61
|
+
getok('QUIT')
|
62
|
+
rescue EOFError
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
metadata
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: openrain-action_mailer_tls
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Marc Chung
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-02-10 00:00:00 -08:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: Conveniently send emails through Google's Hosted App service
|
17
|
+
email: marc.chung@openrain.com
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files: []
|
23
|
+
|
24
|
+
files:
|
25
|
+
- History.txt
|
26
|
+
- README.markdown
|
27
|
+
- VERSION.yml
|
28
|
+
- generators/USAGE
|
29
|
+
- generators/action_mailer_tls_generator.rb
|
30
|
+
- generators/templates
|
31
|
+
- generators/templates/config
|
32
|
+
- generators/templates/config/initializers
|
33
|
+
- generators/templates/config/initializers/smtp_gmail.rb
|
34
|
+
- generators/templates/config/smtp_gmail.yml.sample
|
35
|
+
- lib/smtp_tls.rb
|
36
|
+
has_rdoc: true
|
37
|
+
homepage: http://github.com/openrain/action_mailer_tls
|
38
|
+
post_install_message:
|
39
|
+
rdoc_options:
|
40
|
+
- --inline-source
|
41
|
+
- --charset=UTF-8
|
42
|
+
require_paths:
|
43
|
+
- lib
|
44
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: "0"
|
49
|
+
version:
|
50
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: "0"
|
55
|
+
version:
|
56
|
+
requirements: []
|
57
|
+
|
58
|
+
rubyforge_project:
|
59
|
+
rubygems_version: 1.2.0
|
60
|
+
signing_key:
|
61
|
+
specification_version: 2
|
62
|
+
summary: Send Email via Gmail
|
63
|
+
test_files: []
|
64
|
+
|