3

Google Apps gmail を使用して、従業員のメールを監視する機能を使用する管理者ユーザーを取得する必要があります。これを行うために Google の Audit API を使用しましたか。

管理者がクリックしてユーザーのメールを表示する方法があればいいのにと思いますが、そうではありません。

それが重要な場合、アプリケーションは Rails アプリです。電子メールは、Google アプリを介して Google メールで完全に行われます。これを行ったことのある人なら誰でも、アドバイスが役に立ちます。

アップデート!これで500ポイント!

heroku でアプリをホストする ruby​​ on rails を使用しています。メールはビジネス向けではなく Google Apps 標準で完全にホストされているため、アップグレードする必要があります。また、DNS は、heroku を使用している場合はすでにおなじみの zerigo を使用しています。

4

1 に答える 1

8

まあ、gdata-ruby-util gem を拡張するつもりはありませんでした :) が、Google のドキュメントに基づいて Google Audit API に使用できるコードを次に示します。メソッドだけを書きましたcreate_monitor_onが、残りは簡単に取得できます。

動作するか、書き直しが必要かどうかお知らせください。ここで更新します。

    class Audit < GData::Client::Base

      attr_accessor :store_at

      def initialize(options = {})
        options[:clientlogin_service] ||= 'apps'
        options[:authsub_scope] ||= 'https://apps-apis.google.com/a/feeds/compliance/audit/' 
        super(options)
      end

      def create_monitor_on(email_address)
        user_name, domain_name = email_address.split('@')
        entry = <<-EOF
        <atom:entry xmlns:atom='http://www.w3.org/2005/Atom' xmlns:apps='http://schemas.google.com/apps/2006'>
        <apps:property name='destUserName' value='#{@store_at}'/>
        <apps:property name='beginDate' value=''/>
        <apps:property name='endDate' value='2019-06-30 23:20'/>
        <apps:property name='incomingEmailMonitorLevel' value='FULL_MESSAGE'/>
        <apps:property name='outgoingEmailMonitorLevel' value='FULL_MESSAGE'/>
        <apps:property name='draftMonitorLevel' value='FULL_MESSAGE'/>
        <apps:property name='chatMonitorLevel' value='FULL_MESSAGE'/>
        </atom:entry>
        EOF

        return true if post('https://apps-apis.google.com/a/feeds/compliance/audit/mail/monitor/'+domain_name+'/'+user_name, entry).status_code == 201
        false
      end   
   end

次に、次のように別の場所で使用します。

auditor = Audit.new
auditor.store_at = 'this-username'
auditor.clientlogin(username, password)
render :success if auditor.create_monitor_on('email-address@my-domain.com')

私の提案は、すべての電子メール モニターが送信される 1 つの主要な電子メール アドレスを作成することです。これにより、管理者の受信トレイが他のすべてのメールでバタンと閉められることはありません。次に、Rails アプリで Net::IMAP を使用して、必要なメッセージをそのマスター メール アカウントからダウンロードします。つまり、「View Joe's Email」というリンクを作成すると、メソッドは次のようになります。

require 'net/imap'

imap = Net::IMAP.new('imap.gmail.com', 993, true)
imap.login('this-username@my-domain.com', password)
imap.select('INBOX')

messages = []
imap.search(["TO", "joe@email.com").each do |msg_id|
  msg = imap.fetch(msg_id, "(UID RFC822.SIZE ENVELOPE BODY[TEXT])")[0]
  body = msg.attr["BODY[TEXT]"]
  env = imap.fetch(msg_id, "ENVELOPE")[0].attr["ENVELOPE"]
  messages << {:subject => env.subject, :from => env.from[0].name, :body => body }
end

imap.logout
imap.disconnect

次に、これらのメッセージをビューに表示したり、すべてを 1 通のメールにまとめて送信したり、やりたいことが何でもできます。

于 2011-03-27T22:37:34.180 に答える