scrapy.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
<twisted:core/howto/defer-intro>
, 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
<topics-email-settings>
.
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 <topics-email-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 is the preferred class to use for sending emails from Scrapy, as it uses Twisted non-blocking IO <twisted:core/howto/defer-intro>
, like the rest of the framework.
- param smtphost
the SMTP host to use for sending the emails. If omitted, the
MAIL_HOST
setting will be used.- type smtphost
str
- param mailfrom
the address used to send emails (in the
From:
header). If omitted, theMAIL_FROM
setting will be used.- type mailfrom
str
- param smtpuser
the SMTP user. If omitted, the
MAIL_USER
setting will be used. If not given, no SMTP authentication will be performed.- type smtphost
str or bytes
- param smtppass
the SMTP pass for authentication.
- type smtppass
str or bytes
- param smtpport
the SMTP port to connect to
- type smtpport
int
- param smtptls
enforce using SMTP STARTTLS
- type smtptls
boolean
- param smtpssl
enforce using a secure SSL connection
- type smtpssl
boolean
from_settings(settings)
Instantiate using a Scrapy settings object, which will respect these Scrapy settings <topics-email-settings>
.
- param settings
the e-mail recipients
- type settings
scrapy.settings.Settings
object
send(to, subject, body, cc=None, attachs=(), mimetype='text/plain', charset=None)
Send email to the given recipients.
- param to
the e-mail recipients
- type to
str or list of str
- param subject
the subject of the e-mail
- type subject
str
- param cc
the e-mails to CC
- type cc
str or list of str
- param body
the e-mail body
- type body
str
- param attachs
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 attachment- type attachs
iterable
- param mimetype
the MIME type of the e-mail
- type mimetype
str
- param charset
the character encoding to use for the e-mail contents
- type charset
str
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_FROM
Default: 'scrapy@localhost'
Sender email to use (From:
header) for sending emails.
MAIL_HOST
Default: 'localhost'
SMTP host to use for sending emails.
MAIL_PORT
Default: 25
SMTP port to use for sending emails.
MAIL_USER
Default: None
User to use for SMTP authentication. If disabled no SMTP authentication will be performed.
MAIL_PASS
Default: None
Password to use for SMTP authentication, along with MAIL_USER
.
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.
MAIL_SSL
Default: False
Enforce connecting using an SSL encrypted connection