首页 > 其他分享 >发送邮件

发送邮件

时间:2024-01-17 17:34:10浏览次数:28  
标签:users 发送 msg dict user print 邮件

import time
import random

'''
定义一个函数,展示菜单栏
'''

def random_code():
number = random.randint(100000, 999999)
return number

定义一个函数发送邮箱

def send_email(receiver_email, info):
# zyxkyiufoghagije
import smtplib
from email.mime.text import MIMEText
from email.header import Header
msg_from = '[email protected]' # 发送方邮箱
passwd = 'zyxkyiufoghagije' # 填入发送方邮箱的授权码(填入自己的授权码,相当于邮箱密码)
msg_to = receiver_email # 收件人邮箱
# msg_to = ['','','']

subject = '数加系统'  # 主题
content = info
# 生成一个MIMEText对象(还有一些其它参数)
msg = MIMEText(content)
# 放入邮件主题
msg['Subject'] = subject
# 也可以这样传参
# msg['Subject'] = Header(subject, 'utf-8')
# 放入发件人
msg['From'] = msg_from
# 放入收件人
# 通过ssl方式发送,服务器地址,端口
s = smtplib.SMTP_SSL("smtp.qq.com", 465)
# 登录到邮箱
s.login(msg_from, passwd)
# 发送邮件:发送方,收件方,要发送的消息
s.sendmail(msg_from, msg_to, msg.as_string())
print('验证码发送成功!!')

def init():
print('欢迎进入数加登录系统'.center(50, '-'))
print('''1.注册\n2.登录\n3.查看用户信息\n
''')

写一个公共的获取所有用户的信息,返回一个用户字典

def get_all_users():
# 新建一个字典,存储用户信息
users_dict = {}

# 打开文件
with open('users.txt', mode='r', encoding='UTF-8') as f:
    content = f.read()  # 读取全文的内容
    user_list = content.split('\n')  # ['root,qwerdf', 'xiaohu,123456', '']
    # 最后一个是空字符串
    user_list.pop(-1)  # ['root,qwerdf', 'xiaohu,123456']
    # 遍历列表得到字典
    for user in user_list:
        # 'root,qwerdf'
        users_dict[user.split(',')[0]] = user.split(',')[1]

return users_dict

def register():
print('-' * 50)
print('欢迎注册!!')
while True:
name = input('请输入您的用户名:')
# 验证用户是否重复
users_dict = get_all_users()
if name not in users_dict:
break
print('')
print('该用户名已经被使用!!')
print('
')

password = input('请输入您的密码:')
# TODO: 自己加邮箱发送验证码的功能
user_email = input('请输入您的邮箱: ')
# 生成验证码
yzm = random_code()
# 调用发送验证码的功能,发送验证码
send_email(user_email, f'【数加科技】您的验证码是: {yzm}, 在60秒之内使用,请勿泄露给他人。')
yzm_code = input('请输入验证码: ')
if yzm_code != str(yzm):
    print('注册失败!!')
    return None
with open('users.txt', 'a', encoding='UTF-8') as f:
    f.write(f'{name},{password}\n')
time.sleep(3)
print(f'{name}用户注册成功!!')

def login():
print('欢迎进入数加登录页面'.center(50, '-'))
username = input('请输入要登录的用户名: ')
# 打开文件,读取用户数据
users_dict = get_all_users()
if username not in users_dict:
print('该用户不存在,请先注册!!')
return None

password = input('请输入密码: ')
if password != users_dict.get(username):
    print('登录失败!!')
    return None
print('登录成功!!')

def show():
print('当前系统用户信息'.center(50, '-'))
users_dict = get_all_users()
for user in users_dict.items():
print(f'用户名:{user[0]}, 密码:{user[1]}')

if name == 'main':
# 列出菜单
init()
dict1 = {
'1': register,
'2': login,
'3': show
}

flag = True
while flag:
    choice = input('请输入您的选择(1/2/3): ')
    if choice not in dict1:
        print('没有您所选的选项!重新输入')
        continue
    fun1 = dict1.get(choice)
    fun1()
    flag = False

标签:users,发送,msg,dict,user,print,邮件
From: https://www.cnblogs.com/pecular/p/17970570

相关文章

  • FlashDuty Changelog 2023-12-18 | 值班管理、服务日历、自定义操作和邮件集成
    FlashDuty:一站式告警响应平台,前往此地址免费体验!值班管理UI交互优化【个人日程】从头像下拉菜单调整到值班列表页面,快速查看个人值班日程【值班列表】支持原地预览最近一周值班情况,包括当前和下一阶段值班人【值班详情】支持日历模式与时间线模式切换,查看月度计划更方便......
  • 邮件中添加图片内容
    背景:质量分析的数据是在网页端,每月质量分析结束后需要发送邮件。因为网页端的数据已经统计好了,并且展示形式也满足使用需求,只需要把网页端的数据通过邮件发送即可。已经通过dp获取到了网页端的全屏截图本地保存了,只需要邮件把截图发送出去即可。本来使用的是email.mime下的mul......
  • WPS邮件合并:将图片名称通过WPS整体成文档
    项目介绍项目功能介绍(影像志):将文件夹下的所有图片名称(图1)批量制作成word中的样式(图2)。图1图2项目章节/知识点获取文件夹下的所有文件名称Excel表格数据分列Word邮件合并观察/思考/总结1、文件夹下的所有图片名称包括:日期+文字说明+摄影者。2、Word效果图中包括:照片号+摄影者+摄影时......
  • 安卓多网卡UDP通信 指定发送数据包的网卡
    mUDPSocket=newMulticastSocket(PORT);NetworkInterfaceeth0=NetworkInterface.getByName("eth0");mUDPSocket.setNetworkInterface(eth0);看一下setNetworkInterface这个函数的注释......
  • Python和RPA网页自动化-发送邮件
    以163邮箱为例,分别使用Python和RPA网页自动化发送邮件到指定邮箱其中2个方法都需要用到163邮箱授权码,开启IMAP/SMTP服务即可得到授权码(POP3/SMTP服务不用开启) 1、python代码如下importsmtplibfromemail.mime.textimportMIMETextfromemail.headerimportHeaderdef......
  • QTcpSocket发送存储QObject的QList
     #include<QTcpSocket>#include<QDataStream>#include<QByteArray>voidsendObjectList(QTcpSocket*socket,constQList<QObject*>&objectList){QByteArrayserializedData;QDataStreamout(&serializedData,QIODev......
  • CAN通信配置过滤器和使用三个邮箱发送
    RM比赛用的电机基本都使用CAN通信,但是一条CAN线上只用一个发送邮箱在挂在设备多的情况可能会导致发送不完,但其实完全可以把三个发送邮箱都用上。这里贴一下自己的CAN筛选器,接收以及发送的代码。完整的工程可以看我开源的飞机云台程序~项目代码开源地址:https://github.com/ittuann......
  • C#调用webapi发送带json参数的post请求
    嗯。。很久不更新,因为跳槽新公司了,要学的东西太多太忙了。也没时间记录,今天又写了一个C#调用webapi发送带json参数的post请求拿数据的方法,所以来到这里记录一下///<paramname="url">请求地址</param>///<paramname="jsonParas">请求体</param>///<paramnam......
  • Django客户端应用1向服务端应用2发送POST请求并接收解析数据
    一、应用1发送post请求deflogin(url,data):response=requests.post(url,json=data)ifresponse.status_code==200:result=response.json()print(result)returnresultelse:returnNonetry:url="htt......
  • promethues通过alertmanager通过企微发送告警
    ###alertmanager的目录[root@test/data/software/alertmanager]#lltotal62512-rwxr-xr-x13434343435410965Aug2419:12alertmanager-rw-r--r--134343434727Nov3014:33alertmanager.yml-rwxr-xr-x13434343428566971Aug2419:13amtool-rw-r--r......