Although Python makes sending e-mails relatively easy via the
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.
There are two ways to instantiate the mail sender. You can instantiate it using
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=["email@example.com"], subject="Some subject", body="Some body", cc=["firstname.lastname@example.org"])
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.
MailSender(smtphost=None, mailfrom=None, smtpuser=None, smtppass=None, smtpport=None)¶
smtpuser – the SMTP user. If omitted, the
MAIL_USERsetting will be used. If not given, no SMTP authentication will be performed.
smtpport (int) – the SMTP port to connect to
smtptls (bool) – enforce using SMTP STARTTLS
smtpssl (bool) – enforce using a secure SSL connection
Instantiate using a Scrapy settings object, which will respect these Scrapy settings.
scrapy.settings.Settingsobject) – the e-mail recipients
send(to, subject, body, cc=None, attachs=(), mimetype='text/plain', charset=None)¶
Send email to the given recipients.
subject (str) – the subject of the e-mail
body (str) – the e-mail body
attachs (collections.abc.Iterable) – an iterable of tuples
(attach_name, mimetype, file_object)where
attach_nameis a string with the name that will appear on the e-mail’s attachment,
mimetypeis the mimetype of the attachment and
file_objectis a readable file object with the contents of the attachment
mimetype (str) – the MIME type of the e-mail
charset (str) – the character encoding to use for the e-mail contents
These settings define the default
__init__ method values of the
class, and can be used to configure e-mail notifications in your project without
writing any code (for those extensions and code that uses
Sender email to use (
From: header) for sending emails.
SMTP host to use for sending emails.
SMTP port to use for sending emails.
User to use for SMTP authentication. If disabled no SMTP authentication will be performed.
Password to use for SMTP authentication, along with
Enforce using STARTTLS. STARTTLS is a way to take an existing insecure connection, and upgrade it to a secure connection using SSL/TLS.
Enforce connecting using an SSL encrypted connection