mail_relay 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.rdoc +73 -0
  3. data/Rakefile +22 -0
  4. data/lib/mail_relay.rb +5 -0
  5. data/lib/mail_relay/base.rb +149 -0
  6. data/lib/mail_relay/version.rb +3 -0
  7. data/spec/base_spec.rb +113 -0
  8. data/spec/coverage/assets/0.7.1/application.css +1110 -0
  9. data/spec/coverage/assets/0.7.1/application.js +626 -0
  10. data/spec/coverage/assets/0.7.1/fancybox/blank.gif +0 -0
  11. data/spec/coverage/assets/0.7.1/fancybox/fancy_close.png +0 -0
  12. data/spec/coverage/assets/0.7.1/fancybox/fancy_loading.png +0 -0
  13. data/spec/coverage/assets/0.7.1/fancybox/fancy_nav_left.png +0 -0
  14. data/spec/coverage/assets/0.7.1/fancybox/fancy_nav_right.png +0 -0
  15. data/spec/coverage/assets/0.7.1/fancybox/fancy_shadow_e.png +0 -0
  16. data/spec/coverage/assets/0.7.1/fancybox/fancy_shadow_n.png +0 -0
  17. data/spec/coverage/assets/0.7.1/fancybox/fancy_shadow_ne.png +0 -0
  18. data/spec/coverage/assets/0.7.1/fancybox/fancy_shadow_nw.png +0 -0
  19. data/spec/coverage/assets/0.7.1/fancybox/fancy_shadow_s.png +0 -0
  20. data/spec/coverage/assets/0.7.1/fancybox/fancy_shadow_se.png +0 -0
  21. data/spec/coverage/assets/0.7.1/fancybox/fancy_shadow_sw.png +0 -0
  22. data/spec/coverage/assets/0.7.1/fancybox/fancy_shadow_w.png +0 -0
  23. data/spec/coverage/assets/0.7.1/fancybox/fancy_title_left.png +0 -0
  24. data/spec/coverage/assets/0.7.1/fancybox/fancy_title_main.png +0 -0
  25. data/spec/coverage/assets/0.7.1/fancybox/fancy_title_over.png +0 -0
  26. data/spec/coverage/assets/0.7.1/fancybox/fancy_title_right.png +0 -0
  27. data/spec/coverage/assets/0.7.1/fancybox/fancybox-x.png +0 -0
  28. data/spec/coverage/assets/0.7.1/fancybox/fancybox-y.png +0 -0
  29. data/spec/coverage/assets/0.7.1/fancybox/fancybox.png +0 -0
  30. data/spec/coverage/assets/0.7.1/favicon_green.png +0 -0
  31. data/spec/coverage/assets/0.7.1/favicon_red.png +0 -0
  32. data/spec/coverage/assets/0.7.1/favicon_yellow.png +0 -0
  33. data/spec/coverage/assets/0.7.1/loading.gif +0 -0
  34. data/spec/coverage/assets/0.7.1/magnify.png +0 -0
  35. data/spec/coverage/assets/0.7.1/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  36. data/spec/coverage/assets/0.7.1/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  37. data/spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  38. data/spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  39. data/spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  40. data/spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  41. data/spec/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  42. data/spec/coverage/assets/0.7.1/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  43. data/spec/coverage/assets/0.7.1/smoothness/images/ui-icons_222222_256x240.png +0 -0
  44. data/spec/coverage/assets/0.7.1/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  45. data/spec/coverage/assets/0.7.1/smoothness/images/ui-icons_454545_256x240.png +0 -0
  46. data/spec/coverage/assets/0.7.1/smoothness/images/ui-icons_888888_256x240.png +0 -0
  47. data/spec/coverage/assets/0.7.1/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  48. data/spec/coverage/index.html +1052 -0
  49. data/spec/fixtures/list.eml +35 -0
  50. data/spec/fixtures/list.eml~ +36 -0
  51. data/spec/fixtures/regular.eml +35 -0
  52. data/spec/fixtures/regular.eml~ +66 -0
  53. data/spec/fixtures/simple.eml +15 -0
  54. data/spec/fixtures/simple.eml~ +15 -0
  55. data/spec/spec_helper.rb +19 -0
  56. metadata +252 -0
@@ -0,0 +1,1052 @@
1
+ <!DOCTYPE html>
2
+ <html xmlns='http://www.w3.org/1999/xhtml'>
3
+ <head>
4
+ <title>Code coverage for Mail relay</title>
5
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
6
+ <script src='./assets/0.7.1/application.js' type='text/javascript'></script>
7
+ <link href='./assets/0.7.1/application.css' media='screen, projection, print' rel='stylesheet' type='text/css'>
8
+ <link rel="shortcut icon" type="image/png" href="./assets/0.7.1/favicon_green.png" />
9
+ <link rel="icon" type="image/png" href="./assets/0.7.1/favicon.png" />
10
+ </head>
11
+
12
+ <body>
13
+ <div id="loading">
14
+ <img src="./assets/0.7.1/loading.gif" alt="loading"/>
15
+ </div>
16
+ <div id="wrapper" style="display:none;">
17
+ <div class="timestamp">Generated <abbr class="timeago" title="2013-02-19T16:30:45+01:00">2013-02-19T16:30:45+01:00</abbr></div>
18
+ <ul class="group_tabs"></ul>
19
+
20
+ <div id="content">
21
+ <div class="file_list_container" id="AllFiles">
22
+ <h2>
23
+ <span class="group_name">All Files</span>
24
+ (<span class="covered_percent"><span class="green">93.65%</span></span>
25
+ covered at
26
+ <span class="covered_strength">
27
+ <span class="green">
28
+ 1.9
29
+ </span>
30
+ </span> hits/line)
31
+ </h2>
32
+ <a name="AllFiles"></a>
33
+ <div>
34
+ <b>2</b> files in total.
35
+ <b>63</b> relevant lines.
36
+ <span class="green"><b>59</b> lines covered</span> and
37
+ <span class="red"><b>4</b> lines missed </span>
38
+ </div>
39
+ <table class="file_list">
40
+ <thead>
41
+ <tr>
42
+ <th>File</th>
43
+ <th>% covered</th>
44
+ <th>Lines</th>
45
+ <th>Relevant Lines</th>
46
+ <th>Lines covered</th>
47
+ <th>Lines missed</th>
48
+ <th>Avg. Hits / Line</th>
49
+ </tr>
50
+ </thead>
51
+ <tbody>
52
+
53
+ <tr>
54
+ <td class="strong"><a href="#81b9ff8fb92e597bd6b892fce5063f6205e4ab58" class="src_link" title="lib/mail_relay.rb">lib/mail_relay.rb</a></td>
55
+ <td class="green strong">100.0 %</td>
56
+ <td>5</td>
57
+ <td>3</td>
58
+ <td>3</td>
59
+ <td>0</td>
60
+ <td>1.0</td>
61
+ </tr>
62
+
63
+ <tr>
64
+ <td class="strong"><a href="#a9f9b6aa77b00f423cec0bce8b68b70ca9fb3191" class="src_link" title="lib/mail_relay/base.rb">lib/mail_relay/base.rb</a></td>
65
+ <td class="green strong">93.33 %</td>
66
+ <td>149</td>
67
+ <td>60</td>
68
+ <td>56</td>
69
+ <td>4</td>
70
+ <td>2.8</td>
71
+ </tr>
72
+
73
+ </tbody>
74
+ </table>
75
+ </div>
76
+
77
+
78
+
79
+ </div>
80
+
81
+ <div id="footer">
82
+ Generated by <a href="http://github.com/colszowka/simplecov">simplecov</a> v0.7.1
83
+ and simplecov-html v0.7.1<br/>
84
+ using RSpec
85
+ </div>
86
+
87
+ <div class="source_files">
88
+
89
+ <div class="source_table" id="81b9ff8fb92e597bd6b892fce5063f6205e4ab58">
90
+ <div class="header">
91
+ <h3>lib/mail_relay.rb</h3>
92
+ <h4><span class="green">100.0 %</span> covered</h4>
93
+ <div>
94
+ <b>3</b> relevant lines.
95
+ <span class="green"><b>3</b> lines covered</span> and
96
+ <span class="red"><b>0</b> lines missed.</span>
97
+ </div>
98
+ </div>
99
+
100
+ <pre>
101
+ <ol>
102
+
103
+ <li class="covered" data-hits="1" data-linenumber="1">
104
+ <span class="hits">1</span>
105
+
106
+ <code class="ruby">require 'mail'</code>
107
+ </li>
108
+
109
+ <li class="covered" data-hits="1" data-linenumber="2">
110
+ <span class="hits">1</span>
111
+
112
+ <code class="ruby">require 'mail_relay/base'</code>
113
+ </li>
114
+
115
+ <li class="never" data-hits="" data-linenumber="3">
116
+
117
+
118
+ <code class="ruby"></code>
119
+ </li>
120
+
121
+ <li class="covered" data-hits="1" data-linenumber="4">
122
+ <span class="hits">1</span>
123
+
124
+ <code class="ruby">module MailRelay</code>
125
+ </li>
126
+
127
+ <li class="never" data-hits="" data-linenumber="5">
128
+
129
+
130
+ <code class="ruby">end</code>
131
+ </li>
132
+
133
+ </ol>
134
+ </pre>
135
+ </div>
136
+
137
+ <div class="source_table" id="a9f9b6aa77b00f423cec0bce8b68b70ca9fb3191">
138
+ <div class="header">
139
+ <h3>lib/mail_relay/base.rb</h3>
140
+ <h4><span class="green">93.33 %</span> covered</h4>
141
+ <div>
142
+ <b>60</b> relevant lines.
143
+ <span class="green"><b>56</b> lines covered</span> and
144
+ <span class="red"><b>4</b> lines missed.</span>
145
+ </div>
146
+ </div>
147
+
148
+ <pre>
149
+ <ol>
150
+
151
+ <li class="covered" data-hits="1" data-linenumber="1">
152
+ <span class="hits">1</span>
153
+
154
+ <code class="ruby">module MailRelay</code>
155
+ </li>
156
+
157
+ <li class="never" data-hits="" data-linenumber="2">
158
+
159
+
160
+ <code class="ruby"> # A generic email relay object. Retrieves messages from a mail server and resends them to a list of recievers.</code>
161
+ </li>
162
+
163
+ <li class="never" data-hits="" data-linenumber="3">
164
+
165
+
166
+ <code class="ruby"> # In subclasses, override the methods #relay_address?, #sender_allowed? and #receivers </code>
167
+ </li>
168
+
169
+ <li class="never" data-hits="" data-linenumber="4">
170
+
171
+
172
+ <code class="ruby"> # to constrain which mails are sent to whom.</code>
173
+ </li>
174
+
175
+ <li class="covered" data-hits="1" data-linenumber="5">
176
+ <span class="hits">1</span>
177
+
178
+ <code class="ruby"> class Base</code>
179
+ </li>
180
+
181
+ <li class="never" data-hits="" data-linenumber="6">
182
+
183
+
184
+ <code class="ruby"> </code>
185
+ </li>
186
+
187
+ <li class="covered" data-hits="1" data-linenumber="7">
188
+ <span class="hits">1</span>
189
+
190
+ <code class="ruby"> class &lt;&lt; self</code>
191
+ </li>
192
+
193
+ <li class="never" data-hits="" data-linenumber="8">
194
+
195
+
196
+ <code class="ruby"> # Define a header that contains the original receiver address.</code>
197
+ </li>
198
+
199
+ <li class="never" data-hits="" data-linenumber="9">
200
+
201
+
202
+ <code class="ruby"> # This header could be set by the mail server.</code>
203
+ </li>
204
+
205
+ <li class="covered" data-hits="1" data-linenumber="10">
206
+ <span class="hits">1</span>
207
+
208
+ <code class="ruby"> attr_accessor :receiver_header</code>
209
+ </li>
210
+
211
+ <li class="never" data-hits="" data-linenumber="11">
212
+
213
+
214
+ <code class="ruby"> </code>
215
+ </li>
216
+
217
+ <li class="never" data-hits="" data-linenumber="12">
218
+
219
+
220
+ <code class="ruby"> # Number of emails to retrieve in one batch.</code>
221
+ </li>
222
+
223
+ <li class="covered" data-hits="1" data-linenumber="13">
224
+ <span class="hits">1</span>
225
+
226
+ <code class="ruby"> attr_accessor :retrieve_count</code>
227
+ </li>
228
+
229
+ <li class="never" data-hits="" data-linenumber="14">
230
+
231
+
232
+ <code class="ruby"> </code>
233
+ </li>
234
+
235
+ <li class="never" data-hits="" data-linenumber="15">
236
+
237
+
238
+ <code class="ruby"> # Retrieve, process and delete all mails from the mail server.</code>
239
+ </li>
240
+
241
+ <li class="covered" data-hits="1" data-linenumber="16">
242
+ <span class="hits">1</span>
243
+
244
+ <code class="ruby"> def relay_current</code>
245
+ </li>
246
+
247
+ <li class="never" data-hits="" data-linenumber="17">
248
+
249
+
250
+ <code class="ruby"> begin</code>
251
+ </li>
252
+
253
+ <li class="covered" data-hits="3" data-linenumber="18">
254
+ <span class="hits">3</span>
255
+
256
+ <code class="ruby"> last_exception = nil</code>
257
+ </li>
258
+
259
+ <li class="never" data-hits="" data-linenumber="19">
260
+
261
+
262
+ <code class="ruby"> </code>
263
+ </li>
264
+
265
+ <li class="covered" data-hits="3" data-linenumber="20">
266
+ <span class="hits">3</span>
267
+
268
+ <code class="ruby"> mails = Mail.find_and_delete(:count =&gt; retrieve_count) do |message|</code>
269
+ </li>
270
+
271
+ <li class="covered" data-hits="13" data-linenumber="21">
272
+ <span class="hits">13</span>
273
+
274
+ <code class="ruby"> begin</code>
275
+ </li>
276
+
277
+ <li class="covered" data-hits="13" data-linenumber="22">
278
+ <span class="hits">13</span>
279
+
280
+ <code class="ruby"> new(message).relay</code>
281
+ </li>
282
+
283
+ <li class="never" data-hits="" data-linenumber="23">
284
+
285
+
286
+ <code class="ruby"> rescue Exception =&gt; e</code>
287
+ </li>
288
+
289
+ <li class="covered" data-hits="5" data-linenumber="24">
290
+ <span class="hits">5</span>
291
+
292
+ <code class="ruby"> last_exception = e</code>
293
+ </li>
294
+
295
+ <li class="never" data-hits="" data-linenumber="25">
296
+
297
+
298
+ <code class="ruby"> end</code>
299
+ </li>
300
+
301
+ <li class="never" data-hits="" data-linenumber="26">
302
+
303
+
304
+ <code class="ruby"> end</code>
305
+ </li>
306
+
307
+ <li class="never" data-hits="" data-linenumber="27">
308
+
309
+
310
+ <code class="ruby"> </code>
311
+ </li>
312
+
313
+ <li class="covered" data-hits="3" data-linenumber="28">
314
+ <span class="hits">3</span>
315
+
316
+ <code class="ruby"> raise(last_exception) if last_exception</code>
317
+ </li>
318
+
319
+ <li class="never" data-hits="" data-linenumber="29">
320
+
321
+
322
+ <code class="ruby"> </code>
323
+ </li>
324
+
325
+ <li class="covered" data-hits="2" data-linenumber="30">
326
+ <span class="hits">2</span>
327
+
328
+ <code class="ruby"> end while mails.size &gt;= retrieve_count</code>
329
+ </li>
330
+
331
+ <li class="never" data-hits="" data-linenumber="31">
332
+
333
+
334
+ <code class="ruby"> end</code>
335
+ </li>
336
+
337
+ <li class="never" data-hits="" data-linenumber="32">
338
+
339
+
340
+ <code class="ruby"> </code>
341
+ </li>
342
+
343
+ <li class="never" data-hits="" data-linenumber="33">
344
+
345
+
346
+ <code class="ruby"> end</code>
347
+ </li>
348
+
349
+ <li class="never" data-hits="" data-linenumber="34">
350
+
351
+
352
+ <code class="ruby"> </code>
353
+ </li>
354
+
355
+ <li class="covered" data-hits="1" data-linenumber="35">
356
+ <span class="hits">1</span>
357
+
358
+ <code class="ruby"> self.retrieve_count = 5</code>
359
+ </li>
360
+
361
+ <li class="covered" data-hits="1" data-linenumber="36">
362
+ <span class="hits">1</span>
363
+
364
+ <code class="ruby"> self.receiver_header = 'X-Envelope-To'</code>
365
+ </li>
366
+
367
+ <li class="never" data-hits="" data-linenumber="37">
368
+
369
+
370
+ <code class="ruby"> </code>
371
+ </li>
372
+
373
+ <li class="never" data-hits="" data-linenumber="38">
374
+
375
+
376
+ <code class="ruby"> </code>
377
+ </li>
378
+
379
+ <li class="covered" data-hits="1" data-linenumber="39">
380
+ <span class="hits">1</span>
381
+
382
+ <code class="ruby"> attr_reader :message</code>
383
+ </li>
384
+
385
+ <li class="never" data-hits="" data-linenumber="40">
386
+
387
+
388
+ <code class="ruby"> </code>
389
+ </li>
390
+
391
+ <li class="covered" data-hits="1" data-linenumber="41">
392
+ <span class="hits">1</span>
393
+
394
+ <code class="ruby"> def initialize(message)</code>
395
+ </li>
396
+
397
+ <li class="covered" data-hits="12" data-linenumber="42">
398
+ <span class="hits">12</span>
399
+
400
+ <code class="ruby"> @message = message</code>
401
+ </li>
402
+
403
+ <li class="never" data-hits="" data-linenumber="43">
404
+
405
+
406
+ <code class="ruby"> end</code>
407
+ </li>
408
+
409
+ <li class="never" data-hits="" data-linenumber="44">
410
+
411
+
412
+ <code class="ruby"> </code>
413
+ </li>
414
+
415
+ <li class="never" data-hits="" data-linenumber="45">
416
+
417
+
418
+ <code class="ruby"> # Process the given email.</code>
419
+ </li>
420
+
421
+ <li class="covered" data-hits="1" data-linenumber="46">
422
+ <span class="hits">1</span>
423
+
424
+ <code class="ruby"> def relay</code>
425
+ </li>
426
+
427
+ <li class="covered" data-hits="5" data-linenumber="47">
428
+ <span class="hits">5</span>
429
+
430
+ <code class="ruby"> if relay_address?</code>
431
+ </li>
432
+
433
+ <li class="covered" data-hits="5" data-linenumber="48">
434
+ <span class="hits">5</span>
435
+
436
+ <code class="ruby"> if sender_allowed?</code>
437
+ </li>
438
+
439
+ <li class="covered" data-hits="5" data-linenumber="49">
440
+ <span class="hits">5</span>
441
+
442
+ <code class="ruby"> resend_to(receivers)</code>
443
+ </li>
444
+
445
+ <li class="never" data-hits="" data-linenumber="50">
446
+
447
+
448
+ <code class="ruby"> else</code>
449
+ </li>
450
+
451
+ <li class="missed" data-hits="0" data-linenumber="51">
452
+
453
+
454
+ <code class="ruby"> reject_not_allowed</code>
455
+ </li>
456
+
457
+ <li class="never" data-hits="" data-linenumber="52">
458
+
459
+
460
+ <code class="ruby"> end</code>
461
+ </li>
462
+
463
+ <li class="never" data-hits="" data-linenumber="53">
464
+
465
+
466
+ <code class="ruby"> else</code>
467
+ </li>
468
+
469
+ <li class="missed" data-hits="0" data-linenumber="54">
470
+
471
+
472
+ <code class="ruby"> reject_not_existing</code>
473
+ </li>
474
+
475
+ <li class="never" data-hits="" data-linenumber="55">
476
+
477
+
478
+ <code class="ruby"> end</code>
479
+ </li>
480
+
481
+ <li class="never" data-hits="" data-linenumber="56">
482
+
483
+
484
+ <code class="ruby"> end</code>
485
+ </li>
486
+
487
+ <li class="never" data-hits="" data-linenumber="57">
488
+
489
+
490
+ <code class="ruby"> </code>
491
+ </li>
492
+
493
+ <li class="never" data-hits="" data-linenumber="58">
494
+
495
+
496
+ <code class="ruby"> # Send the same mail as is to all receivers, if any.</code>
497
+ </li>
498
+
499
+ <li class="covered" data-hits="1" data-linenumber="59">
500
+ <span class="hits">1</span>
501
+
502
+ <code class="ruby"> def resend_to(destinations)</code>
503
+ </li>
504
+
505
+ <li class="covered" data-hits="5" data-linenumber="60">
506
+ <span class="hits">5</span>
507
+
508
+ <code class="ruby"> if destinations.size &gt; 0</code>
509
+ </li>
510
+
511
+ <li class="covered" data-hits="4" data-linenumber="61">
512
+ <span class="hits">4</span>
513
+
514
+ <code class="ruby"> add_custom_message_destinations</code>
515
+ </li>
516
+
517
+ <li class="covered" data-hits="4" data-linenumber="62">
518
+ <span class="hits">4</span>
519
+
520
+ <code class="ruby"> message.destinations = destinations</code>
521
+ </li>
522
+
523
+ <li class="covered" data-hits="4" data-linenumber="63">
524
+ <span class="hits">4</span>
525
+
526
+ <code class="ruby"> message.header['Precedence'] = 'list'</code>
527
+ </li>
528
+
529
+ <li class="covered" data-hits="4" data-linenumber="64">
530
+ <span class="hits">4</span>
531
+
532
+ <code class="ruby"> deliver(message)</code>
533
+ </li>
534
+
535
+ <li class="never" data-hits="" data-linenumber="65">
536
+
537
+
538
+ <code class="ruby"> end</code>
539
+ </li>
540
+
541
+ <li class="never" data-hits="" data-linenumber="66">
542
+
543
+
544
+ <code class="ruby"> end</code>
545
+ </li>
546
+
547
+ <li class="never" data-hits="" data-linenumber="67">
548
+
549
+
550
+ <code class="ruby"> </code>
551
+ </li>
552
+
553
+ <li class="never" data-hits="" data-linenumber="68">
554
+
555
+
556
+ <code class="ruby"> # If the email sender was not allowed to post messages, this method is called.</code>
557
+ </li>
558
+
559
+ <li class="never" data-hits="" data-linenumber="69">
560
+
561
+
562
+ <code class="ruby"> # Silently ignores the message by default.</code>
563
+ </li>
564
+
565
+ <li class="covered" data-hits="1" data-linenumber="70">
566
+ <span class="hits">1</span>
567
+
568
+ <code class="ruby"> def reject_not_allowed</code>
569
+ </li>
570
+
571
+ <li class="never" data-hits="" data-linenumber="71">
572
+
573
+
574
+ <code class="ruby"> # do nothing</code>
575
+ </li>
576
+
577
+ <li class="never" data-hits="" data-linenumber="72">
578
+
579
+
580
+ <code class="ruby"> end</code>
581
+ </li>
582
+
583
+ <li class="never" data-hits="" data-linenumber="73">
584
+
585
+
586
+ <code class="ruby"> </code>
587
+ </li>
588
+
589
+ <li class="never" data-hits="" data-linenumber="74">
590
+
591
+
592
+ <code class="ruby"> # If the email is sent to an address that is not a valid relay, this method is called.</code>
593
+ </li>
594
+
595
+ <li class="never" data-hits="" data-linenumber="75">
596
+
597
+
598
+ <code class="ruby"> # Silently ignores the message by default.</code>
599
+ </li>
600
+
601
+ <li class="covered" data-hits="1" data-linenumber="76">
602
+ <span class="hits">1</span>
603
+
604
+ <code class="ruby"> def reject_not_existing</code>
605
+ </li>
606
+
607
+ <li class="never" data-hits="" data-linenumber="77">
608
+
609
+
610
+ <code class="ruby"> # do nothing</code>
611
+ </li>
612
+
613
+ <li class="never" data-hits="" data-linenumber="78">
614
+
615
+
616
+ <code class="ruby"> end</code>
617
+ </li>
618
+
619
+ <li class="never" data-hits="" data-linenumber="79">
620
+
621
+
622
+ <code class="ruby"> </code>
623
+ </li>
624
+
625
+ <li class="never" data-hits="" data-linenumber="80">
626
+
627
+
628
+ <code class="ruby"> # The receiver account that originally got this email.</code>
629
+ </li>
630
+
631
+ <li class="never" data-hits="" data-linenumber="81">
632
+
633
+
634
+ <code class="ruby"> # You probably have to re-implement this method depending on your mail server setup.</code>
635
+ </li>
636
+
637
+ <li class="never" data-hits="" data-linenumber="82">
638
+
639
+
640
+ <code class="ruby"> # Returns only the part before the @ sign.</code>
641
+ </li>
642
+
643
+ <li class="covered" data-hits="1" data-linenumber="83">
644
+ <span class="hits">1</span>
645
+
646
+ <code class="ruby"> def envelope_receiver_name</code>
647
+ </li>
648
+
649
+ <li class="never" data-hits="" data-linenumber="84">
650
+
651
+
652
+ <code class="ruby"> receiver_from_x_header || </code>
653
+ </li>
654
+
655
+ <li class="covered" data-hits="1" data-linenumber="85">
656
+ <span class="hits">1</span>
657
+
658
+ <code class="ruby"> receiver_from_received_header || </code>
659
+ </li>
660
+
661
+ <li class="never" data-hits="" data-linenumber="86">
662
+
663
+
664
+ <code class="ruby"> raise(&quot;Could not determine original receiver for email:\n#{message.header}&quot;)</code>
665
+ </li>
666
+
667
+ <li class="never" data-hits="" data-linenumber="87">
668
+
669
+
670
+ <code class="ruby"> end</code>
671
+ </li>
672
+
673
+ <li class="never" data-hits="" data-linenumber="88">
674
+
675
+
676
+ <code class="ruby"> </code>
677
+ </li>
678
+
679
+ <li class="never" data-hits="" data-linenumber="89">
680
+
681
+
682
+ <code class="ruby"> # The email address of the sender. As found in the from header.</code>
683
+ </li>
684
+
685
+ <li class="covered" data-hits="1" data-linenumber="90">
686
+ <span class="hits">1</span>
687
+
688
+ <code class="ruby"> def sender_email</code>
689
+ </li>
690
+
691
+ <li class="missed" data-hits="0" data-linenumber="91">
692
+
693
+
694
+ <code class="ruby"> @sender_email ||= message.from &amp;&amp; message.from.first</code>
695
+ </li>
696
+
697
+ <li class="never" data-hits="" data-linenumber="92">
698
+
699
+
700
+ <code class="ruby"> end</code>
701
+ </li>
702
+
703
+ <li class="never" data-hits="" data-linenumber="93">
704
+
705
+
706
+ <code class="ruby"> </code>
707
+ </li>
708
+
709
+ <li class="never" data-hits="" data-linenumber="94">
710
+
711
+
712
+ <code class="ruby"> </code>
713
+ </li>
714
+
715
+ <li class="never" data-hits="" data-linenumber="95">
716
+
717
+
718
+ <code class="ruby"> # Heuristic method to find actual receiver of the message.</code>
719
+ </li>
720
+
721
+ <li class="never" data-hits="" data-linenumber="96">
722
+
723
+
724
+ <code class="ruby"> # May return nil if could not determine.</code>
725
+ </li>
726
+
727
+ <li class="covered" data-hits="1" data-linenumber="97">
728
+ <span class="hits">1</span>
729
+
730
+ <code class="ruby"> def receiver_from_received_header</code>
731
+ </li>
732
+
733
+ <li class="covered" data-hits="3" data-linenumber="98">
734
+ <span class="hits">3</span>
735
+
736
+ <code class="ruby"> if received = message.received</code>
737
+ </li>
738
+
739
+ <li class="covered" data-hits="2" data-linenumber="99">
740
+ <span class="hits">2</span>
741
+
742
+ <code class="ruby"> received = received.first if received.respond_to?(:first)</code>
743
+ </li>
744
+
745
+ <li class="covered" data-hits="2" data-linenumber="100">
746
+ <span class="hits">2</span>
747
+
748
+ <code class="ruby"> received.info[/ for .*?([^\s&lt;&gt;]+)@[^\s&lt;&gt;]+/, 1]</code>
749
+ </li>
750
+
751
+ <li class="never" data-hits="" data-linenumber="101">
752
+
753
+
754
+ <code class="ruby"> end</code>
755
+ </li>
756
+
757
+ <li class="never" data-hits="" data-linenumber="102">
758
+
759
+
760
+ <code class="ruby"> end</code>
761
+ </li>
762
+
763
+ <li class="never" data-hits="" data-linenumber="103">
764
+
765
+
766
+ <code class="ruby"> </code>
767
+ </li>
768
+
769
+ <li class="never" data-hits="" data-linenumber="104">
770
+
771
+
772
+ <code class="ruby"> # Try to read the envelope receiver from the given x header</code>
773
+ </li>
774
+
775
+ <li class="covered" data-hits="1" data-linenumber="105">
776
+ <span class="hits">1</span>
777
+
778
+ <code class="ruby"> def receiver_from_x_header</code>
779
+ </li>
780
+
781
+ <li class="covered" data-hits="4" data-linenumber="106">
782
+ <span class="hits">4</span>
783
+
784
+ <code class="ruby"> if field = message.header[self.class.receiver_header]</code>
785
+ </li>
786
+
787
+ <li class="covered" data-hits="3" data-linenumber="107">
788
+ <span class="hits">3</span>
789
+
790
+ <code class="ruby"> field.to_s.split('@', 2).first</code>
791
+ </li>
792
+
793
+ <li class="never" data-hits="" data-linenumber="108">
794
+
795
+
796
+ <code class="ruby"> end</code>
797
+ </li>
798
+
799
+ <li class="never" data-hits="" data-linenumber="109">
800
+
801
+
802
+ <code class="ruby"> end</code>
803
+ </li>
804
+
805
+ <li class="never" data-hits="" data-linenumber="110">
806
+
807
+
808
+ <code class="ruby"> </code>
809
+ </li>
810
+
811
+ <li class="never" data-hits="" data-linenumber="111">
812
+
813
+
814
+ <code class="ruby"> # Is the mail sent to a valid relay address?</code>
815
+ </li>
816
+
817
+ <li class="covered" data-hits="1" data-linenumber="112">
818
+ <span class="hits">1</span>
819
+
820
+ <code class="ruby"> def relay_address?</code>
821
+ </li>
822
+
823
+ <li class="covered" data-hits="5" data-linenumber="113">
824
+ <span class="hits">5</span>
825
+
826
+ <code class="ruby"> true</code>
827
+ </li>
828
+
829
+ <li class="never" data-hits="" data-linenumber="114">
830
+
831
+
832
+ <code class="ruby"> end</code>
833
+ </li>
834
+
835
+ <li class="never" data-hits="" data-linenumber="115">
836
+
837
+
838
+ <code class="ruby"> </code>
839
+ </li>
840
+
841
+ <li class="never" data-hits="" data-linenumber="116">
842
+
843
+
844
+ <code class="ruby"> # Is the mail sender allowed to post to this address</code>
845
+ </li>
846
+
847
+ <li class="covered" data-hits="1" data-linenumber="117">
848
+ <span class="hits">1</span>
849
+
850
+ <code class="ruby"> def sender_allowed?</code>
851
+ </li>
852
+
853
+ <li class="covered" data-hits="5" data-linenumber="118">
854
+ <span class="hits">5</span>
855
+
856
+ <code class="ruby"> true</code>
857
+ </li>
858
+
859
+ <li class="never" data-hits="" data-linenumber="119">
860
+
861
+
862
+ <code class="ruby"> end</code>
863
+ </li>
864
+
865
+ <li class="never" data-hits="" data-linenumber="120">
866
+
867
+
868
+ <code class="ruby"> </code>
869
+ </li>
870
+
871
+ <li class="never" data-hits="" data-linenumber="121">
872
+
873
+
874
+ <code class="ruby"> # List of receiver email addresses for the resent email.</code>
875
+ </li>
876
+
877
+ <li class="covered" data-hits="1" data-linenumber="122">
878
+ <span class="hits">1</span>
879
+
880
+ <code class="ruby"> def receivers</code>
881
+ </li>
882
+
883
+ <li class="covered" data-hits="1" data-linenumber="123">
884
+ <span class="hits">1</span>
885
+
886
+ <code class="ruby"> []</code>
887
+ </li>
888
+
889
+ <li class="never" data-hits="" data-linenumber="124">
890
+
891
+
892
+ <code class="ruby"> end</code>
893
+ </li>
894
+
895
+ <li class="never" data-hits="" data-linenumber="125">
896
+
897
+
898
+ <code class="ruby"> </code>
899
+ </li>
900
+
901
+ <li class="never" data-hits="" data-linenumber="126">
902
+
903
+
904
+ <code class="ruby"> </code>
905
+ </li>
906
+
907
+ <li class="covered" data-hits="1" data-linenumber="127">
908
+ <span class="hits">1</span>
909
+
910
+ <code class="ruby"> private</code>
911
+ </li>
912
+
913
+ <li class="never" data-hits="" data-linenumber="128">
914
+
915
+
916
+ <code class="ruby"> </code>
917
+ </li>
918
+
919
+ <li class="covered" data-hits="1" data-linenumber="129">
920
+ <span class="hits">1</span>
921
+
922
+ <code class="ruby"> def deliver(message)</code>
923
+ </li>
924
+
925
+ <li class="covered" data-hits="4" data-linenumber="130">
926
+ <span class="hits">4</span>
927
+
928
+ <code class="ruby"> if defined?(ActionMailer::Base)</code>
929
+ </li>
930
+
931
+ <li class="missed" data-hits="0" data-linenumber="131">
932
+
933
+
934
+ <code class="ruby"> ActionMailer::Base.wrap_delivery_behavior(message)</code>
935
+ </li>
936
+
937
+ <li class="never" data-hits="" data-linenumber="132">
938
+
939
+
940
+ <code class="ruby"> end</code>
941
+ </li>
942
+
943
+ <li class="covered" data-hits="4" data-linenumber="133">
944
+ <span class="hits">4</span>
945
+
946
+ <code class="ruby"> message.deliver</code>
947
+ </li>
948
+
949
+ <li class="never" data-hits="" data-linenumber="134">
950
+
951
+
952
+ <code class="ruby"> end</code>
953
+ </li>
954
+
955
+ <li class="never" data-hits="" data-linenumber="135">
956
+
957
+
958
+ <code class="ruby"> </code>
959
+ </li>
960
+
961
+ <li class="covered" data-hits="1" data-linenumber="136">
962
+ <span class="hits">1</span>
963
+
964
+ <code class="ruby"> def add_custom_message_destinations</code>
965
+ </li>
966
+
967
+ <li class="covered" data-hits="4" data-linenumber="137">
968
+ <span class="hits">4</span>
969
+
970
+ <code class="ruby"> class &lt;&lt; message</code>
971
+ </li>
972
+
973
+ <li class="covered" data-hits="4" data-linenumber="138">
974
+ <span class="hits">4</span>
975
+
976
+ <code class="ruby"> def destinations</code>
977
+ </li>
978
+
979
+ <li class="covered" data-hits="1" data-linenumber="139">
980
+ <span class="hits">1</span>
981
+
982
+ <code class="ruby"> @destinations || []</code>
983
+ </li>
984
+
985
+ <li class="never" data-hits="" data-linenumber="140">
986
+
987
+
988
+ <code class="ruby"> end</code>
989
+ </li>
990
+
991
+ <li class="never" data-hits="" data-linenumber="141">
992
+
993
+
994
+ <code class="ruby"> </code>
995
+ </li>
996
+
997
+ <li class="covered" data-hits="4" data-linenumber="142">
998
+ <span class="hits">4</span>
999
+
1000
+ <code class="ruby"> def destinations=(destinations)</code>
1001
+ </li>
1002
+
1003
+ <li class="covered" data-hits="4" data-linenumber="143">
1004
+ <span class="hits">4</span>
1005
+
1006
+ <code class="ruby"> @destinations = destinations</code>
1007
+ </li>
1008
+
1009
+ <li class="never" data-hits="" data-linenumber="144">
1010
+
1011
+
1012
+ <code class="ruby"> end</code>
1013
+ </li>
1014
+
1015
+ <li class="never" data-hits="" data-linenumber="145">
1016
+
1017
+
1018
+ <code class="ruby"> end</code>
1019
+ </li>
1020
+
1021
+ <li class="never" data-hits="" data-linenumber="146">
1022
+
1023
+
1024
+ <code class="ruby"> end</code>
1025
+ </li>
1026
+
1027
+ <li class="never" data-hits="" data-linenumber="147">
1028
+
1029
+
1030
+ <code class="ruby"> </code>
1031
+ </li>
1032
+
1033
+ <li class="never" data-hits="" data-linenumber="148">
1034
+
1035
+
1036
+ <code class="ruby"> end</code>
1037
+ </li>
1038
+
1039
+ <li class="never" data-hits="" data-linenumber="149">
1040
+
1041
+
1042
+ <code class="ruby">end</code>
1043
+ </li>
1044
+
1045
+ </ol>
1046
+ </pre>
1047
+ </div>
1048
+
1049
+ </div>
1050
+ </div>
1051
+ </body>
1052
+ </html>