lettr 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,14 +1,47 @@
1
1
  # Lettr
2
2
  Deliver your Emails inside your application through the lettr.de API.
3
3
 
4
- ## Usage
5
- There are currently 5 ways of using this gem.
4
+ ## Installation
5
+
6
+ $ gem install lettr
7
+
8
+ If you want to use lettr inside a Rails 2.x application just drop the following line into you config/environment.rb
9
+
10
+ config.gem 'lettr'
11
+
12
+ For Rails 3.x or if you use Bundler drop the following line into your Gemfile:
13
+
14
+ gem 'lettr'
15
+
16
+ NOTE: In a Rails 3 Application you currently cant use Delivery Method nor Lettr::Mailer.
17
+
18
+ ## Configuration
19
+ There are some configuration options you can provide either inside config/environment.rb or config/environments/$RAILS_ENV.rb or create an initializer in config/initializers.
20
+ At least you have to provide your lettr login credentials:
21
+
22
+ config/environment.rb:
23
+ config.after_initialize do
24
+ Lettr.credentials = { :user => 'tea_moe', :pass => 'iwonttellyou' }
25
+ end
26
+
27
+ OR
28
+
29
+ config/initializers/lettr.rb
30
+ Lettr.credentials = { :user => 'tea_moe', :pass => 'iwonttellyou' }
31
+
32
+ Additional configuration options include:
33
+ Lettr.protocol
34
+ Lettr.host
35
+ but for most use cases the defaults are fine, so you dont have to provide them.
36
+
37
+ ## Usage (EMail delivery)
38
+ There are currently several ways of using this gem.
6
39
 
7
40
  ### Delivery Method
8
41
  Just set the Delivery Method of ActionMailer to :lettr, and all Mailings from Action Mailer will be delivered through our API.
9
42
 
10
43
  config.action_mailer.delivery_method = :lettr
11
-
44
+ ### OR
12
45
  ### Lettr::Mailer
13
46
  Let your mailer class inherit from Lettr::Mailer instead of ActionMailer::Base.
14
47
 
@@ -22,10 +55,12 @@ Let your mailer class inherit from Lettr::Mailer instead of ActionMailer::Base.
22
55
  end
23
56
  end
24
57
 
58
+ ### OR
25
59
  ### Manual Mailing
26
60
 
27
61
  Lettr.test_mail(:recipient => 'tg@digineo.de', :subject => 'hi', :test => 'some text', :html => 'some html').deliver
28
62
 
63
+ ### OR
29
64
  ### With templates stored at lettr.de
30
65
 
31
66
  #### and a hash
@@ -33,6 +68,7 @@ Provide a hash containing the variables, that you used in your template.
33
68
 
34
69
  Lettr.test_mail(:test => { :variable_1 => 'foo', :variable_2 => 'bar' }).deliver
35
70
 
71
+ #### OR
36
72
  #### and an object, which responds to :to_nb_hash
37
73
 
38
74
  class TestClass
@@ -45,6 +81,7 @@ Provide a hash containing the variables, that you used in your template.
45
81
 
46
82
  Lettr.test_mail(:test => test_object ).deliver
47
83
 
84
+ #### OR
48
85
  #### automagic
49
86
  If your provided object does not respond to :to_nb_hash, Lettr will try to automatically serialize it based on the variables you used inside your template.
50
87
  Given the following Class Definition:
@@ -91,4 +128,38 @@ It provides a class-level helper method to allow any instance method in your tem
91
128
 
92
129
  In this example the call to :variable_1 will be ok, but the call to :variable_2 will raise an Exception.
93
130
 
131
+ ## Usage (Newsletter Administration)
132
+
133
+ ### Subscribe
134
+ In addition to the EMail delivery functionality this gem provides an easy way to sign your users up for your Newsletters.
135
+ To sign a user up, just call Lettr.sign_up and provide an object which at least responds to an :email method.
136
+
137
+ class User < ActiveRecord::Base
138
+ ...
139
+ after_create do |user|
140
+ if user.wants_spam?
141
+ Lettr.subscribe(user) # calls user.email internally
142
+ end
143
+ end
144
+ ...
145
+ end
146
+
147
+ This will create a Recipient in lettr.de. If the provided object responds to:
148
+
149
+ :gender
150
+ :firstname
151
+ :lastname
152
+ :street
153
+ :ccode
154
+ :pcode
155
+ :city
156
+
157
+ these attributes will also get transmitted to lettr.de.
158
+ If your object doesnt respond to these methods, but you want the information in your Recipients database, make the object respond (for example by delegating).
159
+
160
+ ### Unsubscribe
161
+ To unsubscribe a Recipient, just call Lettr.unsubscribe and provide an email-address as argument.
162
+
163
+ Lettr.unsubscribe('tea_moe@example.com')
164
+
94
165
  Copyright (c) 2010 Digineo GmbH, released under the MIT license
data/Rakefile CHANGED
@@ -27,3 +27,16 @@ Rake::RDocTask.new(:rdoc) do |rdoc|
27
27
  rdoc.rdoc_files.include('README')
28
28
  rdoc.rdoc_files.include('lib/**/*.rb')
29
29
  end
30
+
31
+ desc 'Generate HTML Readme'
32
+ task :readme do
33
+ begin
34
+ require 'rdiscount'
35
+ markdown = RDiscount.new(File.read('README.md'))
36
+ File.open('readme.html', 'w') do |f|
37
+ f.write markdown.to_html
38
+ end
39
+ rescue LoadError
40
+ 'You need eht RDiscount gem'
41
+ end
42
+ end
data/lib/lettr.rb CHANGED
@@ -19,7 +19,7 @@ module Lettr
19
19
  mattr_accessor :api_mailings
20
20
 
21
21
  self.attributes ||= %w{ gender firstname lastname street ccode pcode city }
22
- self.protocol ||= 'https'
22
+ self.protocol ||= 'http'
23
23
  self.host ||= 'www.newsletterboy.de'
24
24
  self.api_mailings = {}
25
25
 
@@ -8,15 +8,24 @@ module Lettr::ActionMailer
8
8
  lettr_request_hash = {}
9
9
  lettr_request_hash[:recipient] = recipient
10
10
  lettr_request_hash[:subject] = mail.subject
11
- mail.parts.each do |part|
12
- case part.content_type
11
+ if mail.parts.empty?
12
+ case mail.content_type
13
13
  when 'text/html'
14
- lettr_request_hash[:html] = part.body
14
+ lettr_request_hash[:html] = mail.body
15
15
  when 'text/plain'
16
- lettr_request_hash[:text] = part.body
17
- else
18
- lettr_request_hash[:attachments] ||= []
19
- lettr_request_hash[:attachments] << part.body
16
+ lettr_request_hash[:text] = mail.body
17
+ end
18
+ else
19
+ mail.parts.each do |part|
20
+ case part.content_type
21
+ when 'text/html'
22
+ lettr_request_hash[:html] = part.body
23
+ when 'text/plain'
24
+ lettr_request_hash[:text] = part.body
25
+ else
26
+ lettr_request_hash[:attachments] ||= []
27
+ lettr_request_hash[:attachments] << part.body
28
+ end
20
29
  end
21
30
  end
22
31
  lettr_request_hashes << lettr_request_hash
@@ -47,6 +47,9 @@ Lettr::ApiMailing = Struct.new(:identifier, :subject, :variables) do
47
47
  # object liefert variablen
48
48
  @hash.merge!( name => object.to_nb_hash)
49
49
  when object.is_a?( String )
50
+ if name.to_s == 'text' || name.to_s == 'html'
51
+ raise ArgumentError.new 'You cannot use Delivery Method, Lettr::Mailer or Manual Mailing with existing identifiers.'
52
+ end
50
53
  @files.merge!( name => File.new(object, 'rb'))
51
54
  else
52
55
  # do magic stuff
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lettr
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 19
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 1
10
- version: 1.0.1
9
+ - 2
10
+ version: 1.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Digineo GmbH
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-11-02 00:00:00 +01:00
18
+ date: 2010-11-04 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency