scrapy/docs/topics/email.rst

5.0 KiB

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> </head>

Sending e-mail

System Message: ERROR/3 (<stdin>, line 7)

Unknown directive type "module".

.. module:: scrapy.mail
   :synopsis: Email sending facility

Although Python makes sending e-mails relatively easy via the :mod:`smtplib` library, Scrapy provides its own facility for sending e-mails which is very easy to use and it's implemented using :doc:`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 :ref:`settings <topics-email-settings>`.

System Message: ERROR/3 (<stdin>, line 10); backlink

Unknown interpreted text role "mod".

System Message: ERROR/3 (<stdin>, line 10); backlink

Unknown interpreted text role "doc".

System Message: ERROR/3 (<stdin>, line 10); backlink

Unknown interpreted text role "ref".

Quick example

There are two ways to instantiate the mail sender. You can instantiate it using the standard __init__ method:

System Message: WARNING/2 (<stdin>, line 24)

Cannot analyze code. Pygments package not found.

.. code-block:: python

    from scrapy.mail import MailSender

    mailer = MailSender()

Or you can instantiate it passing a Scrapy settings object, which will respect the :ref:`settings <topics-email-settings>`:

System Message: ERROR/3 (<stdin>, line 30); backlink

Unknown interpreted text role "ref".

System Message: WARNING/2 (<stdin>, line 33)

Cannot analyze code. Pygments package not found.

.. code-block:: python

    mailer = MailSender.from_settings(settings)

And here is how to use it to send an e-mail (without attachments):

System Message: WARNING/2 (<stdin>, line 39)

Cannot analyze code. Pygments package not found.

.. code-block:: python

    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 :doc:`Twisted non-blocking IO <twisted:core/howto/defer-intro>`, like the rest of the framework.

System Message: ERROR/3 (<stdin>, line 51); backlink

Unknown interpreted text role "doc".
param smtphost:

the SMTP host to use for sending the emails. If omitted, the :setting:`MAIL_HOST` setting will be used.

System Message: ERROR/3 (<stdin>, line 57); backlink

Unknown interpreted text role "setting".

type smtphost:

str

param mailfrom:

the address used to send emails (in the From: header). If omitted, the :setting:`MAIL_FROM` setting will be used.

System Message: ERROR/3 (<stdin>, line 61); backlink

Unknown interpreted text role "setting".

type mailfrom:

str

param smtpuser:

the SMTP user. If omitted, the :setting:`MAIL_USER` setting will be used. If not given, no SMTP authentication will be performed.

System Message: ERROR/3 (<stdin>, line 65); backlink

Unknown interpreted text role "setting".

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:

bool

param smtpssl:

enforce using a secure SSL connection

type smtpssl:

bool

System Message: ERROR/3 (<stdin>, line 82)

Unknown directive type "classmethod".

.. classmethod:: from_settings(settings)

    Instantiate using a Scrapy settings object, which will respect
    :ref:`these Scrapy settings <topics-email-settings>`.

    :param settings: the e-mail recipients
    :type settings: :class:`scrapy.settings.Settings` object

System Message: ERROR/3 (<stdin>, line 90)

Unknown directive type "method".

.. method:: send(to, subject, body, cc=None, attachs=(), mimetype='text/plain', charset=None)

    Send email to the given recipients.

    :param to: the e-mail recipients as a string or as a list of strings
    :type to: str or list

    :param subject: the subject of the e-mail
    :type subject: str

    :param cc: the e-mails to CC as a string or as a list of strings
    :type cc: str or list

    :param body: the e-mail body
    :type body: str

    :param attachs: 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
    :type attachs: collections.abc.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

Mail settings

These settings define the default __init__ method values of the :class:`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 :class:`MailSender`).

System Message: ERROR/3 (<stdin>, line 125); backlink

Unknown interpreted text role "class".

System Message: ERROR/3 (<stdin>, line 125); backlink

Unknown interpreted text role "class".

System Message: ERROR/3 (<stdin>, line 129)

Unknown directive type "setting".

.. setting:: MAIL_FROM

MAIL_FROM

Default: 'scrapy@localhost'

Sender email to use (From: header) for sending emails.

System Message: ERROR/3 (<stdin>, line 138)

Unknown directive type "setting".

.. setting:: MAIL_HOST

MAIL_HOST

Default: 'localhost'

SMTP host to use for sending emails.

System Message: ERROR/3 (<stdin>, line 147)

Unknown directive type "setting".

.. setting:: MAIL_PORT

MAIL_PORT

Default: 25

SMTP port to use for sending emails.

System Message: ERROR/3 (<stdin>, line 156)

Unknown directive type "setting".

.. setting:: MAIL_USER

MAIL_USER

Default: None

User to use for SMTP authentication. If disabled no SMTP authentication will be performed.

System Message: ERROR/3 (<stdin>, line 166)

Unknown directive type "setting".

.. setting:: MAIL_PASS

MAIL_PASS

Default: None

Password to use for SMTP authentication, along with :setting:`MAIL_USER`.

System Message: ERROR/3 (<stdin>, line 173); backlink

Unknown interpreted text role "setting".

System Message: ERROR/3 (<stdin>, line 175)

Unknown directive type "setting".

.. setting:: MAIL_TLS

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.

System Message: ERROR/3 (<stdin>, line 184)

Unknown directive type "setting".

.. setting:: MAIL_SSL

MAIL_SSL

Default: False

Enforce connecting using an SSL encrypted connection

</html>