Amazing!用python一步實現郵件自動發送,快來試試吧!

2021-01-09 讀芯術

全文共3262字,預計學習時長10分鐘

圖源:Unsplash

「每天半小時學習編程,0基礎入門。」

「會Python的人,工作都不會太差。追上同齡人,就現在!」

在「全民Python」熱浪擊打中,作為一名非工程師,我也加入了「Python大軍」之中。

第一次使用python時,我感覺它不過是是excel的升級版,是一個可以改善數據分析工作的工具。

但隨著對python掌握得越好,我開始意識到它不僅僅是一個用來創造驚人的視覺效果或者執行高等數學函數的工具。

我開始探索python更多的可能性,並意識到我只是用到了這門語言的皮毛而已,而實際上我可以開始用它來自動化一些流程。

然而,我以前總是在擔心——「我不是一名軟體工程師,我辦不到」,這種想法一直讓我不敢把自動化流程付諸實踐。現在我仍不是一名軟體工程師,但我已經可以使一些流程自動化,使分析更有效,並成為了團隊中更有價值的成員。

從哪裡開始,心中始終有一個堅定的最終目標

為了有個正確的開端,心中需要有一個最終目標。

以我為例:當認識到我沒有充分挖掘這門程式語言的潛力時,我立即在想怎樣才能有效地把這些概念融入到我的工作中,從而更有效率。我靈光一現——報告。

作為分析員,公司經常要求我分析並製作報告。而作為其中優秀的一員,我把數據管道設置在一個計時器上,以便能夠自主輸入數據,然後寫好腳本並進行設置,就某一主題去創建表格、圖形和所需的統計信息。然而這個報告還未完成,我還需要去把這些視覺資料粘貼到演示文稿中,再把這封郵件發送到對方手中。

完美,我已經發現了哪裡可以自動化來提高工作效率。最終目標是:使用python,創建一個pdf格式的報告,將其作為附件添加到郵件並發送。

圖源:Unsplash

需要什麼

依賴項

下面是一些用於郵件自動發送的庫和軟體包。

#to create pdf report

from io import BytesIO

from reportlab.pdfgen import canvas

from django.http import HttpResponse#to automate email

import email, smtplib, sslfrom email import encoders

from email.mime.base import MIMEBase

from email.mime.multipart import MIMEMultipart

from email.mime.text import MIMEText

以上是我想在個人項目中使用的,您可能不是全都需要。

報告

本文將列出一個簡單的例子。使用「canvas」創建pdf,並自定義一些設置,如背景色、字體和字體大小、文本字符串和圖像(或圖表)。

代碼

#name and create pdf

c = canvas.Canvas('automate_report.pdf')

#set background color (this color is yellow I do not recommend)

c.setFillColorRGB(1,1,0)#Select font and font size

c.setFont('Helvetica', 30)#create two text strings and set there position onthe pagec.drawString(5, 660,'Missing data chart for Titanic Data')

c.drawString(5, 630, 'Report generated by Python')#add an image determine it'sposition and width and height

c.drawImage('Survival.png', 5,90,480,400)#show page and save it

c.showPage()

c.save()

這時pdf創建好了。

需要注意以下事項:

1、 圖像與python腳本要位於同一目錄下。

2、 這只是一個基本大綱,如果想創建更複雜的pdf報告,建議訪問canvas官方文檔。

電子郵件

我們已經製作了一個pdf報告,現在看看怎麼通過網絡發送它!

在深入研究代碼之前,你可能需要創建一個接收該pdf的電子郵件帳戶,以便在自己的郵箱中檢測郵件,而不會用到朋友的郵箱帳戶做該實驗。

提示:確保不要忘記密碼。

代碼:

# assign key emailaspects to variables for easier future editingsubject = "Weekly Report"

body = "This is an email with the desired report attached"

sender_email = "connerleavitt@gmail.com"

receiver_email = "connerleavitt@icloud.com"

file = "automate_report.pdf" # in the same directory as script

password = "abc123"# Create the email head (sender, receiver, andsubject)email = MIMEMultipart()

email["From"] = sender_email

email["To"] = receiver_email

email["Subject"] = subject# Add body and attachment toemailemail.attach(MIMEText(body, "plain"))attach_file = open(file,"rb") # open the file

report = MIMEBase("application", "octate-stream")

report.set_payload((attach_file).read())

encoders.encode_base64(report)

#add report header with the file name

report.add_header("Content-Decomposition", "attachment",filename = file)

email.attach(report)#Create SMTP session for sending the mailsession =smtplib.SMTP('smtp.gmail.com', 587) #use gmail with port

session.starttls() #enable security

session.login(sender_email, password) #login with mail_id and password

text = email.as_string()

session.sendmail(sender_email, receiver_email, text)

session.quit()

print('Mail Sent')

代碼中我儘可能地多做注釋,這些注釋應該能幫你理解所有代碼是如何工作和相互作用的。作為個人偏好,我喜歡把很多硬代碼作為變量放到腳本裡,以便隨時編輯。

結論

任何事都可能用python來完成,現存的資源可以幫助你完成從前做不到的事。

Python真的是一個很棒的工具,幫助你更多產、更高效。

就算你和我一樣不是一名技術工程師,你也可以學習一下Python,利用Python,為你的工作帶來便利。

圖源:item.btime

留言點讚關注

我們一起分享AI學習與發展的乾貨

如轉載,請後臺留言,遵守轉載規範

相關焦點

  • 如何用Python發送定時郵件?
    Python 發送定時郵件的小技巧 之前接了一個爬蟲的小項目,需要每天將數據發送到客戶的郵箱中,每天都登錄伺服器下載數據十分麻煩,因此就用 Python 配合 Windows 系統自帶的任務計劃,每天上午 10:00 定時將當天的數據發到客戶郵箱中。
  • python定時獲取天氣數據並自動發送到郵箱
    自動發送郵件,python幾行代碼來搞定!我們說到如何用python來實現自動發送郵件。這篇文章我們就來談談如何獲取天氣數據,並定時將天氣數據發送到指定的郵箱中?4.解決定時發送問題在前三步解決了點擊程序就獲取一次天氣信息並發送郵件的功能,那怎麼讓程序一直運行,並在規定時間發送郵件呢?在這裡我們用到apscheduler庫,它提供了專用的調度器和調度服務的基礎模塊。簡單說它就是可以實現 windows 計劃任務程序等類似的功能。
  • 「微信輔助」解放代購雙手,python實現微信好友驗證拉群一步到位
    哎,是一把鼻涕一把淚的擦在我身上,感受到對方的心情,我決定為對方專門開發,實現微信好友驗證拉群一步到位實現思路:1.加好友可以通過驗證碼來區分是否是需要港代的同學;2.發現是目標人物後,則需要為其引流到代購群中,實時獲取代購信息;(其實本來是想來直接通過wypy
  • 編程界新晉「網紅」Python到底是什麼?學Python真的有用嗎?
    當你的工作被新的技術一步一步取代,而你卻對它一無所知。等到你的工作完全被新的技術以及懂技術的人取代之時,你會發現一切已經來不及。英國金融時報的一篇文章預測了2025年幾大新興科技對經濟的影響。其中自動化辦公以7萬億的經濟影響排名第二,僅次於行動網路的11萬億。
  • 自動生成pandas代碼,python數據處理神器
    今天我要說的不是怎麼寫代碼,而是介紹一款我親手打造的小工具,它作為探索數據的工具,你不僅不需要寫任何的代碼,它最終還會自動生成pandas代碼。python 上其實有一些庫或者工具,是基於pandas做的界面操作,而我的工具有兩大特性可以秒殺他們。現在來簡單看看所見即所得,人工操作轉代碼這個工具的核心功能,就是自動生成代碼!!
  • 只需一臺電腦,用 Python 實時追蹤新冠病毒分布
    首先,需要設置電⼦郵件發送伺服器。server.quit()這樣,就能夠實現單次的最新疫情信息獲取了。如果你希望每天重複執⾏此腳本,可以通過下面連結中的編碼實現:https://stackoverflow.com/questions/15088037/python-script-to-do-something-at-the-same-time-every-day 成功訂閱!
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    基礎,從零到1 3s1 excel自動化處理,從此做表不加班 4s2 word自動化處理 又好又快做文檔 5 s3PPt自動化處理 用程序快速排版 6s4 郵件自動化處理 秒速回復全靠 7s5 web自動化處理 速做網站不求人 8 sx學員成果分享 10[hybridDev之VBA基礎]務必理解對象模型
  • 用一篇短文來告訴大家,學習Python都可以用來幹嘛
    python能做太多有趣的事了,看看我是怎麼玩的1.自動發郵件2.自動化操作excel3.定製酷炫二維碼4.下載視頻、MP35.爬蟲6.HTML\網頁自動生成PDF7.製作可視化圖表8.地理空間分析9.數據分析10連接資料庫11.機器學習如果你不知道如何學習python,入門困難,如果你想從事數據分析,學習分析技術,如果你想學習sql
  • 用python列印你的寵物小精靈吧
    我們來通過一個有趣的例子開始編寫我們的第一個python代碼。本文涉及的python基礎語法為:print輸出函數,賦值,字符串print()print()是python的一個內置函數,用於列印輸出,是最常見的一個函數之一。
  • 初學者如何用「python爬蟲」技術抓取網頁數據?
    在當今社會,網際網路上充斥著許多有用的數據。我們只需要耐心觀察並添加一些技術手段即可獲得大量有價值的數據。而這裡的「技術手段」就是指網絡爬蟲。 今天,小編將與您分享一個爬蟲的基本知識和入門教程:什麼是爬蟲?
  • Python小夥用簡單爬蟲實現成語接龍小遊戲!
    Python實現這個功能非常簡單,當然,這裡我也是寫了個簡單版的,實現了基本功能就好。話不多說,先上乾貨:開發前準備及思路:開發環境:python3.x模塊:requests,time,random,urllib,lxml #除了urllib模塊以外其餘模塊都需要安裝,pip可以解決url:http://chengyu.t086.com/先說一下成語接龍規則:1.接龍的成語的第一個字必須要與前一個成語結尾的字相同
  • Python模擬登陸豆瓣自動評論並自動識別驗證碼
    基本開發環境 Python 3.6 Pycharm Selenium Selenium 是一個 Web 的自動化測試工具,最初是為網站自動化測試而開發的,就像玩遊戲用的按鍵精靈,可以按指定的命令自動操作。
  • java和python哪個更好用?
    您需要擁有Java虛擬機(JVM)來運行Java程序。Java語法與C ++非常相似。 Java還是動態連結的程式語言。這意味著您可以從Internet上的任何地方下載代碼,然後在Java編譯器上運行它。它也是一種以網絡為中心的程式語言。除此之外,Java是具有自動內存管理功能的多線程語言。
  • WordPress建站中,既能發送郵件、又能記錄信息的SMTP插件教程
    ,能讓你清晰的知道郵件有沒有送出或是發送失敗。 在第6步中,你可以勾選谷歌瀏覽器擴展插件通知,當郵件發送不成功時,他不僅通過郵件通知你,還會通過瀏覽器擴展通知你。 在發送郵件測試界面,輸入收件的郵箱,並點擊下一步按鈕。
  • 郵件營銷中,郵箱驗證這一步不可忽略!
    優秀的郵件列表可以讓郵件營銷事半功倍。收集郵件地址的時候,有意識地進行數據分類,可提高列表相關性能,從而提高用戶對郵件的反饋效果。建立了客戶的郵箱地址列表以後,接下來最重要的是現如何驗證郵箱地址以確保你的郵箱是有效的。在郵件營銷中,往往使人誤以為發送的郵箱越多,就越有可能被更多人看到。其實不然,這種一味追求數量的發送方式是簡單而粗魯的。
  • 職場英語乾貨,發送郵件的時候,如何用英文表達「見附件」?
    今天,大汪給大家提供一點職場商務英語乾貨,因為我們都知道,只要是在工作中用到英語的話,那麼你就會發現,總免不了會需要發送英文郵件。大多數時候,在外企,發英文郵件時,不免也要發送一些附件,那這一系列諸如「見附件」相關英語如何表達呢?有些什麼小妙招呢?
  • 自動登錄的方法 Python爬蟲的一大難題
    一般來說,有兩種方法:一、手動輸入二、自動輸入在一些網站當中,我們只需要在一開始登錄帳號之後,就可以不用再管,像這種網站,就適合手動輸入,一次輸入,不需要再次調整。不過,有時爬蟲會遇到一些網站,這些網站信息的獲取都需要登錄之後才能獲取,這種情況下就需要使用爬蟲設置自動登錄了。那自動登錄該怎麼設置?
  • 少兒編程軟體python官網下載安裝過程圖文演示,家長都說好
    進入python的官方網站後,打開的是一個英文界面,我們可以翻譯成中文,也可以直接把滑鼠移動到頁面上部的」download「,會自動彈出一個菜單,裡面有個」3.9.0「,我們用滑鼠左鍵點擊一下即可。接著會彈出一個下載保存頁面,選擇自己想保存軟體的地方,點擊」下載「即可。
  • 發揮郵件中繼服務優勢作用有助於保障郵件安全投遞
    合理利用領先優勢   眾所周知,一旦郵件伺服器被黑客攻擊並且憑藉郵件帳號的密碼,那麼即便帳號曾經正常,也會因為被破解而發送大量的垃圾郵件,如果沒有及時判定並且採取妥善的處置措施,就會導致郵件伺服器IP被各類RBL黑名單反覆地列入其中,郵件退信問題也就屢禁不止。
  • 如何用Python實現透視表?
    相信接觸過Excel的小夥伴都知道,Excel有一個非常強大的功能「數據透視表」,使用數據透視表可以自由選擇不同欄位,用不同的聚合函數進行匯總,並建立交叉表格,用以從不同層面觀察數據。這麼強大的功能,在Python中怎麼去實現呢?