Уведомления

Jabber-конференция сообщества: pythonua@conference.jabber.ru

#1 Июнь 13, 2007 11:55:14

guest01
От:
Зарегистрирован: 2007-03-24
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверка на валидность email'a

Представьте есть список email'ов. И нужно проверить какой из них валидный (существующий), а какой уже списанный. При этом человек владеющий данным адресом почты не должен почувствовать этого (т.е. не нужно его беспокоить присылая всякий спам). Сейчас я смотрю в стандартные модули, а именно email. И так как я жуткий лентяй, то прошу поделиться Вас своим опытом (если есть).



Офлайн

#2 Июнь 13, 2007 12:22:15

Maximbo
От:
Зарегистрирован: 2006-11-04
Сообщения: 137
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверка на валидность email'a

Чёткого ответа не знаю, но сами посудите: если бы стандартными средствами можно было “пингануть” email, как быстро бы наполнялись спамерские базы, путём обычного словарного перебора. И роботов-пауков писать не пришлось бы.

Кстати, вы случаем не торговец адресными базами? Иной пользы от подобных шпионских проверок не видно.



Офлайн

#3 Июнь 13, 2007 12:47:49

guest01
От:
Зарегистрирован: 2007-03-24
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверка на валидность email'a

Maximbo
Кстати, вы случаем не торговец адресными базами? Иной пользы от подобных шпионских проверок не видно.
Ну нет ). Просто у меня большой список email' ов и мне нужно удалять информацию с сервера о ненужных (невалидных). Честно ). У меня благородные цели (не вылететь с работы).



Офлайн

#4 Июнь 13, 2007 13:13:35

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

Проверка на валидность email'a

странная задача. а ваша база e-mail – это в принципе адреса на разных серверах, или на вашем собственном сервере?



Офлайн

#5 Июнь 13, 2007 14:18:07

guest01
От:
Зарегистрирован: 2007-03-24
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверка на валидность email'a

bialix
странная задача. а ваша база e-mail – это в принципе адреса на разных серверах, или на вашем собственном сервере?
На нашем собственном. Только я не знаю как к нему достучаться. Может через Outlook как нибудь проверять … Там ведь есть записная книжка, где есть все адреса. Вообщем не понятно пока.



Офлайн

#6 Июнь 13, 2007 15:19:38

guest01
От:
Зарегистрирован: 2007-03-24
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверка на валидность email'a

Вот такой вот скрипт отрыл. То что нужно, но говорит, что записей 0. И правда! Кстати Outlook 2003 SP 2 у меня. Контактов у меня действительно 0. Мне нужно в Address Book залезть. Ищу в MSDN.

import win32com.client

DEBUG = 0

class MSOutlook:
def __init__(self):
self.outlookFound = 0
try:
self.oOutlookApp = \
win32com.client.Dispatch("Outlook.Application")
self.outlookFound = 1
except:
print "MSOutlook: unable to load Outlook"

self.records = []


def loadContacts(self, keys=None):
if not self.outlookFound:
return

# this should use more try/except blocks or nested blocks
onMAPI = self.oOutlookApp.GetNamespace("MAPI")
ofContacts = \
onMAPI.GetDefaultFolder(win32com.client.constants.olFolderContacts)

if DEBUG:
print "number of contacts:", len(ofContacts.Items)

for oc in range(len(ofContacts.Items)):
contact = ofContacts.Items.Item(oc + 1)
if contact.Class == win32com.client.constants.olContact:
if keys is None:
# if we were't give a set of keys to use
# then build up a list of keys that we will be
# able to process
# I didn't include fields of type time, though
# those could probably be interpreted
keys = []
for key in contact._prop_map_get_:
if isinstance(getattr(contact, key), (int, str, unicode)):
keys.append(key)
if DEBUG:
keys.sort()
print "Fields\n======================================"
for key in keys:
print key
record = {}
for key in keys:
record[key] = getattr(contact, key)
if DEBUG:
print oc, record['FullName']
self.records.append(record)


if __name__ == '__main__':
if DEBUG:
print "attempting to load Outlook"
oOutlook = MSOutlook()
# delayed check for Outlook on win32 box
if not oOutlook.outlookFound:
print "Outlook not found"
sys.exit(1)

fields = ['FullName',
'CompanyName',
'MailingAddressStreet',
'MailingAddressCity',
'MailingAddressState',
'MailingAddressPostalCode',
'HomeTelephoneNumber',
'BusinessTelephoneNumber',
'MobileTelephoneNumber',
'Email1Address',
'Body'
]

if DEBUG:
import time
print "loading records..."
startTime = time.time()
# you can either get all of the data fields
# or just a specific set of fields which is much faster
oOutlook.loadContacts()
#oOutlook.loadContacts(fields)
if DEBUG:
print "loading took %f seconds" % (time.time() - startTime)

print "Number of contacts: %d" % len(oOutlook.records)



Отредактировано (Июнь 13, 2007 15:30:10)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version