over 7 years ago
I have a site which sends out emails through my corporate email account (Outlook), here are the steps need to send emails using Django:
Let's say my username is cheng@blah.com
and the password is 123
for my email account.
- Make sure the following settings are in your
settings.py
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'email.blah.com' # double check the settings in your outlook mailbox to make sure the host name is correct
EMAIL_PORT = 587 # double check the settings in your outlook mailbox and make sure the port number is correct
EMAIL_HOST_USER = 'cheng' # don't include the @blah.com part! I have made this stupid mistakes before
EMAIL_HOST_PASSWORD = '123'
- In your code:
from django.core.mail import EmailMessage
import traceback
def send_email():
email = EmailMessage(
subject='subject',
body='message',
from_email='cheng@blah.com',
to=['someone1@blah.com', 'someone2@blah.com'],
cc=['someone3@blah.com'],
reply_to=['cheng@blah.com'], # when the reply or reply all button is clicked, this is the reply to address, normally you don't have to set this if you want the receivers to reply to the from_email address
)
email.content_subtype = 'html' # if the email body contains html tags, set this. Otherwise, omit it
try:
email.send(fail_silently=False)
return HttpResponseRedirect(reverse('apply:success'))
except Exception:
print traceback.format_exc() # you probably want to add a log here instead of console printout
That should be it :)