本帖最后由 sherlo 于 2018-8-14 09:35 编辑
表弟是个大二的学生,成绩还不错,但是由于性格比较内向,连和女生多说几句话都不敢,这可把我急得,于是教了表弟 一个 '古老'的表白方法。
对,就是简单粗暴的使用控制台打印一些好看的符号或者情话。表弟刚开始觉得有点老掉牙,说“这好几年前的东西了,有点老掉牙了,而且我也不知道对方是否接受我呢(我又不敢多问)!”
针对表弟这个需求 ,于是便有了自动获取对方的输入(接受,拒绝之类的)并返回给自己,顺便获取对方IP地址并根据对方的选择自动发送相应的回复邮件(基于SMTP)
以下内容主要提供思路,根据自己的需求自行发挥,同时需要将py文件打包成exe文件(对方才能在没有python的情况下运行),不会的请多百度一下
1.首先输入一个好看的’图形‘吧(网上一大堆例子,可以选择自己喜欢的),我这里也提供一个 ,大概样子就是顺序输出’Dear,I love you‘
[Python] 纯文本查看 复制代码 import time
sentence = "Dear, I love you forever!"
for char in sentence.split():
allChar = []
for y in range(12, -12, -1):
lst = []
lst_con = ''
for x in range(-30, 30):
formula = ((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3
if formula <= 0:
lst_con += char[(x) % len(char)]
else:
lst_con += ' '
lst.append(lst_con)
allChar += lst
print('\n'.join(allChar))
time.sleep(1)
2.‘花里胡哨’的东西运行了,如果需要获取对方IP(保证对方网络通畅),将以下代码写入整个py文件中 。原理就是发送一个request请求到目标网址(查IP的)http://httpbin.org/ip,把得到的response记录下来待会同时发到邮箱中保存!代码如下[Python] 纯文本查看 复制代码 headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
}
try:
resp=requests.get('http://httpbin.org/ip',headers=headers,timeout=3)
ip=resp.json()['origin']
except requests.exceptions.ConnectionError:
print('请保证网络通畅,无网络!')
except requests.exceptions.ReadTimeout:
print('请保证网络通畅,程序即将退出!')
time.sleep(5)
os.system(exit())
3.然后 ,发挥你的文字功底,开始你的表演了,类似这样:
[Python] 纯文本查看 复制代码 list=['666,我太高兴了','这虽然不是我想要的结果,但我尊重你的选择!','我会加倍努力,让你接受我的!']
print('亲爱的,我喜欢你很久了,你愿意接受我吗?(1:接受 2:不接受 3:暂时不考虑)')
print('你有10秒考虑时间,请仔细考虑!')
time.sleep(10)
print('请遵从你的内心大胆输入,一次就好:')
a=input()
while(a!='1' and a!='2' and a!='3'):
print('输入错误,请重新输入!:')
print('1:接受,2:不接受 3:暂时不考虑')
a=input()
解释一下这个list,list里面存放你将发给对方邮箱的内容 ,对应我写的3个选择(你可以增加或者减少选择)
4.根据第三步获取到的输入(a),传入到一个发送邮件的函数中 ,对方能获取到一封来自你的邮件,在已发送中可查看详情并判断对方的选择。
[Python] 纯文本查看 复制代码 def send(a):
#以qq邮箱为例
smtpserver = 'smtp.qq.com'
user = '发送方(你)的邮箱账号'
password = '发送方(你)的邮箱的SMTP授权码'
sender ='发送方(你)的邮箱账号'
#receive为接收方,也可以写自己(不让对方知道)
receive = '接收方(她)的邮箱账号'
#subject为邮件主题
subject ='Dear'
#定义格式及输入内容
msg=MIMEText('<html><h1>%sIP:%s</h1></html>'%(list[a-1],ip),'html','utf-8')
msg['Subject']=Header(subject,'utf-8')
#执行发送操作
smtp = smtplib.SMTP()
smtp.connect(smtpserver)
smtp.login(user,password)
smtp.sendmail(sender,receive,msg.as_string())
smtp.quit()
send(int(a))
print('谢谢你的选择!')
time.sleep(5)
补充说明一下,以qq邮箱为例,它的发送功能的实现需设置开通SMTP服务 ,开启后会有一个授权码,在password中填入,如果怕不安全可以用自己的小号充当这个发送方(怕对方抓包,我考虑的有点多了),只要接收方确定就行,在代码msg=MIMEText('<html><h1>%sIP:%s</h1></html>'%(list[a-1],ip),'html','utf-8')中,根据对方输入的a的值输出了list列表中对应内容及对方IP,如果不需要IP删掉对应代码即可!如图:
再次强调 :我仅提供思路,语言方面请自行修改,争取get到你的对象 !
另外:如果你确定只跟一个人表白(这样最好哈),最好自己把receieve写死,如果你像我表弟喜欢的不止一个(哈哈哈),又懒得每次都修改下发送对象并且需要生成不同的exe,可以尝试先定义一个列表存储你要发送的所有人的qq,并添加一个input(),让对方输入自己的qq号,并判断在列表中是否存在(防止对方乱写),然后将这个输入的值传入到receive中就可以了。当然 receieve也可以写成自己,没了回复效果但是能知道对方的选择。至于对方多次运行这个exe,并尝试选择不同的回应,这个不可控哈。
关于IP的题外话,获取到的IP可以实现精确定位http://chaipip.com/ip.php
这里我放一个exe的demo,帮助没有打包经验的同学看看运行效果。单纯只有print功能的哈,至于为什么,看懂这个帖子就不会纠结了。
链接: https://pan.baidu.com/s/1Fz0Gh-1_doaCevfrmY99AQ 密码: b8uc
|