Tuesday, 16 May 2017

Creating an Evolution e mail from the command line and python

Creating an Evolution e mail from the command line and python


Evolution is intended as a GUI e-mail client, so the scripting options are limited. Also, it looks like you cannot autosend e-mail from a script, theres so script command equivalent to the send button.


But thats a good thing; I can autosend from nail when I want to. So a script will compose the e-mail, which will sit on my desktop until I review it and click to send it. Nice.


shell command source

This command creates a window with To:, From:, Subject:, and Body filled in. From: is already known by Evolution, the rest is parsed from the following command:

evolution mailto:person@example.com?subject=Test&body=Some%20crazy%20story%20stuff%0D%0Acolumn1%09%09column2%09%09column3%0D%0A%0D%0ASincerely,%0D%0A%0D%0AMe


Another (easier) way:
evolution mailto:person@example.com?cc="second_person@example.com"&subject="This Is The Subject"&body="This is the body of the message"&attach=Desktop/test_file.xml
  • evolution mailto:person@example.com - Launches Evolutions e-mail composer and To: line
  • ?cc="Person@example.com" - CC: Line
  • &subject="Subject" or ?subject="Subject" - Subject line
  • &body="Body" - Body of the e-mail is everything after this line
  • &attach=/path/file - Files to attach
  • %20 - Space
  • %0D%0A - CR/LF (new line)
  • %09 - Tab

python command

Python 2.x has its own smtp module for creating e-mail, its far more useful in most circumstances. But in this case, we want the composed evolution window.

import os
body_string = This is the body of the e-mail message
body_string = body_string.replace( ,%20)
os.popen(evolution mailto:person@example.com?subject=Test&body= + body_string)
  • import os - Use pythons os module
  • body_string = This is the body of the e-mail message - The body in normal text
  • body_string = body_string.replace( ,%20) - Encode the spaces (evolution will decode them). Tabs, newlines, and other reserved strings need to be encoded.
  • os.popen(evolution mailto:person@example.com?subject=Test&body= + body_string) - The os.popen(cmd) executes shell cmd. Note that cmd is just a python string, and you can use all the string tools on it, like adding body_string.
>>> import os
>>> to = person@example.com
>>> cc = "second_person@example.com"
>>> subject = "This is the subject"
>>> body = "This is the body"
>>> attachment = Desktop/rss_test.xml
>>> os.popen(evolution mailto:+to+?cc=+cc+&subject=+subject+&body=+body+&attachment=+attachment)
download
alternative link download

Like the Post? Do share with your Friends.