Bu yeni kod bloğundaki Ruby ve biraz da grep komutuyla karıştırıyorum. Tüm posta kutusu adlarını Net :: IMAP aracılığıyla toplamaya çalışıyorum ve sonra bunları bir posta kutusu argümanına karşı kontrol ediyorum. Muhtemelen posta kutusu adı sadece argümanın bir kısmını içerecektir. Örneğin, bir kişi posta kutusu olarak "Gönderildi" olarak yazabilir, ancak birçok kez posta kutusu adı "INBOX.Sent" olacaktır.Ruby grep - bir dizinin parçaları için bir dizi aranıyor
class ExamineMail
def initialize(user, domain, pass, box)
@username = user
@domain = domain
@pass = pass
@mailbox = box
end
def login()
@imap = Net::IMAP.new("mail." + @domain)
@imap.authenticate('LOGIN', @username + "@" + @domain, @pass)
mailbox_array = @imap.list('','*').collect{ |mailbox| mailbox.name }
#mailbox_array.any? { |w| @mailbox =~ /#{w}/ }
mailbox_array.grep(/^@mailbox/)
end
end
İlk önce denedim. ama bu bana gerçek posta kutusunun adını vermiyor. .grep
ile, @mailbox = "INBOX"
adresinden posta kutularının listesini alabiliyorum. Ancak, @mailbox = "Sent"
, []
değerini döndürür. İşte
#Get the list of inboxes
mailbox_array = imap.list('','*').collect{ |mailbox| mailbox.name }
=> ["INBOX", "INBOX.Trash", "INBOX.Sent", "INBOX.Sent Messages", "INBOX.Junk", "INBOX.Drafts", "INBOX.Deleted Messages", "INBOX.Apple Mail To Do"]
#Search for mailboxes including "Sent"
>> mailbox_array.grep(/^Sent/)
=> []
#Search for "INBOX"
>> mailbox_array.grep(/^INBOX/)
=> ["INBOX", "INBOX.Trash", "INBOX.Sent", "INBOX.Sent Messages", "INBOX.Junk", "INBOX.Drafts", "INBOX.Deleted Messages", "INBOX.Apple Mail To Do"]
Sorun "POSTALAR" altında olduğunu düşünüyorum dizideki dizelerin başlangıcı, ancak "Gönderilen" ortada ve bir süre sonra. Nasıl düzeltileceğinden emin değilim. dize sadece başlangıcı
Hmm bu da işe yarıyor. Sanırım gerekli değil. – krapdagn
@krapdagn: yup, bununla birlikte isteyebileceğiniz veya istemediğiniz "Sentiments" ve "MySentMail" gibi dizeleri de eşleştirebilir. – maerics