2011-11-06 5 views
3

J'essaie d'utiliser ruby ​​mechanize pour accéder à des courriels spécifiques à partir de mon compte d'accès Web Outlook.Ruby Mechanize Outlook Web Access

J'utilise le code suivant.

 
    require 'mechanize' 
    require 'logger' 

    a = Mechanize.new 
    a.cookie_jar(HTTP::Cookies.new) 
    a.log = Logger.new('log1.log') 

    a.get('htts://webmail.xxxxxxx.org/') do |page| 

     my_page = page.form_with(:action => '/owa/auth.owa') do |f| 
     f.username = "------------" 
     f.password = "------------" 
     end.click_button 

     #a.cookie_jar.load('cookies.yml') 

     a.get('https://webmail.xxxxxxx.org/owa/Inbox/?Cmd=contents&Page=1') do |p| 
      file = File.new("new.xml","w+") 
      file.puts p.parser.to_xml 
      file.close 
     end 

    end 

Pourquoi ce code ne fonctionne-t-il pas?

+3

Y at-il une question ici quelque part? –

Répondre

3

Ceci est un script de récupération OWA en utilisant nokogiri et mécaniser sur un site Web d'échange SSL owa.

Il faut installer des rubygems, mécaniser (+ deps) et highline.

 
    require 'rubygems' 
    require 'mechanize' 
    require 'logger' 
    require 'highline/import' 

    @url = 'https://email.***.***/Exchange' 

    @mechanize = Mechanize.new { |a| a.log = Logger.new('./log1.log') } 

    #In case you dont have trusted certs 
    @mechanize.agent.http.verify_mode = OpenSSL::SSL::VERIFY_NONE 

    @mechanize.user_agent_alias = 'Windows Mozilla' 
    @mechanize.keep_alive = 'enable' 

    username = ask("Enter your username: ") 
    domain = ask("Enter your domain: ") 
    password = ask("Enter your password: ") {|q| q.echo = "*" } 

    @mechanize.get(@url) do |page| 

     form = page.forms[0] 

     form["username"] = domain + '\\' + username 
     form["password"] = password 
     page = form.submit 
    end 

    ## Common Mailbox Schemes 
    @mailbox = "#{username}" 

    # @mailbox = "#{username}@#{domain}.#{tld}" 
    # @mailbox = "#{username}@#{domain}" 

    @inbox = @url + "/#{@mailbox}/Inbox/?Cmd=contents&Page=1&View=Unread%20Messages" 

    inboxlisting = @mechanize.get(@inbox) do |page| 

     fragment = Nokogiri::HTML(page.body) 
     ["//img[@src='/exchweb/img/icon-msg-unread.gif']"].each do |xpathq| 
     puts "Found #{fragment.xpath(xpathq).count} new emails." 
     end 

     ["//img[@src='/exchweb/img/icon-mtgreq.gif']"].each do |xpathq| 
      puts "Found #{fragment.xpath(xpathq).count} new meeting requests." 
     end 

    end 

Exemple de script de sortie:

 

    $ ruby ./owa.rb 
    Enter your username: john.doe 
    Enter your domain: mywork 
    Enter your password: ************ 
    Found 31 new emails. 
    Found 3 new meeting requests. 

+0

FYI: Licence MIT. Copyright - shadowbq 2012 – shadowbq

0

Je ne connais pas le but de l'utilisation et la question, mais il peut être préférable d'utiliser Capybara avec Selenium pour accéder à ce site?

Questions connexes