Sending e-mail¶
Although Python makes sending e-mails relatively easy via the smtplib
library, Scrapy provides its own facility for sending e-mails which is very
easy to use and it’s implemented using Twisted non-blocking IO, to avoid interfering with the non-blocking
IO of the crawler. It also provides a simple API for sending attachments and
it’s very easy to configure, with a few settings.
Quick example¶
There are two ways to instantiate the mail sender. You can instantiate it using
the standard __init__
method:
from scrapy.mail import MailSender
mailer = MailSender()
Or you can instantiate it passing a Scrapy settings object, which will respect the settings:
mailer = MailSender.from_settings(settings)
And here is how to use it to send an e-mail (without attachments):
mailer.send(to=["someone@example.com"], subject="Some subject", body="Some body", cc=["another@example.com"])
MailSender class reference¶
MailSender is the preferred class to use for sending emails from Scrapy, as it uses Twisted non-blocking IO, like the rest of the framework.
-
class
scrapy.mail.
MailSender
(smtphost=None, mailfrom=None, smtpuser=None, smtppass=None, smtpport=None)[source]¶ - Parameters
smtphost (str or bytes) – the SMTP host to use for sending the emails. If omitted, the
MAIL_HOST
setting will be used.mailfrom (str) – the address used to send emails (in the
From:
header). If omitted, theMAIL_FROM
setting will be used.smtpuser – the SMTP user. If omitted, the
MAIL_USER
setting will be used. If not given, no SMTP authentication will be performed.smtpport (int) – the SMTP port to connect to
smtptls (boolean) – enforce using SMTP STARTTLS
smtpssl (boolean) – enforce using a secure SSL connection
-
classmethod
from_settings
(settings)[source]¶ Instantiate using a Scrapy settings object, which will respect these Scrapy settings.
- Parameters
settings (
scrapy.settings.Settings
object) – the e-mail recipients
-
send
(to, subject, body, cc=None, attachs=(), mimetype='text/plain', charset=None)[source]¶ Send email to the given recipients.
- Parameters
to (str or list of str) – the e-mail recipients
subject (str) – the subject of the e-mail
cc (str or list of str) – the e-mails to CC
body (str) – the e-mail body
attachs (iterable) – an iterable of tuples
(attach_name, mimetype, file_object)
whereattach_name
is a string with the name that will appear on the e-mail’s attachment,mimetype
is the mimetype of the attachment andfile_object
is a readable file object with the contents of the attachmentmimetype (str) – the MIME type of the e-mail
charset (str) – the character encoding to use for the e-mail contents
Mail settings¶
These settings define the default __init__
method values of the MailSender
class, and can be used to configure e-mail notifications in your project without
writing any code (for those extensions and code that uses MailSender
).
MAIL_USER¶
Default: None
User to use for SMTP authentication. If disabled no SMTP authentication will be performed.
MAIL_TLS¶
Default: False
Enforce using STARTTLS. STARTTLS is a way to take an existing insecure connection, and upgrade it to a secure connection using SSL/TLS.