Aquí hay algunos fragmentos de cómo funciona la mina, que podrían ser de ayuda.
El usuario envía su información a través de un formulario …
- ¿Se puede construir una aplicación web en Python?
- Cómo implementar una aplicación web en una VPC de AWS
- ¿Cuál es el lenguaje de programación más utilizado para el desarrollo de una aplicación web?
- ¿Qué es la aplicación PCBA?
- ¿Cuáles son algunas aplicaciones, problemas que sugeriría para resolver un nuevo desarrollador de Python?
La ruta del matraz ‘/ email-sub /’ luego valida el correo electrónico (aunque puede hacer que su formulario lo haga) y luego envía un correo electrónico: la dirección de correo electrónico se serializa en una clave secreta y se pasa al correo electrónico …
# Suscripción de e-mail
@ app.route (‘/ email-sub /’, métodos = [‘GET’, ‘POST’])
def email_sub ():
email = request.form [’email_subs’]
# validación básica
si no ‘@’ en el correo electrónico:
flash (‘ingrese una dirección de correo electrónico válida. Ingresó {}.’. formato (correo electrónico))
redirección de retorno (request.referrer)
más:
s = URLSafeSerializer (‘clave secreta’)
secret_email = s.dumps (correo electrónico)
send_email (email, ‘¡allí!’, secret_email, ‘Suscribiéndose!’)
flash (‘¡Por favor revise su correo electrónico!’)
redirección de retorno (request.referrer)
La función de envío de correo electrónico …
def send_email (correo electrónico, nombre, clave_enlace, asunto, mensaje = Falso):
# enviar correo electrónico con enlace de confirmación !!
gmail_user = ”
gmail_pwd = ”
a = correo electrónico
smtpserver = smtplib.SMTP (“smtp.gmail.com”, 587)
smtpserver.ehlo ()
smtpserver.starttls ()
smtpserver.ehlo
smtpserver.login (gmail_user, gmail_pwd)
header = ‘To:’ + to + ‘\ n’ + ‘From:’ + gmail_user + ‘\ n’ + ‘Asunto:’ + subject + ‘\ n’
si mensaje:
msg = encabezado + msg
más:
msg = encabezado + ” ‘
Gracias por suscribirse, para evitar el spam, haga clic aquí para confirmar http://www.craigaddyman.com/sub/ ” ‘+ link_key +’ ”
” ‘
smtpserver.sendmail (gmail_user, to, msg)
smtpserver.close ()
Luego, una vez que haga clic en el enlace, la clave secreta no se cifra y se agrega a la base de datos, en este caso, estoy usando MongoDB …
@ app.route (‘/ sub / ‘, métodos = [‘GET’, ‘POST’])
def suscribirse (clave):
s = URLSafeSerializer (‘clave secreta’)
email = s.loads (clave)
mdb = client.blog
mdb.subscriberssub.update ({‘usuario’: correo electrónico}, {‘usuario’: correo electrónico}, upsert = True)
…
Lo bueno de esto es que el usuario debe confirmar el correo electrónico antes de que llegue a mi base de datos y no antes, esto ayuda a reducir el spam, etc.
También hay una ruta para darse de baja, esto simplemente hace lo mismo, aunque elimina el correo electrónico de la base de datos en lugar de agregarlo.
**Renuncia**
Escribí este código hace bastante tiempo y podría funcionar con la actualización y el orden, pero funciona 🙂