the*_*gah 3 ruby-on-rails monitor google-email-audit-api
我需要让一些管理员用户使用谷歌应用程序gmail监控员工电子邮件的能力.您是否使用过Google的Audit API来执行此操作.
我希望有一种方法让管理员只需点击我的用户发送电子邮件的视图,但事实并非如此.
如果重要,该应用程序是一个rails应用程序.该电子邮件完全通过谷歌应用程序在谷歌邮件上完成.任何做过这方面建议的人都会有所帮助.
我正在使用ruby on rails托管heroku上的应用程序.该电子邮件完全托管谷歌应用程序标准,而非业务,所以我们将不得不升级,DNS与zerigo,如果你使用heroku你已经知道.
好吧,我没有计划扩展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
Run Code Online (Sandbox Code Playgroud)
然后在其他地方使用它:
auditor = Audit.new
auditor.store_at = 'this-username'
auditor.clientlogin(username, password)
render :success if auditor.create_monitor_on('email-address@my-domain.com')
Run Code Online (Sandbox Code Playgroud)
我的建议是创建一个核心电子邮件地址,将所有电子邮件监视器发送到该地址,这样您的管理员的收件箱就不会被其他人的邮件猛烈抨击.然后在您的Rails应用程序中,使用Net :: IMAP从该主电子邮件帐户下载所需的邮件.即,您可以创建一个"查看Joe的电子邮件"的链接,该方法执行以下操作:
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
Run Code Online (Sandbox Code Playgroud)
然后,您可以将这些消息放在您的视图中 - 或者将它们全部发送到一个批量电子邮件中,或者您想要做的任何事情.
| 归档时间: |
|
| 查看次数: |
3233 次 |
| 最近记录: |