国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 編程 > Ruby > 正文

Ruby實現郵件主動推送的觸發程序

2020-02-24 15:39:50
字體:
來源:轉載
供稿:網友

說到郵件,相信大家都非常的熟悉,不管是在工作中還是在日常生活中都是很常見的,別著急,今天跟著武林技術頻道小編帶大家來了解Ruby實現郵件主動推送的觸發程序吧!

1、客戶端輪詢
2、服務器主動推送。

首先熟悉一下,收發郵件的協議:
Net::SMTP(發送郵件)
Net::POP3(接收郵件)
Net::IMAP(接收郵件)

網上很多用pop3收郵件的例子,但是用pop3收郵件只能獲取收件箱里面所有郵件,郵件是否已讀等標記無法獲取,使用imap協議則避免了這個尷尬,imap不僅能獲得一個郵件的詳細信息(比如是否已讀,是否回復),它還允許用戶更改郵件的標記,但是目前支持imap協議的郵件服務器并不多,我知道的只有21cn和gmail,下面的例子中使用了代理 、SSL認證多個內容,請大家參考。

imap郵件,都是按需索取,也就是說,當你得到一個Message的對象時,其實里面什么信息都沒有,當你在這個對象里用get方法取得信息時,比如getSubject,那么Message對象會重新訪問郵件服務器來得到這個消息的 ,所以在得到所有所需信息之前,不可以關閉目錄,更不可以斷開連接。?如果實在想在關閉目錄或者連接后操作Message對象的話,需要使用Folder對象的fetch方法得到所需信息。

一:客戶端輪詢

下邊用pop3和imap顯示一下輪詢訪問獲取郵件的例子:

POP3輪詢:

復制代碼 代碼如下:

loop do
require 'net/pop'
pop = Net::POP3.new('EMAILSERVICE')
pop.start('USENAME', 'PASSWORD')???????????
if pop.mails.empty?
? puts 'No mail.'
else
? pop.each_mail do |m|
??? m.pop do |chunk|??
????? p chunk
??? end
? end
? puts "#{pop.mails.size} mails popped."
end
pop.finish
sleep(10)
end

?

imap輪詢:

?

復制代碼 代碼如下:

loop do
require 'net/imap'
imap = Net::IMAP.new('EMAILSERVICE')
imap.login "USERNAME", "PASSWORD"
imap.examine('INBOX')
imap.search(["BEFORE", "29-Oct-2014", "SINCE", "28-Oct-2014"]).each do |message_id|
?? envelope = imap.fetch(message_id, "ENVELOPE")[0].attr["ENVELOPE"]
?? puts "#{envelope.from[0].name}: /t#{envelope.subject}"
end
sleep(10)
end

?

二:服務器主動推送

下邊實現一種服務器主動推送方式:(IMAP.IDLE)

這是一種介于pull和Persistent TCP/IP之間的技術:long polling(長輪詢)。原理是客戶端每次對服務的請求都被服務端hold住,等到有message返回或time out之后,會再次主動發起請求,等待message的到達。這種模式不需要保持心跳,也不需要持續TCP的占用,比較適合頁面端及時消息的推送。

?

復制代碼 代碼如下:

SERVER = 'EMAILSERVICE'
USERNAME = 'USERNAME'
PW = 'PASSWORD'
require 'net/imap'

?

# Extend support for idle command. See online.
# http://www.ruby-forum.com/topic/50828
# https://gist.github.com/jem/2783772
# but that was wrong. see /opt/ruby-1.9.1-p243/lib/net/imap.rb.
class Net::IMAP
? def idle
??? cmd = "IDLE"
??? synchronize do
????? @idle_tag = generate_tag
????? put_string(@idle_tag + " " + cmd)
????? put_string(CRLF)
??? end
? end

? def say_done
??? cmd = "DONE"
??? synchronize do
????? put_string(cmd)
????? put_string(CRLF)
??? end
? end

? def await_done_confirmation
??? synchronize do
????? get_tagged_response(@idle_tag, nil)
????? puts 'just got confirmation'
??? end
? end
end

class Remailer
? attr_reader :imap

? public
? def initialize
??? @imap = nil
??? @mailer = nil
??? start_imap
? end

? def tidy
??? stop_imap
? end

? def print_pust
?????? envelope = @imap.fetch(-1, "ENVELOPE")[0].attr["ENVELOPE"]
?????? puts "From:#{envelope.from[0].name}/t Subject: #{envelope.subject}"
? end

? def bounce_idle
??? # Bounces the idle command.
??? @imap.say_done
??? @imap.await_done_confirmation
??? # Do a manual check, just in case things aren't working properly.
??? @imap.idle
? end

? private
? def start_imap
??? @imap = Net::IMAP.new('pop.i-click.com')
??? @imap.login USERNAME, PW
??? @imap.select 'INBOX'

??? # Add handler.
??? @imap.add_response_handler do |resp|
????? if resp.kind_of?(Net::IMAP::UntaggedResponse) and resp.name == "EXISTS"
??????? @imap.say_done
??????? Thread.new do
????????? @imap.await_done_confirmation
????????? print_pust
????????? @imap.idle
??????? end
????? end
??? end
??? @imap.idle
? end

? def stop_imap
??? @imap.done
? end

end

begin
? Net::IMAP.debug = true
? r = Remailer.new
? loop do
??? puts 'bouncing...'
??? r.bounce_idle
??? sleep 15*60
??? #一般設置15分鐘無操作保持長鏈接
? end
ensure
? r.tidy
end

以上就是我們為各位朋友們總結的Ruby實現郵件主動推送的觸發程序,各位朋友們對于上面的內容還算滿意嗎?

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
尤物视频在线观看视频| 天堂√中文在线| 亚洲一道本在线| 天天草天天爽| 开心激情五月婷婷| 国产色在线观看| 亚洲综合色视频在线观看| 欧美黑人乱大交| 2019中文字幕视频| 欧美aaa一级片| 国产黄色在线免费观看| av日韩国产| 国产精品久久久久久久久鸭 | 四虎国产精品永久在线| 国产在线观看a视频| 伊人免费视频| 青青久在线视频免费观看| 五月综合网站| 欧美日韩在线视频免费观看| 国产高清视频在线播放| 国产在线免费观看| 午夜影院在线免费观看| 国产高清免费视频| 国产精品蜜臀| 国产高清免费在线播放| 午夜国产视频| 国产美女高潮一区二区三区| 免费网站看黄yyy222| 在线视频99| 在线免费日韩| 永久免费网站在线| 国产精品美女一区二区三区四区 | 日本视频二区| 国产福利视频在线| 中文字幕在线影院| 尤物免费看在线视频| 国产美女视频一区二区二三区 | 在线天堂中文www视软件| 国产欧美日本亚洲精品一4区| 黄色av免费在线| 天堂√中文在线| 日韩黄色成人| 国内自拍视频在线看免费观看| 欧美日韩一区二区三区在线播放 | 中文字幕网在线| 最近中文字幕av免费高清| 狠狠操视频网| 国内精品一区视频| 国产乱妇乱子| 日本中文字幕在线看| 国产色a在线| 伊人网在线视频| 亚洲精品自拍区在线观看| 人人九九精品| 国产日产一区二区| 日韩国产成人| 国产区在线看| 日韩中文字幕久久久经典网| 天堂中文资源在线| 精品卡1卡2卡三卡免费网站| 天天插天天色| 国产精品蜜臀| 亚洲xxxxxx| 国产精品视频一区二区三区麻豆| 1区不卡电影| 亚洲成人av在线影院| 尤物网址在线观看| 亚洲综合在线免费| 自拍亚洲国产| 碰草在线视频| 国产www在线观看| 天天av综合网| 青青九九免费视频在线| 91美女在线| 国产精品美女一区二区三区四区| 麻豆精品免费视频入口| 伊人影院在线视频| 国产成免费视频| 午夜视频免费在线观看| aaa大片在线观看| 国产精品伦一区二区三区视频 | 国产人成在线观看| 九九视频精品在线| 青青草原国产在线| 性色视频在线| av手机免费观看| 精品176二区| 97影院秋霞午夜在线观看| 国产一级在线观看| 五月伊人六月| 国产麻豆麻豆| 国产在线观看a视频| a视频在线看| 碰草在线视频| 男人天堂亚洲| 狠狠干天天干| 国产在线视频福利| 国产理论片免费观看| 久久er视频| 超碰在线97国产| 精品资源在线看| 国内精品不卡| 国产视频97| 伊人春色在线| 青草视频在线播放| 国产精品自拍在线观看| 五月伊人六月| 国产精品视频h| 精品国产美女福利到在线不卡| 国产95在线|亚洲| 精精国产xxxx视频在线动漫| 中文av资源在线| а天堂8中文最新版在线官网| 日本调教视频在线观看 | 国产在线更新| 国产成人亚洲欧美电影| 精品美女在线观看视频在线观看 | heisi视频网在线观看| www.色婷婷| 五月综合激情在线| 99在线播放| 九九在线免费视频| 国产成人精品实拍在线| 欧美韩日国产| 91在线高清| 综合蜜桃精品| 四虎www视频| 国产经典av| 狠狠操视频网站| 在线视频中文字幕第一页| 黄色在线视频观看网站| 国产日韩欧美精品一区二区三区 | 最近中文字幕mv2018在线高清| 国产日韩精品在线看| heisi视频网在线观看| 国产一级黄色片免费| www狠狠操| 中文一区在线观看| 国产网站在线播放| 99热在线免费观看| 久久亚洲资源| av网站大全在线观看| 中文字幕av中文字幕| 欧美日韩视频精品一区二区| 国产黄色小视频| 国产视频第一区| 天堂在线亚洲| 国产精品天堂| 中文字幕成人乱码在线电影| 欧美日韩在线视频免费观看 | 亚洲成人在线播放| 91九色在线看| 国产大学生粉嫩无套流白浆| 中文字幕在线资源| 国产免费黄视频在线观看| 香蕉视频在线看| av在线你懂的| 欧美韩日国产| 狠狠操视频网| 午夜视频99| 国产精品伦一区二区三区视频| 国产一级视频| 777电影在线观看| 亚洲综合激情六月婷婷在线观看 | av一本在线| wwwww在线观看免费视频| www.三区| 天堂亚洲精品| 国产黄色av免费看| 99久久99热久久精品免费看| 亚洲成a人v欧美综合天堂麻豆| a视频免费看| 国产精品自产拍在线网站| 五月天婷婷基地| 精品av中文字幕在线毛片| 精品网站www| xxxx视频在线| 国产偷倩在线播放| 亚洲综合在线免费| 国产男女无套在线播放| 97影院理论午夜| 狠狠色丁香婷婷| 国产福利在线播放| 日本18视频网站| 国产视频三区| 免费a级人成a大片在线观看| 国产黄色在线播放| 久久久久久久久久久久久91| 91精选福利| 国产色视频网站| a视频免费看| 国产精品视频一区二区久久| 四虎成人精品在永久在线观看| 91超碰免费在线| 日本电影在线观看| 精品伦理一区二区| 国产天堂资源| 国产精品作爱| sese一区| 亚洲成a人v欧美综合天堂麻豆|