Sha256: c0cadfd2cf01ebab58895bb59f10772a380205ffc04e143892653139d1faff5d

Contents?: true

Size: 1.19 KB

Versions: 4

Compression:

Stored size: 1.19 KB

Contents

require 'resolv'
require 'stringio'
require 'net/smtp'
module Net
  class SMTP
    def socket
      @socket
    end

    def bind_at(ip)
      @bind_at = ip
    end

    def tcp_socket(address, port)
      in_addr = Socket.pack_sockaddr_in(0, @bind_at) if @bind_at

      out_addr = Socket.pack_sockaddr_in(port, address)
      s = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, 0)
      s.bind(in_addr) if @bind_at
      s.connect(out_addr)
      s
    end
  end
end


module Rhcf
  module Utils
    module Email
      def self.get_mxs(domain) 
        Resolv::DNS.open do |dns|
          dns.getresources(domain, Resolv::DNS::Resource::IN::MX).collect{|x| x.exchange.to_s}
        end
      end
  
      def self.transmit(from, to, body, bind_interface, ehlo = 'localhost.localdomain')
        domain = to.split('@').last
      
        chat = StringIO.new 
        mx = get_mxs(domain).sample
        smtp = Net::SMTP.new(mx, 25)
        smtp.bind_at bind_interface 
        result = smtp.start(ehlo) do |smtp|
          smtp.socket.debug_output = chat
          smtp.send_message body, from, to
        end
   
        {status: result.status, string: result.string, chat: chat.string}
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rhcf-utils-0.0.5 lib/rhcf/utils/email.rb
rhcf-utils-0.0.4 lib/rhcf/utils/email.rb
rhcf-utils-0.0.3 lib/rhcf/utils/email.rb
rhcf-utils-0.0.2 lib/rhcf/utils/email.rb