ruby on rails - que - cómo generar un enlace para darse de baja del correo electrónico
https mailrelay com es (2)
Si tiene un modelo para EmailTemplate y un modelo para el suscriptor, entonces su código podría ser algo así como:
@email_template = EmailTemplate.find(3)
@email_template.subscribers.each do |subscriber|
Notifier.deliver_template(:email_template=>@email_template, :subscriber=>subscriber)
end
entonces, podrías cambiar a
email_delivery = EmailDelivery.create(:email_template=>@email_template, :subscriber=>subscriber)
Notifier.deliver_template(email_delivery)
Y luego el before_create de email_delivery genera un token. Un generador de contraseñas aleatorias por email_delivery debería ser bueno. SecureRandom hace un buen trabajo con tokens aleatorios: p SecureRandom.hex(10) #=> "52750b30ffbc7de3b362"
Incluye ese token de email_delivery en tu correo electrónico y luego haz una búsqueda basada únicamente en eso.
Tengo una aplicación de rieles simple donde el usuario puede enviar un correo electrónico masivo a más de 10 personas. En este correo electrónico me gustaría tener siempre un enlace en la parte inferior, en el que el usuario final puede hacer clic para darse de baja de las notificaciones. No tengo mucha idea de cómo debería abordar esto.
¿Puede haber solo un enlace genérico en el correo electrónico en el que los usuarios hacen clic y luego ingresar su dirección de correo electrónico para darse de baja? Pero el problema con esto es que algún otro usuario podría dar de baja a otra persona.
Me gustaría generar un enlace único específico para cada correo electrónico, de modo que cuando el usuario lo haga clic, lo elimine automáticamente de la lista en lugar de que el usuario tenga que hacer un trabajo adicional.
¿Dónde debería comenzar para implementar esto?
Sus enlaces para darse de baja podrían ser así: http://host/application/[email protected]&token=598bbdf39bc8f27b07fe85b6a7dd8decef641605
Genera el token usando la dirección de correo electrónico y un token mágico. Idealmente, usaría HMAC con SHA256, pero incluso solo sha1 debería ser "suficientemente bueno":
$ echo "secret token [email protected]" | sha1sum
598bbdf39bc8f27b07fe85b6a7dd8decef641605 -
La porción del secret token
se arreglaría en su aplicación, y el [email protected]
debe coincidir con la dirección de correo electrónico.
Por supuesto, si alguna vez se revela el token secreto, estás de vuelta con cualquiera que haya cancelado la suscripción a todos. También podría almacenar tokens mágicos por usuario en su base de datos para validar los tokens en las URL, eso no sería mucho más difícil que esto, y definitivamente mucho más seguro.