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.
There are two ways to instantiate the mail sender. You can instantiate it using the standard constructor:
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.
- class scrapy.mail.MailSender(smtphost=None, mailfrom=None, smtpuser=None, smtppass=None, smtpport=None)¶
- smtphost (str) – 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, the MAIL_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.
- smtppass (str) – the SMTP pass for authentication.
- smtpport (boolean) – the SMTP port to connect to
- smtptls – enforce using SMTP STARTTLS
- smtpssl – enforce using a secure SSL connection
- classmethod from_settings(settings)¶
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=())¶
Send email to the given recipients.
- to (list) – the e-mail recipients
- subject (str) – the subject of the e-mail
- cc (list) – the e-mails to CC
- body (str) – the e-mail body
- attachs (iterable) – an iterable of tuples (attach_name, mimetype, file_object) where attach_name is a string with the name that will appear on the e-mail’s attachment, mimetype is the mimetype of the attachment and file_object is a readable file object with the contents of the attachment
These settings define the default constructor 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).
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.
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