[py3] Pass bytes as "msg" to smtplib.SMTP.sendmail()
When passing a unicode string to smtplib.SMTP.sendmail() as "msg"
argument, there is an implicit bytes encoding using "ascii" encoding in
python3. Of course this does not work if the string contains non-ASCII
characters. In fact, config's sendmails method intent to pass bytes to
smtplib.SMTP.sendmail() as it uses msg.as_string() method.
Unfortunately, in python3, this method returns a unicode string whereas
it returns a bytes string in python2; we thus fix this by calling
as_bytes() method on python3.
As there is no "as_bytes" method in python2, we need to handle python2
compatibility by hand and either call as_string() or as_bytes().
In testlib, where we mock smtplib.SMTP, we need to keep the "msg"
argument of Email class (defined in testlib as well) a unicode string.
Otherwise, it fails to be parsed by email.message_from_string() (from
stdlib) if it is bytes on python3.
.. _dataimport_module:
:mod:`cubicweb.dataimport`
==========================
.. automodule:: cubicweb.dataimport
Utilities
---------
.. autofunction:: count_lines
.. autofunction:: ucsvreader_pb
.. autofunction:: ucsvreader
.. autofunction:: callfunc_every
.. autofunction:: lazytable
.. autofunction:: lazydbtable
.. autofunction:: mk_entity
Sanitizing/coercing functions
-----------------------------
.. autofunction:: optional
.. autofunction:: required
.. autofunction:: todatetime
.. autofunction:: call_transform_method
.. autofunction:: call_check_method
Integrity functions
-------------------
.. autofunction:: check_doubles
.. autofunction:: check_doubles_not_none
Object Stores
-------------
.. autoclass:: ObjectStore
:members:
.. autoclass:: RQLObjectStore
:show-inheritance:
:members:
.. autoclass:: NoHookRQLObjectStore
:show-inheritance:
:members:
.. autoclass:: SQLGenObjectStore
:show-inheritance:
:members:
Import Controller
-----------------
.. autoclass:: CWImportController
:show-inheritance:
:members: