From 90dae8a9b49bfcd16f20cb2c0e9819346c8f9dcf Mon Sep 17 00:00:00 2001 From: Mauricio Baeza Date: Wed, 30 Jun 2021 14:29:02 -0500 Subject: [PATCH] Fix in name in attacht files whend send emails --- doc/build/.doctrees/environment.pickle | Bin 66608 -> 67470 bytes doc/build/.doctrees/main/application.doctree | Bin 13273 -> 14089 bytes doc/build/.doctrees/main/email.doctree | Bin 3552 -> 9207 bytes doc/build/.doctrees/main/tools.doctree | Bin 33230 -> 34685 bytes doc/build/_sources/main/application.rst.txt | 11 +++ doc/build/_sources/main/email.rst.txt | 80 ++++++++++++++++++- doc/build/_sources/main/tools.rst.txt | 21 +++++ doc/build/main/application.html | 11 +++ doc/build/main/easymacro.html | 2 + doc/build/main/email.html | 77 +++++++++++++++++- doc/build/main/tools.html | 17 ++++ doc/build/searchindex.js | 2 +- doc/source/main/application.rst | 11 +++ doc/source/main/email.rst | 80 ++++++++++++++++++- doc/source/main/tools.rst | 21 +++++ source/easymacro.py | 12 ++- 16 files changed, 337 insertions(+), 8 deletions(-) diff --git a/doc/build/.doctrees/environment.pickle b/doc/build/.doctrees/environment.pickle index e5cbcb0fc99154248db0a05d7823454ec54bbb5e..f14568ef6c268bb7f8e4215e3fffe0d1ff80bb34 100644 GIT binary patch literal 67470 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 diff --git a/doc/build/.doctrees/main/application.doctree b/doc/build/.doctrees/main/application.doctree index 6ca9a937ade13ff621af0a111c33724983533dd3..0dbcce3f76c51aa4535d90ef63686957ae9c7c5b 100644 GIT binary patch delta 734 zcmcba-kHbRz&iDx*+$koDk7|I`FX`9Q!?0Nr(}rrKzNf`Rf8GVPQIlm8^-6JTB4Ac zlcSK9pI1`M1yQG`**K+kibe)&4=;)|%oH@y)+tcsS?SCS3>nf{sgnbgOj*|hS&5Sq zHRUHy;AY{-0`lU3(v$ylm@}@QJXb@aJ|1kRf~`VgL4jU+Y6*m|p~;n&U!;(xkeLT@ zlogi(5EK+;=9Orqsrx17rdlafr|E$hwFs~N_x#nKUBS2+YM}b6XhIZB` zkRCbjqhQ%utsKUkn_p>VFfp01Y!1=g#0<2P-B6C5j|HfOn`N?&VYrYbkU|csjU*iB{+++jIQpU{50ZN*a&ueCJq%$)x zWJqVlO?K2;2bBDvmB`ovl+@wRYJ$oDsnVp>$%;IZlP7SqOg_uO!MXvc!*}v_?fpzM zm?!g#JFsp73+&a|D_I3po>dLflcAlp0%U}o_b#yPWZfLbb({1un3!HMZ_YB<#0+$W ztce`^5s;39%#)o=($)5W*gHYQW)QIfNR;+)<|XE)mQ)s`7Eh_2qLFokdGbvY2N94` gKd`cn(hNnA1kem)(=-9Fc3+tGtW}#gn}#t001z!!WB>pF diff --git a/doc/build/.doctrees/main/email.doctree b/doc/build/.doctrees/main/email.doctree index a1d61390e1a4ca93c7d67257190f0b67298eb3e6..69e50661474f545846cd1f944fbd32e888d63f7d 100644 GIT binary patch literal 9207 zcmeHN-ESOM6;I-()W7Z~|M2$$RLsKcA;wSk8KgEam zX?3N^L!UK$D{0=2!&MwvG(EQ!Gc#l`OVAv*m^M!z$Nb$a!Rz z==zo&hlV8#D~bwUx1H~CI1ExR?!=cG+wi?b5m{u5qfyKRi`Ve8)(*)$AE{B#3Ob3^ z0c<$xN)AI*licla5C77%;ttsZ9q&qhyphWB8kxoOntJ8@`J1oZzO{1q+Vb7S^XH9g znHq$(#*8j}!LY-i?RE^wnc;^qGhp^f?8>eIbs148gxm61rYExeVIku%=v3u3*-xSn zQ@uww?U&5A_pZA)aj3h{*9rCfCuY4Q{wek#HmY2+Jz3mDMJ3~fN{T2lT>w=54htMZ zdsQjC3aI3tZ(zT*DjPc+J~_I`(6s|hLy#{NRNv$W4;*O6p|35V@XOoR?%cU|Yvtv7 z{mzY*H*TyLR}9Cskg`2->x;7?;2PY&I6c1NPlGVc9sr z5?UUF^RW0R3>+3;4MMiz3dtJ&#!S8qBHMZxJ3uY?nX8|x*IS{}1?DzEee9TLso~5cQg!gW&PvieDR}dt=^D9s)ehsB zg$+CO=LoPc2)I-M%+zh00&<9aCGLYmb2PzS$6-NrrqJzUrP&{Q{;`v&caJ^iD>D3` zu-rV>d{m6pS94$8I(+0e(dM{uc2CO+A?^{ocl`f=_mB7PLPf5A0n7fqlhg_W{ns81 zl>d$Yoz@g~Ndz|8<(v1B6XlY+2y5CUU&x+=DF4aRo!t|L{pBu{TIB33Y{8BQ@z85E zJf!Wx)yK(<05h|NoXRX`0V&$fd5|a*q0a@qea2eR`lk?d&joRjt{#VB@8nLq2cdt2ZD3(vg77OFegy$Egp4@c=&`q@1z{cy_?2#o_d z?@JYxZ-4I`zeD-zx+}SXT9svUD!Oe-PoLZhs}TLxljUJnU%)|N#NVJVUANj#+2|zbO2g9X`vbXn)FKL_CRkiXlPAh+tcYJX>%t8U% zBa}y54as;xfEW~E-CEWOF(7|FS%aWT~=or@Rf_1vt&8ez}!MH zSDNZ)vR5foZ7)CEMJ~JB%e~66x3`yb*E}zOzAwt&3ya%C%QTjkl zJyl=X6EO&4_17eXr7v>3vA=5>!6xMSAp7IX4&MLC?Hw0ON|O9C9Xa6?v9qt zI25P@iIbuW@`mLl=yH|Cqp4*z)?op9I5Lb=3>*thGHLk{2ICnS6zGD77}oP)5_=dO zk)dr;bBty|t_Hs1ZmN#8!%zmHWR=OKgX#!%0)xaiH_)8%Q$Qxs1aTu1wnDj%z?LU7 z2=mbJ0>q?r$ShiPpqMYndv?oeB4$)9H$Aq-ymaZ1s&mULhc$H+HF3yFS~3v@Qccwy z)=D}cH@R-b0b~UXLQ}WviZu845>^>97d)0WvO(V_6Mn{VbA*>zHV)wcU-B535Nl zk)hcGsY5P|>WGv0ky#oZ1gilqY%UHgk2ajr5J)!=r2ZZ#5-f2-6MZ~jO|uR3%9vSQ zsjbA8=9(+q%tWV5#}yX(X*dXV-LP<^a0ou9CU6)57qE2S8CH{{nfiL9PVWi&1tRF9 z5Dqj$@_2ZF)vcMl9-8V(Bmw1VQ@GOmYrY#>4gX z^+wisY=m*A>9DmXFhw&}$7zLT1S?F`xS=Mg+n6kxKYQUa5(~AL_!q3 z(Q|j1Y-=)H`W{G(Nvj1PawJceM%8Ipq;HnaSr(Gbtbh7QO^a?Itqrs6kEUp$Q4-V~I7oy919?9GNUGP*bzsU}&!(=0Hz?;jj+@k9wd*KG*EqkkFsYUtC jce4G|cqt8S>Emu-dx?X<6?Vui>kb9^JRVZ+feh`xfBB{; delta 262 zcmezF{y>_wfpzLt-i@qc%#+u#xUfcMNN0pk{>P{l!w+PIWXNPNXUJygWXO5*mL_G` zX*N!&ouZM!+9Q-$P@tDvoSu|lp#ft02Ww8rV2_=WA%<0|bqZ8t1{=`W)X9Q;vXgxU z6Mr~;i zXI^4%YDr~5YBAU~ll(He{4yFkN;4Eej_c3h0V)j1sLd$fyjF2KBctr(4U)>Nx*5`0 YQb3mchc9GHy?JNn#$@`Qo0SFdamH+?% diff --git a/doc/build/.doctrees/main/tools.doctree b/doc/build/.doctrees/main/tools.doctree index 24aae88159670455fb4d00871ab297c70c74960b..99a645d62d37c3a53d5432ce08b3dc905a988416 100644 GIT binary patch delta 1515 zcmcgsO=uHQ5YCU=G-<8&hgxVGw?xT?#<&fY_F$_}J!yIqixARHyY#vJ*|0y25!!7L zF^8bkx8ludf0s(jSaol!f8Fc{AU9^Y(r7`kHU+ zrjJ|V?r1ljaJE4|^f%B{K1I*ST>>|v&ZwGA0%@DHm)zZTd)Z#F1;Qz-^&SuDR36vg zJ}Fv{aMMNnq?^P^IJM<9vm_C7LraPCsyfY2Ae_z{L^Ak-YVs4(9B=CKB!791AJ5BK zH()%&N(xZ3=Z|@|!>1Pr{Y^CReNG?h-9!8L7KD1CDhn4FakqN`U>zD3=qWwWw&O$@ z+2`?;1p3klAG#=KGfua*NqQ9#PFUqJBWeBg!m@l_a7)9LTYAq@GIP?b%n$L=NlBZ| z&X{sE#Qflra=FBmY&g(DH98i;lUaQ#t6p*3v5=FL(WbJHDD)*y#QCHs#(AqxjMW5$ zj2d{vn4Lj#5m6k3uQoRf-i>9cTCDt}{!7EV`nC4l;6H8{`>lwE)N%0l-`3ORv!?@I zAA1RO#kkk>5%m*J9dunoW|w!9UNUb*+=FK4pei!u8)TdVnJJsJao#G&wbY7Ro!5t5 zyw)0V09<*KgNX#6sj7m$FnDX*>t?gzFwTRXw9Vvj%zgI~iNM%6>Uv#i+Y*U_HTS1h^7-w2bw6F zBVf!@5G8CBajLvslF*IxS^7N;tSySi0c-1xjk^1ONa4 delta 380 zcmey{$8@fliM4@s>fy$XtW!!RCs$6>UdX|~kRj*$hcQDs>jyiKEtA2VA)BGo!&Q`; zmRgjWmza*4Z4T7q>R#gvE_Ya@Cit1u{sCoZ!sGB^! zBx+M_6cZ!+=IHvj%#&lArPv<=ZOXdGF}bdJyUR@w`x=N?10q&}h@Bu}8;CdxA`XFw ziy-10kSOip%uCEoEvYO>EuK<4MI-AW$K>9Y0yU69eqcj7zy@@HHFtnDc9do)f|LU7 n)NkFU54H{zRuJnJgNz1Sw*kZgTek

Export

+
+

Fonst

+
    +
  • Get all fonts

  • +
+
fonts = app.get_fonts()
+for f in fonts:
+    print(f'Name: {f.Name} - StyleName: {f.StyleName}')
+
+
+

Call dispatch

You can call any dispatch command used only if property or method no exists in original object or in easymacro.py

diff --git a/doc/build/main/easymacro.html b/doc/build/main/easymacro.html index 967bab9..81731ce 100644 --- a/doc/build/main/easymacro.html +++ b/doc/build/main/easymacro.html @@ -80,6 +80,7 @@
  • Render string
  • Encrypt decrypt
  • Simple url open
  • +
  • Color
  • Paths and files
  • diff --git a/doc/build/main/email.html b/doc/build/main/email.html index 014cd83..7082cc6 100644 --- a/doc/build/main/email.html +++ b/doc/build/main/email.html @@ -39,11 +39,86 @@
    import easymacro as app
     
    +

    IMPORTANT: Always save your config the more security way possible.

    Send email

    -
    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.

    • +
    +
    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.

    • +
    +
    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)
    +
    +
    +
    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

    • +
    +
    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.

    • +
    +
    files = (
    +    '/home/mau/file1.epub',
    +    '/home/mau/file2.epub',
    +)
    +
    +
    +
      +
    • All emails always send in other thread.

    • +
    diff --git a/doc/build/main/tools.html b/doc/build/main/tools.html index 6523cc5..3841eea 100644 --- a/doc/build/main/tools.html +++ b/doc/build/main/tools.html @@ -482,6 +482,23 @@ drwxr-xr-x 2 mau mau 4.0K Jun

    For more complex case, you can used requests or httpx

    +
    +

    Color

    +

    Look colors that you can used in web colors

    +
    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)
    +
    +
    +
    diff --git a/doc/build/searchindex.js b/doc/build/searchindex.js index 3504ec8..7a05ad2 100644 --- a/doc/build/searchindex.js +++ b/doc/build/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["index","main/application","main/base","main/calc","main/config","main/easymacro","main/email","main/examples","main/examples_app","main/examples_base","main/examples_calc","main/examples_draw","main/examples_writer","main/intro","main/paths","main/tools","main/tools_for_debug","main/writer"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["index.rst","main/application.rst","main/base.rst","main/calc.rst","main/config.rst","main/easymacro.rst","main/email.rst","main/examples.rst","main/examples_app.rst","main/examples_base.rst","main/examples_calc.rst","main/examples_draw.rst","main/examples_writer.rst","main/intro.rst","main/paths.rst","main/tools.rst","main/tools_for_debug.rst","main/writer.rst"],objects:{},objnames:{},objtypes:{},terms:{"0":[4,8,12,13,14,16],"02":13,"04":13,"06":[14,15],"07":13,"080315":15,"082211":15,"09":15,"0k":15,"1":[4,9,13,14,15,16],"100":10,"11":[13,15],"12":15,"126446":15,"128487":15,"13":15,"14":15,"15":15,"16":15,"17":15,"18":15,"19":15,"2":[4,9,14,15,16],"20":[13,15],"200":10,"2001":9,"2002":9,"2003":9,"2004":9,"2005":9,"2021":[13,14,15],"21":[14,15],"22":15,"23":[13,15],"24":14,"26":15,"27":15,"29":14,"3":[4,9,13,14],"300":10,"34":15,"35":15,"3m":15,"4":[9,14,15],"40":13,"400":10,"41":13,"42":15,"43":15,"46":15,"47":[14,15],"48":15,"5":[9,15],"50":13,"500":[10,16],"53":[13,15],"6":15,"7":13,"8859":14,"9":4,"abstract":5,"case":15,"catch":5,"class":9,"default":[1,14,15],"do":14,"export":5,"extensi\u00f3n":4,"final":13,"function":[13,16],"import":[1,2,3,5,6,9,14,15,16,17],"new":[4,5,9,11,13],"null":9,"opci\u00f3n":4,"public":4,"return":[8,9,10,11,12,15,16],"super":15,"true":[1,4,9,11,14,15],"while":1,A:4,And:16,FOR:4,For:[0,1,4,7,14,15],If:[4,16],In:[4,13,15],Is:[4,15],It:[4,5],Of:15,Ons:4,Or:14,The:4,To:5,With:[1,13],a1:10,absolut:4,academ:12,act:14,action:[14,15],activ:[1,5,12,16,17],active_sheet:[3,10],add:[4,13,14,16],addin:[4,13],addonmenu:4,all:[4,14],along:4,alt:[4,8],alwai:[1,2,3,5,6,14,15,16,17],an:[5,14],ani:[1,4,5,15,16],api:[5,14,15],app:[1,2,3,5,6,8,9,10,11,12,14,15,16,17],app_nam:[14,15],applic:[0,4,5,7,15],april:10,apt:13,ar:[5,14,15],arbitrari:1,archlinux:13,arg:[1,15],argument:[1,4],ask:14,automat:[4,10,16],autostyl:7,awt:1,b:14,base:[0,4,5,7],base_insert_data:9,base_select_data:9,basedatefield:9,basemodel:9,basic:[13,15],befor:[4,16],bergman:[9,15],best:15,better:[15,16],between:5,bin:[4,14],binari:5,blank:4,bmp:4,bool:4,born:9,both:15,box:5,build:14,c:13,cach:14,calc:[0,1,4,5,7,8,13,14],calc_data_to_cel:10,calcul:[10,15],call:5,call_dispatch:1,call_macro:15,can:[1,4,5,9,13,14,15,16],captur:15,catch_except:16,caution:[14,15],cd:[4,13],cell:7,chang:14,charfield:9,clipboard:7,clock:15,clone:13,close:11,code:[4,5,16],com:1,command:[1,15],commandurl:8,complex:[5,15],compon:[4,13],compress:13,con:5,conf:[4,15],config:[14,15],configur:[0,5],confirm:14,connect:[2,9],contact:[9,15],contacto:9,content:14,context:[1,4,14],copi:[4,5,13,16],correctli:4,cotillar:9,count:5,cours:[13,15],creat:[4,5,7,13],create_inst:1,create_t:9,cryptographi:15,csv:5,ctrl:[4,8],cuat:13,current:[4,5,15],custom:[5,7],danger:15,darken:14,data:[5,7,8,15,16],data_to_dict:15,databas:[5,9],database_proxi:9,databaseproxi:9,date:[5,9,16],datetim:9,db:[2,9],de:4,debug:[0,5,8,14,15],decrypt:5,def:[8,9,10,11,12,15,16],defin:14,delet:[5,7],delete_menu:8,delin:14,descript:4,desktop1:1,desktop2:1,desktop:[1,15],detail:4,dev:13,develop:[4,5,13],dialog:1,dialogprovider2:1,dict:9,dict_to_properti:15,dictionari:[4,5],difficult:16,digest:5,dir:5,dir_tmp:14,directli:[5,15],directori:[5,13],dispatch:5,displai:4,display_nam:4,displaynam:4,distribut:4,doc:[2,5,9,11,12,14],document:[1,5,11,15],domain:13,don:[13,14],done:13,download:[13,14,15],draw:[0,1,4,7],drwxr:15,dt:14,each:4,easi:15,easili:5,easymacro:[0,1,2,3,6,9,14,15,16,17],echochar:15,edit:4,either:4,el:4,elmau:[4,13,14],els:9,email:[0,5],en:[4,5],encod:14,encrypt:5,encrypt_decrypt:15,end:15,epoch:15,error:5,errorbox:15,es:4,even:4,everi:15,exactli:4,exampl:[0,1,4,8],except:5,execut:[5,9,15],exist:[1,5,9],exists_app:14,exit:14,ext:14,extens:[0,5,16],extensionnam:4,extern:5,extract:14,f:[1,4,14],fals:9,februari:10,file:[0,1,5,13],file_nam:[14,15],file_test:4,filter:14,finish:15,first:0,fit:4,folder:[4,14],fonda:9,forget:13,format:[1,4,5,15],foundat:4,frame:1,free:4,fresh:13,from:[5,7,9,13],from_csv:14,from_id:14,from_json:14,galleri:1,gener:[4,13],get:[5,9],get_config:15,get_desktop:1,get_dir:14,get_epoch:15,get_fil:14,get_json:15,get_queri:9,git:13,gnome:15,gnu:[4,15],gran:4,great:4,happi:5,have:[4,16],he:14,hello:15,hi:14,hidden:[1,11,15],himself:14,home:[1,2,4,5,9,11,15,16],hope:4,html:14,http:[4,13,15],httpx:15,i18n:4,i:[13,15],id:[5,9],id_ext:14,id_fold:14,id_par:14,idea:14,identityfield:9,idl:4,idlc:4,imag:[4,7,14],immedi:14,impli:4,impress:[1,4],includ:4,index:[0,8,14],info:[4,5,8,13],info_debug:[5,8,15],inform:[14,16],ingrid:[9,15],init:14,initi:9,inputbox:5,insert:[7,8],insert_menu_in_calc:8,instal:[0,4,5,9,15,16],instanc:5,instruct:14,integ:4,intern:4,introduct:0,invers:4,ipifi:15,is_dir:14,is_fil:14,is_mac:15,is_win:15,iso:14,issu:16,iter:5,jane:9,januari:10,jefferson:14,join:5,json:5,json_dump:15,json_load:15,jun:15,kei:4,keyboard:4,kill:14,kim:9,know:14,label:[4,8],lang:15,languag:[4,15],languaj:15,later:4,layer:5,legacy_table_nam:9,len:1,lessen:14,letmein:[1,15],letter_lov:15,lh:15,lib:4,librari:[0,1,2,3,6,8,14,15,17],libre_offic:14,libreoffic:[1,4,5,13,15,16],license_:4,license_en:4,light:14,like:4,line:15,link:4,linux:15,list:5,list_of_list:15,local:13,log:5,logo:[4,14],look:4,loren:9,ls:15,lu20665x29msz:14,m:8,mac:15,macro:[4,5,7,8,13],mai:[10,15],main:15,major:5,make:[5,7,13],manag:4,march:10,marion:9,mau:[1,2,4,9,11,14,15,16],md:14,me:14,measur:15,member:14,memori:1,menu:7,menu_main:4,merchant:4,merg:14,merge_zip:14,messag:5,meta:9,method:[1,14],mi:4,mine:14,model:9,modifi:4,modul:[0,15],module1:15,month:10,more:[4,5,14,15],move:[4,13],mri:5,msg:[1,16],msgbox:[1,2,3,5,6,8,11,14,15,16,17],multi:4,multipl:14,my:[0,4,8,15,16],my_app:15,my_extens:15,mydoc:1,myfil:14,myfirstextens:13,myfirstextension_v0:13,mygreatextens:4,mymacro:8,n:[4,13,14],name:[3,5,8,9,14,15,16],name_16:4,name_26:4,need:[9,15,16],net:[4,13,14],new_nam:14,nombr:4,none:15,normal:[4,15],nosoffic:14,novak:9,now:[13,14,15],obj:[5,16],object:[1,5,16],od:[1,4,14],odb:[2,9],odt:[1,14,15],officemenubar:4,ok:15,one:[4,14,16],onli:[1,4,15],open:[4,5,11,16],oper:15,option1:4,option:[4,14],org:[4,15],origin:[1,5],os:[6,14,15],other:[1,14,15],other_nam:14,ott:14,out:15,output:15,overview:0,oxt:[13,14],p:14,pacman:13,page:[0,4],paramet:0,part:4,particular:4,pass:4,password:[1,15],past:11,path:[0,1,2,5,9,11,15],path_dir:14,path_fil:14,path_hom:14,path_new:14,path_pygettext:4,path_python:14,path_temp:14,path_tmp:14,path_url:14,path_zip:14,pathlib:14,pc:5,pdf:[5,14],peewe:9,pictur:[11,14,15],pip:9,planet:16,pleas:[4,16],png:[4,14,15],popen:15,possibl:4,pot:[4,13],print:9,privat:15,probabl:5,problem:16,process:16,product:[7,16],program:5,project:[4,13,14,15,16],properti:[1,4,5],provid:13,prueba:4,publish:4,purpos:4,py:[0,1,4,13],python3:4,python:[5,13,15],pyuno:16,queri:9,question:5,r:[15,16],rang:10,rapid:13,rdb:4,read:5,read_bin:14,receiv:[4,14],recommend:[4,13],recurs:14,redistribut:4,regard:15,regmerg:4,rel:4,rememb:[1,2,3,6,14,15,17],remerg:4,remov:8,render:5,replac:5,replace_ext:14,repositori:13,request:15,requir:0,result:[14,15],row:9,run:15,run_in_thread:15,rw:15,s:[4,5,13],safe_for_delet:14,same:[4,14,15],save:[5,7,16],save_bin:14,save_data:15,save_image_from_clipboard:11,save_log:16,save_tmp:14,script:13,sdk:[4,13],search:0,second:15,secret:15,see:4,select:[5,7],semant:4,send:[5,15],servic:1,set:[4,7,14],set_config:15,sha256:15,sha512:15,share:4,sheet:[5,10],shell:16,shift:[4,8],shortcut:[4,8],should:4,show:[4,5,8,16],show_info_debug:8,show_messag:15,show_tim:15,simpl:5,size:[10,14],sleep:15,soffic:[4,14],sofia:9,softwar:4,sometim:16,sourc:[13,14],space:4,srv:14,standard:15,star:1,start:[4,13,15,16],start_clock:15,start_tim:15,stop:15,stop_clock:15,stop_tim:15,string:[4,5],style:12,sub:15,subdir:14,subdirectori:14,submenu:8,successfulli:13,sudo:13,sun:1,support:[1,13,15],svg:14,system:[5,15],t:[4,13,14],t_shift_mod1_mod2:4,tabl:7,taper:14,target:[11,14],technic:15,temp:5,temp_dir:14,templat:15,tempor:5,teresa:16,term:4,test:[1,9,13,14,15,16],text:[4,5,15],thi:[4,13,14,15,16],thoma:14,thread:5,three:[14,16],ticket:16,time:[5,16],timer:5,timer_nam:15,titl:[1,4,15],tmp:14,tmp_:14,to_csv:14,to_json:14,to_pdf:1,to_system:14,to_url:14,todai:15,token:15,too:[4,15],tool:[0,4,5,8],toolbar:4,toolkit:1,total:[10,15],tu:4,tupl:[4,5,9,14],tuple_of_tupl:15,two:[4,14],txt:[14,16],type:[1,2,3,5,15,17],type_extens:4,u:9,ubuntu:13,under:4,uniqu:4,uno:[1,5],uno_packag:14,unopkg:[4,13],unzip:5,urd:4,url:[4,5],url_open:15,us:[1,4,5,7,13,14,15,16],use_local:4,user:[13,14,15],usr:4,utf8:14,v:4,valor:4,valu:4,variant:15,verifi:[5,16],version:15,video:15,vim:4,visibl:1,wai:14,walk:14,walk_dir:14,want:[4,14],warn:5,warranti:4,what:4,when:[4,14],where:4,who:14,window:15,without:[1,4,14],wizard:4,work:15,writer:[0,1,4,5,7],writer_table_set_styl:12,www:4,x:15,xlsx:1,xml:14,xpathset:14,xr:15,you:[1,4,5,9,13,14,15,16],your:[4,5,15,16],yournam:4,zaz:[4,8,13,14],zazeasymacro_v0:14,zip:5,zip_cont:14},titles:["Welcome to ZAZ\u2019s documentation!","Application","Base","Calc","Configuration","Library easymacro.py","Email","Examples","For Application","For Base","For Calc","For Draw","For Writer","Introduction","Paths and files","Tools","Tools for debug","Writer"],titleterms:{"catch":16,"default":4,"export":1,"function":4,"new":[1,2],For:[8,9,10,11,12],To:1,activ:3,ani:14,applic:[1,8,14],author:4,autostyl:12,base:[2,9],binari:14,box:[15,16],calc:[3,10],call:[1,15,16],cell:10,clipboard:11,configur:[4,14,15],content:[0,5,7],copi:14,count:1,creat:[1,9],csv:14,current:[1,3,17],custom:8,data:[9,10,14],databas:2,date:15,debug:16,decrypt:15,delet:[8,14],dictionari:15,digest:15,dir:14,directori:14,dispatch:1,doc:[1,3,17],document:[0,14],domain:4,draw:11,easymacro:5,email:6,encrypt:15,error:[15,16],exampl:7,except:16,execut:14,exist:14,extens:[4,13,14],extern:15,file:[4,14,16],first:13,format:14,from:[11,14,15],get:[1,14,15],home:14,icon:4,id:[4,14],imag:11,indic:0,info:[14,15,16],info_debug:16,inform:4,inputbox:15,insert:9,instal:[13,14],instanc:1,introduct:13,iter:1,join:14,json:[14,15],librari:5,libreoffic:14,licens:4,list:15,local:4,log:16,macro:15,main:4,make:[8,15],menu:[4,8],messag:[15,16],mri:16,my:13,name:[1,4],open:[1,14,15],overview:13,paramet:4,parent:4,path:[4,14],pc:15,pdf:1,program:[4,15],properti:15,py:5,pygettext:4,python:14,question:15,read:14,render:15,replac:14,requir:13,s:0,save:[1,11,14,15],select:[9,14],send:6,set:12,sheet:3,show:15,simpl:15,string:15,system:14,tabl:[0,9,12],temp:14,tempor:14,test:4,text:14,thread:15,time:15,timer:15,tool:[15,16],tupl:15,type:[4,14],unzip:14,url:[14,15],verifi:14,version:4,warn:15,welcom:0,writer:[12,17],zaz:0,zip:14}}) \ No newline at end of file +Search.setIndex({docnames:["index","main/application","main/base","main/calc","main/config","main/easymacro","main/email","main/examples","main/examples_app","main/examples_base","main/examples_calc","main/examples_draw","main/examples_writer","main/intro","main/paths","main/tools","main/tools_for_debug","main/writer"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["index.rst","main/application.rst","main/base.rst","main/calc.rst","main/config.rst","main/easymacro.rst","main/email.rst","main/examples.rst","main/examples_app.rst","main/examples_base.rst","main/examples_calc.rst","main/examples_draw.rst","main/examples_writer.rst","main/intro.rst","main/paths.rst","main/tools.rst","main/tools_for_debug.rst","main/writer.rst"],objects:{},objnames:{},objtypes:{},terms:{"0":[4,8,12,13,14,16],"008080":15,"02":13,"04":13,"06":[6,14,15],"07":13,"080315":15,"082211":15,"09":15,"0k":15,"1":[4,9,13,14,15,16],"10":15,"100":10,"11":[13,15],"12":15,"125":15,"126446":15,"128487":15,"13":[6,15],"14":15,"15":15,"16":15,"17":15,"18":15,"19":15,"2":[4,9,14,15,16],"20":[13,15],"200":[10,15],"2001":9,"2002":9,"2003":9,"2004":9,"2005":9,"2021":[6,13,14,15],"21":[14,15],"22":15,"23":[6,13,15],"24":[6,14],"26":[6,15],"27":15,"29":14,"3":[4,9,13,14],"30":6,"300":10,"34":15,"35":15,"3m":15,"4":[9,14,15],"40":13,"400":10,"41":13,"42":15,"43":[6,15],"46":15,"47":[14,15],"48":15,"495":6,"5":[9,15],"50":13,"500":[10,16],"53":[13,15],"6":15,"7":13,"8859":14,"9":4,"abstract":5,"case":15,"catch":5,"class":9,"default":[1,14,15],"do":14,"export":5,"extensi\u00f3n":4,"final":13,"function":[13,16],"import":[1,2,3,5,6,9,14,15,16,17],"new":[4,5,9,11,13],"null":9,"opci\u00f3n":4,"public":4,"return":[8,9,10,11,12,15,16],"super":15,"true":[1,4,6,9,11,14,15],"while":1,A:4,And:16,FOR:4,For:[0,1,4,7,14,15],If:[4,16],In:[4,13,15],Is:[4,15],It:[4,5],Of:15,Ons:4,Or:14,The:4,To:5,With:[1,13],a1:10,absolut:4,academ:12,act:14,action:[14,15],activ:[1,5,12,16,17],active_sheet:[3,10],add:[4,13,14,16],addin:[4,13],addonmenu:4,address:6,all:[1,4,6,14],along:4,alt:[4,8],alwai:[1,2,3,5,6,14,15,16,17],an:[5,14],ani:[1,4,5,15,16],api:[5,14,15],app:[1,2,3,5,6,8,9,10,11,12,14,15,16,17],app_nam:[14,15],applic:[0,4,5,7,15],april:10,apt:13,ar:[5,6,14,15],arbitrari:1,archlinux:13,arg:[1,15],argument:[1,4],ask:14,attach:6,automat:[4,10,16],autostyl:7,awt:1,b:14,base:[0,4,5,7],base_insert_data:9,base_select_data:9,basedatefield:9,basemodel:9,basic:[13,15],bcc:6,befor:[4,16],bergman:[6,9,15],best:15,better:[15,16],between:5,bin:[4,14],binari:5,blank:4,bmp:4,bodi:6,bool:4,born:9,both:15,box:5,build:14,c:13,cach:14,calc:[0,1,4,5,7,8,13,14],calc_data_to_cel:10,calcul:[10,15],call:5,call_dispatch:1,call_macro:15,can:[1,4,5,6,9,13,14,15,16],captur:15,catch_except:16,caution:[14,15],cc:6,cd:[4,13],cell:7,chang:14,charfield:9,clipboard:7,clock:15,clone:13,close:[6,11],code:[4,5,16],color:5,color_html:15,color_nam:15,color_rgb:15,com:[1,6],command:[1,15],commandurl:8,complex:[5,15],compon:[4,13],compress:13,con:5,conf:[4,6,15],config:[6,14,15],configur:[0,5],confirm:14,connect:[2,6,9],contact:[9,15],contacto:9,content:14,context:[1,4,14],copi:[4,5,13,16],correctli:4,correo:6,cotillar:9,count:5,cours:[13,15],creat:[4,5,7,13],create_inst:1,create_t:9,cryptographi:15,csv:5,ctrl:[4,8],cuat:13,current:[4,5,15],custom:[5,7],danger:15,darkblu:15,darken:14,data:[5,7,8,15,16],data_to_dict:15,databas:[5,9],database_proxi:9,databaseproxi:9,date:[5,9,16],datetim:9,db:[2,9],de:4,debug:[0,5,6,8,14,15],decrypt:5,def:[8,9,10,11,12,15,16],defin:14,delet:[5,7],delete_menu:8,delin:14,descript:4,desktop1:1,desktop2:1,desktop:[1,15],detail:4,dev:13,develop:[4,5,13],dialog:1,dialogprovider2:1,dict:[6,9],dict_to_properti:15,dictionari:[4,5],difficult:16,digest:5,dir:5,dir_tmp:14,directli:[5,15],directori:[5,13],dispatch:5,displai:4,display_nam:4,displaynam:4,distribut:4,doc:[2,5,9,11,12,14],document:[1,5,11,15],domain:13,don:[13,14],done:13,download:[13,14,15],draw:[0,1,4,7],drwxr:15,dt:14,each:4,easi:15,easili:5,easymacro:[0,1,2,3,6,9,14,15,16,17],echochar:15,edit:4,either:4,el:4,elmau:[4,13,14],els:9,email:[0,5],en:[4,5],encod:14,encrypt:5,encrypt_decrypt:15,end:15,epoch:15,epub:6,error:5,errorbox:15,es:4,even:4,everi:15,exactli:4,exampl:[0,1,4,8],except:5,execut:[5,9,15],exist:[1,5,9],exists_app:14,exit:14,ext:14,extens:[0,5,16],extensionnam:4,extern:5,extract:14,f:[1,4,14],fals:9,februari:10,field:6,file1:6,file2:6,file:[0,1,5,6,13],file_nam:[14,15],file_test:4,filter:14,finish:15,first:0,fit:4,folder:[4,14],fonda:9,fonst:5,font:1,forget:13,format:[1,4,5,15],foundat:4,frame:1,free:4,fresh:13,from:[5,6,7,9,13],from_csv:14,from_id:14,from_json:14,galleri:1,gandi:6,gener:[4,13],get:[5,9],get_color:15,get_config:15,get_desktop:1,get_dir:14,get_epoch:15,get_fil:14,get_font:1,get_json:15,get_queri:9,git:13,gnome:15,gnu:[4,15],gran:4,great:4,happi:5,have:[4,16],he:14,hello:[6,15],hi:14,hidden:[1,6,11,15],himself:14,home:[1,2,4,5,6,9,11,15,16],hope:4,html:14,http:[4,13,15],httpx:15,i18n:4,i:[6,13,15],id:[5,9],id_ext:14,id_fold:14,id_par:14,idea:14,identityfield:9,idl:4,idlc:4,imag:[4,7,14],immedi:14,impli:4,impress:[1,4],includ:4,index:[0,8,14],info:[4,5,8,13],info_debug:[5,8,15],inform:[14,16],ingrid:[6,9,15],init:14,initi:9,inputbox:5,insert:[7,8],insert_menu_in_calc:8,instal:[0,4,5,9,15,16],instanc:5,instruct:14,integ:4,intern:4,introduct:0,invers:4,ipifi:15,is_dir:14,is_fil:14,is_mac:15,is_win:15,iso:14,issu:16,iter:5,jane:9,januari:10,jefferson:14,join:5,json:5,json_dump:15,json_load:15,jun:15,kei:4,keyboard:4,kill:14,kim:9,know:14,label:[4,8],lang:15,languag:[4,15],languaj:15,later:4,layer:5,legacy_table_nam:9,len:1,lessen:14,letmein:[1,15],letter_lov:15,lh:15,lib:4,librari:[0,1,2,3,6,8,14,15,17],libre_offic:14,libreoffic:[1,4,5,13,15,16],license_:4,license_en:4,light:14,like:4,line:15,link:4,linux:15,list:5,list_of_list:15,local:13,log:5,logo:[4,14],look:[4,15],loren:[6,9],love:6,ls:15,lu20665x29msz:14,m:8,mac:15,macro:[4,5,7,8,13],mai:[10,15],mail1:6,mail2:6,mail3:6,mail:6,main:15,major:5,make:[5,7,13],manag:4,mani:[],march:10,marion:9,mau:[1,2,4,6,9,11,14,15,16],md:14,me:14,measur:15,member:14,memori:1,menu:7,menu_main:4,merchant:4,merg:14,merge_zip:14,messag:[5,6],message1:6,message2:6,meta:9,method:[1,14],mi:4,mine:14,model:9,modifi:4,modul:[0,15],module1:15,month:10,more:[4,5,6,14,15],move:[4,13],mri:5,msg:[1,16],msgbox:[1,2,3,5,8,11,14,15,16,17],multi:4,multipl:14,mx:6,my:[0,4,8,15,16],my_app:15,my_extens:15,mydoc:1,myfil:14,myfirstextens:13,myfirstextension_v0:13,mygreatextens:4,mymacro:8,n:[4,6,13,14],name:[3,5,8,9,14,15,16],name_16:4,name_26:4,nbest:6,need:[9,15,16],net:[4,6,13,14],new_nam:14,noexist:6,nombr:4,none:15,normal:[4,15],nosoffic:14,novak:9,now:[13,14,15],nwho:6,obj:[5,16],object:[1,5,16],od:[1,4,14],odb:[2,9],odt:[1,14,15],officemenubar:4,ok:15,one:[4,6,14,16],onli:[1,4,15],open:[4,5,11,16],oper:15,option1:4,option:[4,14],org:[4,15],origin:[1,5],os:[14,15],other:[1,6,14,15],other_nam:14,ott:14,out:15,output:15,overview:0,oxt:[13,14],p:14,pacman:13,page:[0,4],paramet:0,part:4,particular:4,pass:4,password:[1,6,15],past:11,path:[0,1,2,5,9,11,15],path_dir:14,path_fil:14,path_hom:14,path_new:14,path_pygettext:4,path_python:14,path_temp:14,path_tmp:14,path_url:14,path_zip:14,pathlib:14,pc:5,pdf:[5,14],peewe:9,pictur:[11,14,15],pip:9,planet:16,pleas:[4,16],png:[4,14,15],popen:15,port:6,possibl:[4,6],pot:[4,13],print:[1,9],privat:15,probabl:5,problem:16,process:16,product:[7,16],program:5,project:[4,13,14,15,16],properti:[1,4,5],provid:13,prueba:4,publish:4,purpos:4,py:[0,1,4,13],python3:4,python:[5,13,15],pyuno:16,queri:9,question:5,r:[15,16],rang:10,rapid:13,rdb:4,read:5,read_bin:14,receiv:[4,14],recommend:[4,13],recurs:14,redistribut:4,regard:[6,15],regmerg:4,rel:4,rememb:[1,2,3,6,14,15,17],remerg:4,remov:8,render:5,replac:5,replace_ext:14,repositori:13,request:15,requir:0,respond:6,result:[14,15],row:9,run:15,run_in_thread:15,rw:15,s:[4,5,13],safe_for_delet:14,same:[4,14,15],save:[5,6,7,16],save_bin:14,save_data:15,save_image_from_clipboard:11,save_log:16,save_tmp:14,script:13,sdk:[4,13],search:0,second:15,secret:15,secur:6,see:4,select:[5,7],semant:4,send:[5,15],send_email:6,sent:6,server:6,servic:1,set:[4,7,14],set_config:15,sha256:15,sha512:15,share:4,sheet:[5,10],shell:16,shift:[4,8],shortcut:[4,8],should:4,show:[4,5,8,16],show_info_debug:8,show_messag:15,show_tim:15,simpl:5,size:[10,14],sleep:15,soffic:[4,14],sofia:9,softwar:4,sometim:16,sophia:6,sourc:[13,14],space:4,srv:14,ssl:6,standard:15,star:1,start:[4,13,15,16],start_clock:15,start_tim:15,stop:15,stop_clock:15,stop_tim:15,string:[4,5],style:12,stylenam:1,sub:15,subdir:14,subdirectori:14,subject:6,submenu:8,successfulli:13,sudo:13,sun:1,support:[1,13,15],svg:14,system:[5,15],t:[4,13,14],t_shift_mod1_mod2:4,tabl:7,taper:14,target:[11,14],technic:15,temp:5,temp_dir:14,templat:15,tempor:5,teresa:16,term:4,test:[1,9,13,14,15,16],text:[4,5,15],than:6,thi:[4,13,14,15,16],thoma:14,thread:[5,6],three:[14,16],ticket:16,time:[5,16],timer:5,timer_nam:15,titl:[1,4,15],tmp:14,tmp_:14,to_csv:14,to_json:14,to_pdf:1,to_system:14,to_url:14,todai:15,token:15,too:[4,6,15],tool:[0,4,5,8],toolbar:4,toolkit:1,total:[10,15],tu:4,tupl:[4,5,9,14],tuple_of_tupl:15,two:[4,14],txt:[14,16],type:[1,2,3,5,15,17],type_extens:4,u:9,ubuntu:13,under:4,uniqu:4,uno:[1,5],uno_packag:14,unopkg:[4,13],unzip:5,urd:4,url:[4,5],url_open:15,us:[1,4,5,6,7,13,14,15,16],use_local:4,user:[6,13,14,15],usr:4,utf8:14,v:4,valor:4,valu:4,variant:15,verifi:[5,16],version:15,video:15,vim:4,visibl:1,wai:[6,14],walk:14,walk_dir:14,want:[4,14],warn:5,warranti:4,we:6,web:15,what:4,when:[4,14],where:4,who:14,window:15,without:[1,4,14],wizard:4,work:15,writer:[0,1,4,5,7],writer_table_set_styl:12,www:4,x:15,xlsx:1,xml:14,xpathset:14,xr:15,you:[1,4,5,6,9,13,14,15,16],your:[4,5,6,15,16],yournam:4,zaz:[4,8,13,14],zazeasymacro_v0:14,zip:5,zip_cont:14},titles:["Welcome to ZAZ\u2019s documentation!","Application","Base","Calc","Configuration","Library easymacro.py","Email","Examples","For Application","For Base","For Calc","For Draw","For Writer","Introduction","Paths and files","Tools","Tools for debug","Writer"],titleterms:{"catch":16,"default":4,"export":1,"function":4,"new":[1,2],For:[8,9,10,11,12],To:1,activ:3,ani:14,applic:[1,8,14],author:4,autostyl:12,base:[2,9],binari:14,box:[15,16],calc:[3,10],call:[1,15,16],cell:10,clipboard:11,color:15,configur:[4,14,15],content:[0,5,7],copi:14,count:1,creat:[1,9],csv:14,current:[1,3,17],custom:8,data:[9,10,14],databas:2,date:15,debug:16,decrypt:15,delet:[8,14],dictionari:15,digest:15,dir:14,directori:14,dispatch:1,doc:[1,3,17],document:[0,14],domain:4,draw:11,easymacro:5,email:6,encrypt:15,error:[15,16],exampl:7,except:16,execut:14,exist:14,extens:[4,13,14],extern:15,file:[4,14,16],first:13,fonst:1,format:14,from:[11,14,15],get:[1,14,15],home:14,icon:4,id:[4,14],imag:11,indic:0,info:[14,15,16],info_debug:16,inform:4,inputbox:15,insert:9,instal:[13,14],instanc:1,introduct:13,iter:1,join:14,json:[14,15],librari:5,libreoffic:14,licens:4,list:15,local:4,log:16,macro:15,main:4,make:[8,15],menu:[4,8],messag:[15,16],mri:16,my:13,name:[1,4],open:[1,14,15],overview:13,paramet:4,parent:4,path:[4,14],pc:15,pdf:1,program:[4,15],properti:15,py:5,pygettext:4,python:14,question:15,read:14,render:15,replac:14,requir:13,s:0,save:[1,11,14,15],select:[9,14],send:6,set:12,sheet:3,show:15,simpl:15,string:15,system:14,tabl:[0,9,12],temp:14,tempor:14,test:4,text:14,thread:15,time:15,timer:15,tool:[15,16],tupl:15,type:[4,14],unzip:14,url:[14,15],verifi:14,version:4,warn:15,welcom:0,writer:[12,17],zaz:0,zip:14}}) \ No newline at end of file diff --git a/doc/source/main/application.rst b/doc/source/main/application.rst index 338f4a8..9b9dcaf 100644 --- a/doc/source/main/application.rst +++ b/doc/source/main/application.rst @@ -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 ^^^^^^^^^^^^^ diff --git a/doc/source/main/email.rst b/doc/source/main/email.rst index b8d71fd..8a2daf2 100644 --- a/doc/source/main/email.rst +++ b/doc/source/main/email.rst @@ -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 diff --git a/doc/source/main/tools.rst b/doc/source/main/tools.rst index 08a2397..8496549 100644 --- a/doc/source/main/tools.rst +++ b/doc/source/main/tools.rst @@ -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 diff --git a/source/easymacro.py b/source/easymacro.py index bd1e225..a37fc1c 100644 --- a/source/easymacro.py +++ b/source/easymacro.py @@ -892,11 +892,11 @@ class SmtpServer(object): return False def _body(self, msg): - body = msg.replace('\\n', '
    ') + body = msg.replace('\n', '
    ') 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 = (