module Hoe::Email
def define_email_tasks
def define_email_tasks require 'net/smtp' begin require 'smtp_tls' rescue LoadError end # attach to announcements task :announce => :send_email task :post_blog => :send_email # force email to the front desc "Send an announcement email." task :send_email do warn "sending email" message = generate_email :full with_config do |conf, _| host = conf["email"]["host"] port = conf["email"]["port"] user = conf["email"]["user"] pass = conf["email"]["pass"] auth = conf["email"]["auth"] tls = conf["email"]["tls"] port = Socket.getservbyname port unless Integer === port tls = port != 25 if tls.nil? start_args = [Socket.gethostname, user, pass, auth].compact raise 'gem install smtp_tls' if tls and not Net::SMTP.method_defined? :starttls smtp = Net::SMTP.new(host, port) smtp.set_debug_output $stderr if $DEBUG smtp.enable_starttls if tls begin smtp.start(*start_args) do |server| server.send_message message, Array(email).first, *email_to end rescue Errno::ETIMEDOUT => e warn "sending email timed out: #{e.message}" end end warn "...done" end end
def initialize_email
def initialize_email with_config do |config, _| @email_to = config["email"]["to"] rescue nil end end