My first guess, since you haven't mentioned that you've done this
step: have you configured your Linode to send mail? Unless you have a
mail server installed and configured, you won't be able to send mail.
apt-get install postfix
Should be all you need to do.
Yours,
Russ Magee %-)
I was trying to avoid setting up a mail server by just sending through gmail's SMTP server. It is sending correctly through django.utils.log.AdminEmailHandler and it was my understanding that they worked through the same mechanisms?
My apologies -- I didn't register that you were using connecting
directly to GMail's servers to send mail.
You haven't provided your mail settings, so it's impossible to know
exactly what is going wrong, but my best guess would be that you don't
have the EMAIL_USE_TLS setting enabled. GMail's servers use TLS to
provide on-the-wire security, but Django has this turned off by
default (since most mail servers don't enable TLS by default).
As far as debugging this problem goes -- my advice would be to start
lower in the stack. I can guarantee that if your email configuration
is right, then 404 mails will be sent -- the real issue is whether the
email configuration is correct. To verify this, use the mail APIs
directly. From a Python prompt on your sever:
>>> from django.core import mail
>>> mail.send_mail("A subject", "This is the message", "m...@example.com", ["reci...@example.com"])
substituting "m...@example.com" with your own address, and
"reci...@example.com" with another email address you can test with.
This call should return 1, indicating that 1 email was sent. If it
doesn't, or it raises an error, you should get some indication of what
has gone wrong.
Yours,
Russ Magee %-)
... and I've just re-read your original message, and realized that
you've already done this.
/me looks sheepish
So, If DEBUG = False, and SEND_BROKEN_LINK_EMAILS = True, then you
should be getting emails on 404s.
Trying to think of some other reasons you might not be getting error emails...
You wont be getting 500 emails if:
* you have a custom 500 handler, or
* if DEBUG_PROPAGATE_EXCEPTIONS is enabled
You won't be getting 404 messages if
* the common middleware isn't enabled
* the URLs you're hitting match the values in IGNORABLE_404_STARTS,
IGNORABLE_404_ENDS or IGNORABLE_404_URLS
* Your user agent isn't settings a HTTP_REFERER header
* Your user agent hasn't got a HTTP_REFERER header that matches the
domain of your server
Hope this is slightly more helpful than my last two attempts...
Yours,
Russ Magee %-)
The 404 emails are sent via the mail_managers method, which uses emails from the django.conf.settings.MANAGERS setting, as opposed to errors which go to the ADMINS. Double-check what MANAGERS (and ADMINS) is actually set to:$ python manage.py shell>>> from django.conf import settings>>> settings.MANAGERS(('Me', 'm...@example.com'),)>>> settings.ADMINS(('Me', 'm...@example.com'),)
On Thursday, January 3, 2013 8:14:54 PM UTC-5, Jan Paricka wrote:Same problem here.1) CommonMiddleware in place2) debug = False3) SEND_BROKEN_LINK_EMAILS = TrueAnd yet no 404 emails...Otherwise the app is happily emailing...Any thoughts?ThanksJan