导入vcard时出错。用python生成的Vcard,用于阻止垃圾邮件发送者的范围码或区号

2024-09-29 21:59:41 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我试图制作一个vcard来阻止来自给定区号范围的垃圾邮件发送者,但是在创建vcard之后,它无法加载到mac或iOS联系人中。你知道吗

模板vcard如下所示:

BEGIN:VCARD
VERSION:3.0
PRODID:-//Apple Inc.//Mac OS X 10.12.6//EN
N:;Spamers;;;
FN:Spamers
TEL;type=CELL;type=VOICE;type=pref:5555550000
TEL;type=OTHER;type=VOICE:555555-0001
X-ABUID:5E9A1363-5432-4463-9389-925B40FB3C29:ABPerson
END:VCARD

然后我用这个python代码插入更多行:

In [13]: s="TEL;type=OTHER;type=VOICE:55555%d-%04d\n" 

In [24]: f=open('Spamers.vcf','a')

In [25]: for j in range(10):
   ....:     for k in range(10000):
   ....:         if ((j==5) and (k==5555)): 
   ....:             pass
   ....:         else:
   ....:             f.write(s % (j,k))
   ....:             

In [26]: f.close()

然后将最后两行移到底部。但正如我上面所说,这个vcard无论出于什么原因都已损坏,并且不会导入mac或iOS联系人。你知道吗


Tags: informactype垃圾邮件联系人rangevcard
1条回答
网友
1楼 · 发布于 2024-09-29 21:59:41

似乎两人都无法处理庞大的联系人名单。大约1000是突破点…这个代码对我有用

from sklearn.utils.extmath import cartesian
from numpy import remainder,floor,sum

number= "5555555555"
noblockList=[]
noblockList.append(number)

digrang="0000012222"
digrangArray=[]
combPow=0
for i,(sn,sdr) in enumerate(zip(number,digrang)):
    if sdr!='0':
        combPow+=1
        digArray=[]
        for j in range(max([0,int(sn)-int(sdr)]),min([10,int(sn)+int(sdr)+1])):
            digArray.append((j-int(sn))*10**(9-i))
        digrangArray.append(digArray)
digrangArray=sum(cartesian(digrangArray),1)+int(number)

headS="""BEGIN:VCARD
VERSION:3.0
PRODID:-//Apple Inc.//Mac OS X 10.12.6//EN
N:;Spamers%d_DigiRange;;;
FN:Spamers%d_DigiRange\n"""

footerS="""X-ABUID:0B4EBF58-D295-49FC-B850-85C8D97870FF:ABPerson
END:VCARD\n"""

s="TEL;type=OTHER;type=VOICE:%010d\n" 

f=open('Spamers_%d_DigiRange.vcf' % (int(number[:5])),'w')
f.write(headS % (int(number[:5]),int(number[:5])))
f.write("TEL;type=CELL;type=VOICE;type=pref:%010d\n" % (digrangArray[0]))



for dra in digrangArray[1:]:
    if any([(dra==int(num)) for num in noblockList]):  
        pass
    else:
        f.write(s % dra)
f.write(footerS)
f.close()

相关问题 更多 >

    热门问题