Fix in name in attacht files whend send emails

This commit is contained in:
Mauricio Baeza 2021-06-30 14:29:02 -05:00
parent 108659da4a
commit 90dae8a9b4
16 changed files with 337 additions and 8 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -169,6 +169,17 @@ Export
^^^^^^
Fonst
^^^^^
* Get all fonts
.. code-block:: python
fonts = app.get_fonts()
for f in fonts:
print(f'Name: {f.Name} - StyleName: {f.StyleName}')
Call dispatch
^^^^^^^^^^^^^

View File

@ -9,12 +9,90 @@ Remember, always import library.
import easymacro as app
**IMPORTANT:** Always save your config the more security way possible.
Send email
^^^^^^^^^^
.. code-block:: python
app.msgbox(app.OS)
from conf import PASSWORD
SERVER = dict(
server = 'mail.server.net' ,
port = 495,
ssl = True,
user = 'no-responder@noexiste.mx',
password = PASSWORD,
)
body = "Hello Ingrid\n\nWho are you?\n\nBest regards"
message = dict(
to = 'ingrid.bergman@love.you',
subject = 'I love you',
body = body,
)
app.send_email(SERVER, message)
* We can use fields `cc`, `bcc` too and send to more than one address emails.
.. code-block:: python
to = 'mail1@correo.com,mail2@correo.com,mail3@correo.com'
cc = 'other@correo.com'
bcc = 'hidden@correo.com'
* We can send to more than one message.
.. code-block:: python
message1 = dict(
to = 'ingrid.bergman@email.net',
subject = 'I love you',
body = "Hello Ingrid\n\nWho are you?\n\nBest regards",
)
message2 = dict(
to = 'sophia.loren@email.net',
subject = 'I love you',
body = "Hello Ingrid\n\nWho are you?\n\nBest regards",
)
messages = (message1, message2)
app.send_email(SERVER, messages)
.. code-block:: bash
30/06/2021 13:43:23 - DEBUG - Connect to: mail.gandi.net
30/06/2021 13:43:24 - DEBUG - Email sent...
30/06/2021 13:43:26 - DEBUG - Email sent...
30/06/2021 13:43:26 - DEBUG - Close connection...
* Send with attachment
.. code-block:: python
files = '/home/mau/file.epub'
message = dict(
to = 'ingrid.bergman@email.net',
subject = 'I love you',
body = "Hello Ingrid\n\nWho are you?\n\nBest regards",
files = files,
)
* Send more than one file.
.. code-block:: python
files = (
'/home/mau/file1.epub',
'/home/mau/file2.epub',
)
* All emails always send in other thread.
.. _cryptography: https://github.com/pyca/cryptography

View File

@ -505,7 +505,28 @@ Simple url open
For more complex case, you can used `requests`_ or `httpx`_
Color
^^^^^
Look colors that you can used in `web colors`_
.. code-block:: python
color_name = 'darkblue'
color = app.get_color(color_name)
app.msgbox(color)
color_rgb = (125, 200, 10)
color = app.get_color(color_rgb)
app.msgbox(color)
color_html = '#008080'
color = app.get_color(color_html)
app.msgbox(color)
.. _epoch time: https://en.wikipedia.org/wiki/Unix_time
.. _cryptography: https://github.com/pyca/cryptography
.. _requests: https://docs.python-requests.org
.. _httpx: https://www.python-httpx.org/
.. _web colors: https://en.wikipedia.org/wiki/Web_colors

View File

@ -166,6 +166,17 @@
<section id="export">
<h2>Export<a class="headerlink" href="#export" title="Permalink to this headline"></a></h2>
</section>
<section id="fonst">
<h2>Fonst<a class="headerlink" href="#fonst" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li><p>Get all fonts</p></li>
</ul>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">fonts</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">get_fonts</span><span class="p">()</span>
<span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">fonts</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s1">&#39;Name: </span><span class="si">{</span><span class="n">f</span><span class="o">.</span><span class="n">Name</span><span class="si">}</span><span class="s1"> - StyleName: </span><span class="si">{</span><span class="n">f</span><span class="o">.</span><span class="n">StyleName</span><span class="si">}</span><span class="s1">&#39;</span><span class="p">)</span>
</pre></div>
</div>
</section>
<section id="call-dispatch">
<h2>Call dispatch<a class="headerlink" href="#call-dispatch" title="Permalink to this headline"></a></h2>
<p>You can call any <a class="reference external" href="https://wiki.documentfoundation.org/Development/DispatchCommands">dispatch command</a> used only if property or method no exists in original object or in <cite>easymacro.py</cite></p>

View File

@ -80,6 +80,7 @@
<li class="toctree-l2"><a class="reference internal" href="tools.html#render-string">Render string</a></li>
<li class="toctree-l2"><a class="reference internal" href="tools.html#encrypt-decrypt">Encrypt decrypt</a></li>
<li class="toctree-l2"><a class="reference internal" href="tools.html#simple-url-open">Simple url open</a></li>
<li class="toctree-l2"><a class="reference internal" href="tools.html#color">Color</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="paths.html">Paths and files</a><ul>
@ -129,6 +130,7 @@
<li class="toctree-l2"><a class="reference internal" href="application.html#save">Save</a></li>
<li class="toctree-l2"><a class="reference internal" href="application.html#to-pdf">To PDF</a></li>
<li class="toctree-l2"><a class="reference internal" href="application.html#export">Export</a></li>
<li class="toctree-l2"><a class="reference internal" href="application.html#fonst">Fonst</a></li>
<li class="toctree-l2"><a class="reference internal" href="application.html#call-dispatch">Call dispatch</a></li>
</ul>
</li>

View File

@ -39,11 +39,86 @@
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">easymacro</span> <span class="k">as</span> <span class="nn">app</span>
</pre></div>
</div>
<p><strong>IMPORTANT:</strong> Always save your config the more security way possible.</p>
<section id="send-email">
<h2>Send email<a class="headerlink" href="#send-email" title="Permalink to this headline"></a></h2>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">OS</span><span class="p">)</span>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">conf</span> <span class="kn">import</span> <span class="n">PASSWORD</span>
<span class="n">SERVER</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span>
<span class="n">server</span> <span class="o">=</span> <span class="s1">&#39;mail.server.net&#39;</span> <span class="p">,</span>
<span class="n">port</span> <span class="o">=</span> <span class="mi">495</span><span class="p">,</span>
<span class="n">ssl</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
<span class="n">user</span> <span class="o">=</span> <span class="s1">&#39;no-responder@noexiste.mx&#39;</span><span class="p">,</span>
<span class="n">password</span> <span class="o">=</span> <span class="n">PASSWORD</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">body</span> <span class="o">=</span> <span class="s2">&quot;Hello Ingrid</span><span class="se">\n\n</span><span class="s2">Who are you?</span><span class="se">\n\n</span><span class="s2">Best regards&quot;</span>
<span class="n">message</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span>
<span class="n">to</span> <span class="o">=</span> <span class="s1">&#39;ingrid.bergman@love.you&#39;</span><span class="p">,</span>
<span class="n">subject</span> <span class="o">=</span> <span class="s1">&#39;I love you&#39;</span><span class="p">,</span>
<span class="n">body</span> <span class="o">=</span> <span class="n">body</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">app</span><span class="o">.</span><span class="n">send_email</span><span class="p">(</span><span class="n">SERVER</span><span class="p">,</span> <span class="n">message</span><span class="p">)</span>
</pre></div>
</div>
<ul class="simple">
<li><p>We can use fields <cite>cc</cite>, <cite>bcc</cite> too and send to more than one address emails.</p></li>
</ul>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">to</span> <span class="o">=</span> <span class="s1">&#39;mail1@correo.com,mail2@correo.com,mail3@correo.com&#39;</span>
<span class="n">cc</span> <span class="o">=</span> <span class="s1">&#39;other@correo.com&#39;</span>
<span class="n">bcc</span> <span class="o">=</span> <span class="s1">&#39;hidden@correo.com&#39;</span>
</pre></div>
</div>
<ul class="simple">
<li><p>We can send to more than one message.</p></li>
</ul>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">message1</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span>
<span class="n">to</span> <span class="o">=</span> <span class="s1">&#39;ingrid.bergman@email.net&#39;</span><span class="p">,</span>
<span class="n">subject</span> <span class="o">=</span> <span class="s1">&#39;I love you&#39;</span><span class="p">,</span>
<span class="n">body</span> <span class="o">=</span> <span class="s2">&quot;Hello Ingrid</span><span class="se">\n\n</span><span class="s2">Who are you?</span><span class="se">\n\n</span><span class="s2">Best regards&quot;</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">message2</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span>
<span class="n">to</span> <span class="o">=</span> <span class="s1">&#39;sophia.loren@email.net&#39;</span><span class="p">,</span>
<span class="n">subject</span> <span class="o">=</span> <span class="s1">&#39;I love you&#39;</span><span class="p">,</span>
<span class="n">body</span> <span class="o">=</span> <span class="s2">&quot;Hello Ingrid</span><span class="se">\n\n</span><span class="s2">Who are you?</span><span class="se">\n\n</span><span class="s2">Best regards&quot;</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">messages</span> <span class="o">=</span> <span class="p">(</span><span class="n">message1</span><span class="p">,</span> <span class="n">message2</span><span class="p">)</span>
<span class="n">app</span><span class="o">.</span><span class="n">send_email</span><span class="p">(</span><span class="n">SERVER</span><span class="p">,</span> <span class="n">messages</span><span class="p">)</span>
</pre></div>
</div>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="m">30</span>/06/2021 <span class="m">13</span>:43:23 - DEBUG - Connect to: mail.gandi.net
<span class="m">30</span>/06/2021 <span class="m">13</span>:43:24 - DEBUG - Email sent...
<span class="m">30</span>/06/2021 <span class="m">13</span>:43:26 - DEBUG - Email sent...
<span class="m">30</span>/06/2021 <span class="m">13</span>:43:26 - DEBUG - Close connection...
</pre></div>
</div>
<ul class="simple">
<li><p>Send with attachment</p></li>
</ul>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">files</span> <span class="o">=</span> <span class="s1">&#39;/home/mau/file.epub&#39;</span>
<span class="n">message</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span>
<span class="n">to</span> <span class="o">=</span> <span class="s1">&#39;ingrid.bergman@email.net&#39;</span><span class="p">,</span>
<span class="n">subject</span> <span class="o">=</span> <span class="s1">&#39;I love you&#39;</span><span class="p">,</span>
<span class="n">body</span> <span class="o">=</span> <span class="s2">&quot;Hello Ingrid</span><span class="se">\n\n</span><span class="s2">Who are you?</span><span class="se">\n\n</span><span class="s2">Best regards&quot;</span><span class="p">,</span>
<span class="n">files</span> <span class="o">=</span> <span class="n">files</span><span class="p">,</span>
<span class="p">)</span>
</pre></div>
</div>
<ul class="simple">
<li><p>Send more than one file.</p></li>
</ul>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">files</span> <span class="o">=</span> <span class="p">(</span>
<span class="s1">&#39;/home/mau/file1.epub&#39;</span><span class="p">,</span>
<span class="s1">&#39;/home/mau/file2.epub&#39;</span><span class="p">,</span>
<span class="p">)</span>
</pre></div>
</div>
<ul class="simple">
<li><p>All emails always send in other thread.</p></li>
</ul>
</section>
</section>

View File

@ -482,6 +482,23 @@ drwxr-xr-x <span class="m">2</span> mau mau <span class="m">4</span>.0K Jun <sp
</div>
<p>For more complex case, you can used <a class="reference external" href="https://docs.python-requests.org">requests</a> or <a class="reference external" href="https://www.python-httpx.org/">httpx</a></p>
</section>
<section id="color">
<h2>Color<a class="headerlink" href="#color" title="Permalink to this headline"></a></h2>
<p>Look colors that you can used in <a class="reference external" href="https://en.wikipedia.org/wiki/Web_colors">web colors</a></p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">color_name</span> <span class="o">=</span> <span class="s1">&#39;darkblue&#39;</span>
<span class="n">color</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">get_color</span><span class="p">(</span><span class="n">color_name</span><span class="p">)</span>
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">color</span><span class="p">)</span>
<span class="n">color_rgb</span> <span class="o">=</span> <span class="p">(</span><span class="mi">125</span><span class="p">,</span> <span class="mi">200</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
<span class="n">color</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">get_color</span><span class="p">(</span><span class="n">color_rgb</span><span class="p">)</span>
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">color</span><span class="p">)</span>
<span class="n">color_html</span> <span class="o">=</span> <span class="s1">&#39;#008080&#39;</span>
<span class="n">color</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">get_color</span><span class="p">(</span><span class="n">color_html</span><span class="p">)</span>
<span class="n">app</span><span class="o">.</span><span class="n">msgbox</span><span class="p">(</span><span class="n">color</span><span class="p">)</span>
</pre></div>
</div>
</section>
</section>

File diff suppressed because one or more lines are too long

View File

@ -169,6 +169,17 @@ Export
^^^^^^
Fonst
^^^^^
* Get all fonts
.. code-block:: python
fonts = app.get_fonts()
for f in fonts:
print(f'Name: {f.Name} - StyleName: {f.StyleName}')
Call dispatch
^^^^^^^^^^^^^

View File

@ -9,12 +9,90 @@ Remember, always import library.
import easymacro as app
**IMPORTANT:** Always save your config the more security way possible.
Send email
^^^^^^^^^^
.. code-block:: python
app.msgbox(app.OS)
from conf import PASSWORD
SERVER = dict(
server = 'mail.server.net' ,
port = 495,
ssl = True,
user = 'no-responder@noexiste.mx',
password = PASSWORD,
)
body = "Hello Ingrid\n\nWho are you?\n\nBest regards"
message = dict(
to = 'ingrid.bergman@love.you',
subject = 'I love you',
body = body,
)
app.send_email(SERVER, message)
* We can use fields `cc`, `bcc` too and send to more than one address emails.
.. code-block:: python
to = 'mail1@correo.com,mail2@correo.com,mail3@correo.com'
cc = 'other@correo.com'
bcc = 'hidden@correo.com'
* We can send to more than one message.
.. code-block:: python
message1 = dict(
to = 'ingrid.bergman@email.net',
subject = 'I love you',
body = "Hello Ingrid\n\nWho are you?\n\nBest regards",
)
message2 = dict(
to = 'sophia.loren@email.net',
subject = 'I love you',
body = "Hello Ingrid\n\nWho are you?\n\nBest regards",
)
messages = (message1, message2)
app.send_email(SERVER, messages)
.. code-block:: bash
30/06/2021 13:43:23 - DEBUG - Connect to: mail.gandi.net
30/06/2021 13:43:24 - DEBUG - Email sent...
30/06/2021 13:43:26 - DEBUG - Email sent...
30/06/2021 13:43:26 - DEBUG - Close connection...
* Send with attachment
.. code-block:: python
files = '/home/mau/file.epub'
message = dict(
to = 'ingrid.bergman@email.net',
subject = 'I love you',
body = "Hello Ingrid\n\nWho are you?\n\nBest regards",
files = files,
)
* Send more than one file.
.. code-block:: python
files = (
'/home/mau/file1.epub',
'/home/mau/file2.epub',
)
* All emails always send in other thread.
.. _cryptography: https://github.com/pyca/cryptography

View File

@ -505,7 +505,28 @@ Simple url open
For more complex case, you can used `requests`_ or `httpx`_
Color
^^^^^
Look colors that you can used in `web colors`_
.. code-block:: python
color_name = 'darkblue'
color = app.get_color(color_name)
app.msgbox(color)
color_rgb = (125, 200, 10)
color = app.get_color(color_rgb)
app.msgbox(color)
color_html = '#008080'
color = app.get_color(color_html)
app.msgbox(color)
.. _epoch time: https://en.wikipedia.org/wiki/Unix_time
.. _cryptography: https://github.com/pyca/cryptography
.. _requests: https://docs.python-requests.org
.. _httpx: https://www.python-httpx.org/
.. _web colors: https://en.wikipedia.org/wiki/Web_colors

View File

@ -892,11 +892,11 @@ class SmtpServer(object):
return False
def _body(self, msg):
body = msg.replace('\\n', '<BR>')
body = msg.replace('\n', '<BR>')
return body
def send(self, message):
file_name = 'attachment; filename={}'
# ~ file_name = 'attachment; filename={}'
email = MIMEMultipart()
email['From'] = self._sender
email['To'] = message['to']
@ -907,12 +907,16 @@ class SmtpServer(object):
email['Disposition-Notification-To'] = email['From']
email.attach(MIMEText(self._body(message['body']), 'html'))
for path in message.get('files', ()):
paths = message.get('files', ())
if isinstance(paths, str):
paths = (paths,)
for path in paths:
fn = _P(path).file_name
print('NAME', fn)
part = MIMEBase('application', 'octet-stream')
part.set_payload(_P.read_bin(path))
encoders.encode_base64(part)
part.add_header('Content-Disposition', f'attachment; filename={fn}')
part.add_header('Content-Disposition', f'attachment; filename="{fn}"')
email.attach(part)
receivers = (