Django / Sending email with Mail Service Prodiver like Mailjet - django

I have installed django-anymail
My SPF and DKIM are configured in my ISP
Here is my settings.py :
EMAIL_BACKEND = "anymail.backends.mailjet.EmailBackend"
ANYMAIL = {
"MAILJET_API_KEY": os.getenv('MYAPP_MAILJET_API_KEY'),
"MAILJET_SECRET_KEY": os.getenv('MYAPP_MAILJET_API_SECRET'),
}
EMAIL_HOST = 'in-v3.mailjet.com'
EMAIL_HOST_USER = '????'
EMAIL_HOST_PASSWORD = '????'
EMAIL_HOST_PORT = 587
Views.py
send_mail('contact form','click',mail1,[mail2],fail_silently=False)
I got confused for
EMAIL_HOST_USER and EMAIL_HOST_PASSWORD
As I want to use mailjet, is it necessary ? Also is send_mail the right function in this case ?

Related

How can I get Django to send error emails on status codes above 500?

I have migrated an old codebase to a new server and am now running Django 4.0.5.
I can send emails from the shell as follows:
from django.core.mail import mail_admins
mail_admins(subject='test', message='test')
But I don't receive any emails on 500 or higher errors.
My settings are:
DEBUG = env('DEBUG')
ADMINS = [('My Name', 'me#provider.com'),]
MANAGERS = ADMINS
ADMIN_EMAIL = ['me#provider.com',]
DEFAULT_FROM_EMAIL = 'admin#provider.com'
SERVER_EMAIL = 'admin#provider.com'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'admin#provider.com'
EMAIL_HOST_PASSWORD = env('EMAIL_HOST_PASSWORD')
EMAIL_USE_TLS = True
And i have tried adding:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
But they are still not sent.
I am using django-environ, but debug is set to false.
Any ideas what the problem could be?
Have you checked this?
may be the problem is this.
https://support.google.com/accounts/answer/6010255?hl=en#:~:text=To%20help%20keep,continue%20to%20read.

Unable to get send_mail to send an email message Django

I posted a question earlier where I asked how to get my email to send and was told that it's the provider, so I tried 3 providers and the send_mail and/or EmailMessage function doesn't work with any of them.
So, I strongly think it's something related to my set-up. I get a message in the send_email folder, but no email ever sends and no error is logged.
Here is my settings.py file:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'myemails#gmail.com'
EMAIL_HOST_PASSWORD = 'pass'
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
SERVER_EMAIL = 'myemail#gmail.com'
Might someone else have an idea?

Failing at sending mail from django

I'm trying to send an "email" from a website in django.
I have completed the main code for doing so:
-)the view function
-)the URLs mapping to make the function reachable from code
-)the sending form at a template
So my sending form would trigger the view function using the path specified in the URLS.
On my server, I have a "postfix" instance installed and tried.
I tried to edit changes in the settings.py and the views.py for about 2 days now but nothing worked.
The errors range between these two
1)
SMTPNotSupportedError at /website/email_send
when settings are
EMAIL_HOST = 'mydomain.com'
EMAIL_PORT = 25 //same for port 587
EMAIL_HOST_USER = 'uname'
EMAIL_HOST_PASSWORD = 'pwd!'
EMAIL_USE_TLS = True
2)
gaierror at /website/email_send
[Errno -2] Name or service not known
when settings are
EMAIL_HOST = 'mail.mydomain.com' or 'smtp.mydomain.com'
EMAIL_PORT = 25 //same for port 587
EMAIL_HOST_USER = 'uname'
EMAIL_HOST_PASSWORD = 'pwd!'
EMAIL_USE_TLS = True
I expect the email to be sent using a form in my django site run on a server using postfix
The problem is now fixed.
I found this question and used its answer:
Postfix + Django: SMTPException: SMTP AUTH extension not supported by server
I removed EMAIL_HOST_USER = 'uname' and EMAIL_HOST_PASSWORD = 'pwd!'
Then it worked without errors. The settings now are:
...
EMAIL_HOST = 'localhost'
EMAIL_PORT = 25
EMAIL_USE_TLS = True
...

Pinax-theme-bootstrap editing

Pinax theme for Bootstrap on Django twitter lacks a clear guide. Like how it's supposed to send emails when you haven't specified the email_host and password. Changing the top bar to include other links like Home Contact etc.
I've tried to find the pages, other bootstrap themes from bootwatch also don't take effect. How do you change it?
Email settings will be the same as django's
Example:-
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
# Host for sending e-mail.
EMAIL_HOST = 'localhost'
# Port for sending e-mail.
EMAIL_PORT = 1025
# Optional SMTP authentication information for EMAIL_HOST.
EMAIL_HOST_USER = ''
EMAIL_HOST_PASSWORD = ''
EMAIL_USE_TLS = False
Or if you are using a remote mail server, something like this:-
EMAILS_ALLOWED = True
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'no-replymysite.com'
EMAIL_HOST_PASSWORD = 'myspecialpass'
EMAIL_PORT = 587
EMAIL_SUBJECT_PREFIX = '[MySite.com]'
DEFAULT_FROM_EMAIL = 'MySite.com Auto Notification <no-reply#mysite.com>'
Regarding the 2nd question about changing the theme/look-and-feel, I have responded to a similar question here, just yesterday - How to change the pinax(0.9a2) template?

Setting up email with Sendgrid in Heroku for a Django App

I am deploying a Django app on Heroku, and using the Sendgrid addon to send out validation email when a user registers on the site.
I followed the instructions here and pasted the following into settings.py:
EMAIL_HOST = 'smtp.sendgrid.net'
EMAIL_HOST_USER = 'sendgrid_username'
EMAIL_HOST_PASSWORD = 'sendgrid_password'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
However, my app is crashing after registration.
What exactly am I supposed to put for EMAIL_HOST_USER and EMAIL_HOST_PASSWORD?
Under the developer's tab in the sendgrid addon in heroku, it gives me the username app*******#heroku.com, and for password it just says "Your Password". Is the password my Heroku password?
Also, do I need to include DEFAULT_FROM_EMAIL in my settings.py file? And where do I tell Sendgrid what it is?
EDIT: I've set DEBUG = True, and it looks like the error is:
SMTPSenderRefused
(550, 'Cannot receive from specified address <info#myapp.com>: Unauthenticated senders not allowed', 'info#myapp.com')
it looks like the problem is happening before Sendgrid does its thing. Do I need to authenticate the email address with Heroku somehow?
Within your settings.py include:
import os
EMAIL_HOST_USER = os.environ['SENDGRID_USERNAME']
EMAIL_HOST= 'smtp.sendgrid.net'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_PASSWORD = os.environ['SENDGRID_PASSWORD']
Edit: changed EMAIL_PASSWORD to EMAIL_HOST_PASSWORD as that's the correct spelling.
In the intervening 10 years, the above answer has become obsolete. Sendgrid now uses an API key.
https://docs.sendgrid.com/for-developers/sending-email/django
SENDGRID_API_KEY = os.getenv('SENDGRID_API_KEY')
EMAIL_HOST = 'smtp.sendgrid.net'
EMAIL_HOST_USER = 'apikey' # this is exactly the value 'apikey'
EMAIL_HOST_PASSWORD = SENDGRID_API_KEY
EMAIL_PORT = 587
EMAIL_USE_TLS = True