lib/backup/notifier/mail.rb in backup-3.1.3 vs lib/backup/notifier/mail.rb in backup-3.2.0

- old
+ new

@@ -8,105 +8,135 @@ module Notifier class Mail < Base ## # Mail delivery method to be used by the Mail gem. + # # Supported methods: # - # `:smtp` [::Mail::SMTP] (default) - # : Settings used only by this method: - # : `address`, `port`, `domain`, `user_name`, `password` - # : `authentication`, `enable_starttls_auto`, `openssl_verify_mode` + # [:smtp - ::Mail::SMTP (default)] + # Settings used by this method: + # {#address}, {#port}, {#domain}, {#user_name}, {#password}, + # {#authentication}, {#encryption}, {#openssl_verify_mode} # - # `:sendmail` [::Mail::Sendmail] - # : Settings used only by this method: - # : `sendmail`, `sendmail_args` + # [:sendmail - ::Mail::Sendmail] + # Settings used by this method: + # {#sendmail}, {#sendmail_args} # - # `:exim` [::Mail::Exim] - # : Settings used only by this method: - # : `exim`, `exim_args` + # [:exim - ::Mail::Exim] + # Settings used by this method: + # {#exim}, {#exim_args} # - # `:file` [::Mail::FileDelivery] - # : Settings used only by this method: - # : `mail_folder` + # [:file - ::Mail::FileDelivery] + # Settings used by this method: + # {#mail_folder} # attr_accessor :delivery_method ## - # Sender and Receiver email addresses - # Examples: - # sender - my.email.address@gmail.com - # receiver - your.email.address@gmail.com - attr_accessor :from, :to + # Sender Email Address + attr_accessor :from ## - # The address to use - # Example: smtp.gmail.com + # Receiver Email Address + attr_accessor :to + + ## + # SMTP Server Address attr_accessor :address ## - # The port to connect to - # Example: 587 + # SMTP Server Port attr_accessor :port ## # Your domain (if applicable) - # Example: mydomain.com attr_accessor :domain ## - # Username and Password (sender email's credentials) - # Examples: - # user_name - meskyanichi - # password - my_secret_password - attr_accessor :user_name, :password + # SMTP Server Username (sender email's credentials) + attr_accessor :user_name ## + # SMTP Server Password (sender email's credentials) + attr_accessor :password + + ## # Authentication type - # Example: plain + # + # Acceptable values: +:plain+, +:login+, +:cram_md5+ attr_accessor :authentication ## - # Automatically set TLS - # Example: true - attr_accessor :enable_starttls_auto + # Set the method of encryption to be used for the +SMTP+ connection. + # + # [:none (default)] + # No encryption will be used. + # + # [:starttls] + # Use +STARTTLS+ to upgrade the connection to a +SSL/TLS+ connection. + # + # [:tls or :ssl] + # Use a +SSL/TLS+ connection. + attr_accessor :encryption + attr_deprecate :enable_starttls_auto, :version => '3.2.0', + :message => "Use #encryption instead.\n" + + 'e.g. mail.encryption = :starttls', + :action => lambda {|klass, val| + klass.encryption = val ? :starttls : :none + } + ## # OpenSSL Verify Mode - # Example: none - Only use this option for a self-signed and/or wildcard certificate + # + # Valid modes: +:none+, +:peer+, +:client_once+, +:fail_if_no_peer_cert+ + # See +OpenSSL::SSL+ for details. + # + # Use +:none+ for a self-signed and/or wildcard certificate attr_accessor :openssl_verify_mode ## + # Path to `sendmail` (if needed) + # # When using the `:sendmail` `delivery_method` option, - # this may be used to specify the absolute path to `sendmail` (if needed) + # this may be used to specify the absolute path to `sendmail` + # # Example: '/usr/sbin/sendmail' attr_accessor :sendmail ## # Optional arguments to pass to `sendmail` + # # Note that this will override the defaults set by the Mail gem (currently: '-i -t') # So, if set here, be sure to set all the arguments you require. + # # Example: '-i -t -X/tmp/traffic.log' attr_accessor :sendmail_args ## + # Path to `exim` (if needed) + # # When using the `:exim` `delivery_method` option, - # this may be used to specify the absolute path to `exim` (if needed) + # this may be used to specify the absolute path to `exim` + # # Example: '/usr/sbin/exim' attr_accessor :exim ## # Optional arguments to pass to `exim` + # # Note that this will override the defaults set by the Mail gem (currently: '-i -t') # So, if set here, be sure to set all the arguments you require. + # # Example: '-i -t -X/tmp/traffic.log' attr_accessor :exim_args ## # Folder where mail will be kept when using the `:file` `delivery_method` option. + # # Default location is '$HOME/Backup/emails' - # Example: '/tmp/test-mails' attr_accessor :mail_folder def initialize(model, &block) super(model) @@ -115,26 +145,27 @@ private ## # Notify the user of the backup operation results. + # # `status` indicates one of the following: # - # `:success` - # : The backup completed successfully. - # : Notification will be sent if `on_success` was set to `true` + # [:success] + # The backup completed successfully. + # Notification will be sent if `on_success` was set to `true` # - # `:warning` - # : The backup completed successfully, but warnings were logged - # : Notification will be sent, including a copy of the current - # : backup log, if `on_warning` was set to `true` + # [:warning] + # The backup completed successfully, but warnings were logged + # Notification will be sent, including a copy of the current + # backup log, if `on_warning` was set to `true` # - # `:failure` - # : The backup operation failed. - # : Notification will be sent, including the Exception which caused - # : the failure, the Exception's backtrace, a copy of the current - # : backup log and other information if `on_failure` was set to `true` + # [:failure] + # The backup operation failed. + # Notification will be sent, including the Exception which caused + # the failure, the Exception's backtrace, a copy of the current + # backup log and other information if `on_failure` was set to `true` # def notify!(status) name, send_log = case status when :success then [ 'Success', false ] @@ -171,11 +202,14 @@ :port => @port, :domain => @domain, :user_name => @user_name, :password => @password, :authentication => @authentication, - :enable_starttls_auto => @enable_starttls_auto, - :openssl_verify_mode => @openssl_verify_mode } + :enable_starttls_auto => @encryption == :starttls, + :openssl_verify_mode => @openssl_verify_mode, + :ssl => @encryption == :ssl, + :tls => @encryption == :tls + } when 'sendmail' opts = {} opts.merge!(:location => File.expand_path(@sendmail)) if @sendmail opts.merge!(:arguments => @sendmail_args) if @sendmail_args opts