I need to send custom emails to users after verifying their applications are correct in django admin.The emails are to be sent to a single user and each message will be different depending on the application of the user.I needed to ask whether this is possible in django admin and if so, how can I do it without hardcoding the message each time I want to send the email?
You can use django signals there you should check that applivation was verified and send email to user. Content for email you can generate from template by rendering it to string and send it as email's body. Content will be depend on context which you put to render
Related
I'm working on a project, the frontend is being built using React while I'm using Django Rest Framework for the backend.
I want to send verification and password reset mail to the user.
I know I can set emails sub folder in my templates directory, and send the appropriate mail.
Is there a way I can navigate that, in the sense that the frontend should be the one to set up the mail design and send the design to the backend while I handle the parameters that should be In the mail and send the mail on the backend?
Want to integrating Email service with Django using Mailchimp.
I want to essentially use mailchimp for all email communications - new user registration on the site, forgot password etc.
What I want to do is something like -
1.Setup a specific email in mailchimp, such as the 'forgot password email'
When a user forgets their password, I want to trigger mailchimp to send the specified mail
Does anyone have experience doing the above?
Thanks
Django provides several views that you can use for handling login, logout, and password management. You have to check documentation: Authentication Views.
Then you can use them like here:
How to Use Django's Built-in Login System or How to Create a Change Password View
I know that your are asking about mailchimp but check this:
https://simpleisbetterthancomplex.com/tutorial/2017/05/27/how-to-configure-mailgun-to-send-emails-in-a-django-app.html
Here you have nice tutorial how to configure Mailgun to send emails in a Django project.
ps. great django blog check it out!
I was wondering how can I store sent emails
I have a send_email() function in a pre_save() and now I want to store the emails that have been sent so that I can check when an email was sent and if it was sent at all.
I think the easiest way before messing up with middleware or whatever is to simply create a model for your logged emails and add a new record if send was successful.
Another way to look at it: send the mail to your backup email account ex: backup#yourdomain.com. So you can store the email, check if the email is sent or not.
Other than that, having an extra model for logged emails is a way to go.
I would suggest making use of an existing django mail app.
django-mailer may do the trick. It has a message log.
I think it is best not to send email directly from views, your views then won't get blocked if your mail server happens not to be functioning, so that's another reason to use something like this.
I have simple form for create new user in Django.
Also I want that request (from user) forward to the administrator's email, and just admin can enable that account. User has to wait respond from admin. If admin enable that account, user is going to be able to use account!
Create the user with is_active = False, Then you can easily filter those user on django admin panel.
Or you can use django signal such as post_save signal to send an email to administrator's email, email can be included with an activation link which is unique for activating the user.
You can create a separate model to keep inactivated user and for each record generate an random-hashed key. You can use that random-hashed key (token) in activation link that you sending to administrator's email.
There is already some application that let you to handle registration, for example django-registration. But your case it little bit tricky. Because you want to admin be able to activate those users. So I suggest you to look at django-registration source code. It's so clear and easy to understand. Just read the code and you will get the point.
I found the django-registration app, but it seems to complex for what I am trying to do. I want users to simply enter their e-mail (username) + a password and automatically be registered. No activations or confirmations. Hacker News style. Does anyone know what the simplest way to implement this would be? Is there something pre-existing out there that you know of (I couldn't find anything), should I somehow modify django-registration, or build this on my own?
Login/Authentication
To make Django authenticate using email/password instead of username/password, you will need to add to your settings.py:
AUTHENTICATION_BACKENDS = ('myproject.myauthenticationbackend')
This authentication backend needs to be able to authenticate a user based on email/password. A good email authentication backend can be found here: http://djangosnippets.org/snippets/74/
User Registration
Normally, your registration form will ask user for the email and password. However, Django's auth User model requires every user have a username. One way to handle adding a username is - upon saving of the registration modelForm, generate a random username (since we're not using it anyways).
You will need to check manually that the email the user has entered is already registered in your system.
I've also written a blog post about it a while back and has more complete notes on email authentication. It also includes a sample email/password registration form:
http://www.xairon.net/2011/05/django-email-only-authentication/
I don't know any app which is doing that but it seems quite simple. I don't think it is necessary to modify and use django-registration in this case.
Create a form that will ask for email and password and then create the corresponding user. The username may be generated from a slug of the email address.
Look at the following snippet for allowing to authenticate with an email address. http://djangosnippets.org/snippets/74/