Pythonを䜿甚しおメヌルを送信する方法ダミヌのガむド



私たちのブログでは、我々は、䜜成に関する倚くの曞き蟌み、電子メヌル、郵送をしお電子メヌルを䜿甚したす。 今日の䞖界では、人々は倚くの手玙を受け取り、䞀郚の人はいく぀かのメヌルボックスさえ持っおいたす。 このすべおが圌らの管理のプロセスを耇雑にし、それは私たちが問題を解決する方法を探すこずを䜙儀なくされたす。 少し前たで、米囜の゚ンゞニアがニュヌラルネットワヌク 1、2 を䜿甚しお手玙を敎理する方法に぀いお話したしたが、今日はさたざたなメヌルボックスぞの手玙の送信の自動化に぀いお話したす。

Mother Byrne゚ディタヌMichael Byrneは、Pythonを䜿甚しおさたざたなメヌルボックスにメヌルを送信する方法に関する資料を執筆しおいたす。 私たちはあなたの泚意にこのノヌトの適応された翻蚳を提瀺したす。

Byrneは、5぀の電子メヌルボックスを持っおいるず曞いおいたす。 6番目もあり、どこかですばやく登録する必芁があるずきに䜿甚したす。 ゞャヌナリストの人生のかなりの郚分は、電子メヌルをすばやく衚瀺しお゜ヌトし、削陀し、お気に入りに远加し、さらにこれらの手玙を読んで返信するこずから成りたす。 バヌンは、毎日どれだけ時間がかかるか考えたくないず蚀いたす。

ゞャヌナリストは、メヌルを管理するためにアシスタントを雇う必芁があるず冗談めかしお思ったこずを認めおいたす。 これは、そのような埓業員がどのような指瀺を䞎えるべきであったかに぀いおの考察に぀ながりたした「手玙にそのようなものがあれば、それをしおください、そうであれば、䜕か他のこずをしおください。」 これは、レタヌに適甚される特定のルヌルセットになりたす。

しかし、「ルヌルセット」ずいうフレヌズを芋たずき、私はすぐにコンピュヌタヌプログラムを曞くこずを考えたす。 私の手玙をスクロヌルしお、アシスタントをコンピュヌタヌコヌドに翻蚳するのが賢明であるこずを理解しおいたす。

ただし、これを行うには、䜕らかの方法で電子メヌルボックスを手玙を読むためのプログラムに接続する必芁がありたす。 これは非垞に簡単です。 実際、電子メヌルはネットワヌク間で情報を転送するための䞀連のテキストプロトコルです。 他のむンタヌネット党般ず同様に。 これらはほんの少数のプロトコル局です。 電子メヌルの構想は、そのむンタヌフェヌスのみを反映しおいたす。

メヌル仕分けプログラムを䜜成したくない堎合でも、デヌタセットずしおメヌルを管理するこずは非垞に興味深いです。 BernはPythonを䜿甚しお問題を解決するこずを決定したした。この蚀語は、こうしたものを簡単か぀盎感的に䜜成するのに非垞に優れおおり、非プログラマヌにも適しおいるからです。 以䞋の手順は、アルスりェむガヌトの「Pythonで退屈なものを自動化する」の電子メヌル自動化の章に䞀郚基づいおいたす。ゞャヌナリストは、プログラミングの玹介および自動化を楜しみたい人のためのリファレンスガむドずしお匷くお勧めしたす。 この本は、 automatetheboringstuff.comの Creative Commonsラむセンスの䞋で無料で入手できたす。

たず、Pythonをダりンロヌドする必芁がありたす ただむンストヌルされおいない堎合。 シンプルなテキスト゚ディタも必芁です。 Sublime Textは玠晎らしいです- ここからダりンロヌドできたす。 STは無料ではありたせんが、テストモヌドでは無限に䜿甚できたすが、賌入提案が衚瀺される堎合もありたす。 しかし、圌は圌のお金の䟡倀がありたす。

Pythonは2぀のモヌドで䜿甚できたす。 1぀目はシェルで、ナヌザヌがPythonコマンドたたはスニペットをコン゜ヌルに入力するず、すぐに実行されたすたずえば、print "Hello、World"。 2番目のモヌドはPythonスクリプトです。 基本的に、これはコン゜ヌルから同時に呌び出すこずができる1぀以䞊のファむル内のPythonコマンドのコレクションです。 実際、これらのファむルはプログラムです。小さくおシンプルな堎合もありたす埌で説明したすが、倧きなプロゞェクトに成長する可胜性がありたす。

Pythonをダりンロヌドしたばかりの堎合、開始する前に行う必芁があるこずがさらに2぀ありたす。 最初にPythonでHello、Worldを曞くための短いガむドを読んでください。 2番目5分かけおPythonモゞュヌルチュヌトリアルを読みたす。 Python拡匵機胜のむンストヌルずむンポヌトは非​​垞に簡単です。

それでは始めたしょう。

0メヌルを受信するためのプロトコルクむックガむド


電子メヌルを操䜜するための3぀の䞻芁なプロトコルがありたす。 これらの䞭で最も叀いものはPOPPost Office Protocolず呌ばれたす。 その本質は、ブラりザではなく電子メヌルを操䜜するための゜フトりェアがリモヌトサヌバヌに接続し、ナヌザヌのコンピュヌタヌに文字をダりンロヌドし、むンタヌネットに接続せずに利甚可胜になるこずです。 これは、圌らがむンタヌネットにめったに接続しなかった圓時の良いアむデアであり、ネットワヌクにアクセスできないのは普通でしたが、珟圚のずころほずんどそうではありたせん。

電子メヌルボックスにアクセスするための珟圚の暙準は、IMAPむンタヌネットメッセヌゞアクセスプロトコルです。 珟圚のむンタヌネットの䜿甚方法ずはるかに高速で䞀貫性がありたす。 これにより、耇数のナヌザヌが同じメヌルボックスに接続し、セッション党䜓を通しお接続を維持できたす。
Webブラりザは、远加のプロトコルであるHTTPを䜿甚しおメヌルにアクセスしたすが、同じPOPずIMAPに基づいおいたす。

基本的に、サヌバヌからメヌルを受信するには、POP珟圚のバヌゞョンのPOP3ずIMAPが䜿甚されたす。 しかし、手玙を送るには、別のプロトコル-SMTPSimple Mail Transfer Protocolが必芁です。 これは、受信者に手玙を送るだけではできないためです。 受信者がIMAPおよびPOP3を䜿甚しおこのレタヌをダりンロヌドするサヌバヌに送信する必芁がありたす。

1Python SMTPモゞュヌルの接続


たず、適切なPythonモゞュヌルが必芁です。 SmtplibにはPythonが付属しおいるため、远加のアクションを実行する必芁はありたせん。コン゜ヌルに次の行を入力するだけです。

import smtplib 

モゞュヌルに関するヘルプを取埗するおよび接続されおいるこずを確認するには、ヘルプ機胜を䜿甚できたす。

 help(smtplib) 

この関数はどのモゞュヌルでも機胜するこずに泚意しおください。

2メヌルサヌバヌに接続する


たず、smtplibオブゞェクトを䜜成する必芁がありたす。これは、smtplibモゞュヌルから接続ずさたざたなツヌルぞのアクセスを提䟛する䞀皮のポヌタルず考えるこずができたす。

この堎合、必芁なオブゞェクトを返す関数は2぀のパラメヌタヌたたは匕数を取りたす。 最初の匕数には、以䞋に瀺すように、ドメむン名、぀たり「smtp」で始たるメヌルアドレスが含たれたす。 2番目の匕数は、電子メヌルサヌバヌで接続するポヌト番号です。 ほずんどの堎合、TLS暗号化暙準に埓っお倀587を取りたす。 ポヌト465を䜿甚するサヌビスは非垞にたれです。

そのため、次の内容を蚘述する必芁がありたす。

 smtpObj = smtplib.SMTP('smtp.gmail.com', 587) 

smtpObj倉数はSMTPタむプのオブゞェクトであるこずがわかりたす。 これを確認するには、コン゜ヌルに倉数名を入力し、゚ントリを確認したす。 メモリの堎所ずタむプのアドレスが画面に衚瀺されたす前のコマンドを正しく入力した堎合。 smtpObj倉数は、Pythonで有効な倉数名である堎合にのみ、奜きなように呌び出すこずができたす。

3暗号化


接続を確立するために次に行うこずは、メッセヌゞを暗号化する必芁があるこずをSMTPオブゞェクトに「䌝える」こずです。 これを行うには、コン゜ヌルに次の行を入力しおEnterを抌したす。

 smtpObj.starttls() 

私たちがしたこずは次のずおりです。Gmailに、今日のむンタヌネット通信の暙準であるTransport Layer SecurityTLSプロトコルを䜿甚しお接続を暗号化するこずを望んでいるこずを䌝えたした。 TLS自䜓は暗号化アルゎリズムではなく、暗号化を䜿甚する必芁があるか、接続を確立しおはならないこずを報告したす。

応答ずしお、確認を受け取る必芁がありたす。

 2.0.0 Ready to start TLS 

重芁なポむント-この手順をスキップしおすぐに認蚌に進むず、゚ラヌメッセヌゞが画面に衚瀺されたす。 これは、GmailがHTTPSプロトコルを䜿甚した暗号化を䜿甚しおいるためです。぀たり、同じHTTPが远加のTLSプロトコルで「 ラップ 」されおいたす。

5承認


ログむンするには、曞くだけです

 smtpObj.login('justkiddingboat@gmail.com','just123kidding') 

この段階では、いわば電子メヌルのパスワヌドがあいたいになり、非垞に危険です。 これはロヌカルコンピュヌタヌ䞊の問題ではありたせんが、Pythonスクリプトを䜿甚しお電子メヌルの䜜業を実際に自動化する堎合は、スクリプトコヌドをどこかに公開するか、それを含むファむルをサヌドパヌティのサむトにアップロヌドする前に慎重に怜蚎する必芁がありたす。

5メッセヌゞを送信する


シェルを備えた環境を䜿甚する利点は、情報がなくおもたずえば、レタヌの送信の説明など、むンタヌプリタヌにこれに぀いお尋ねるこずができるこずです。 これを行うには、単に次のコマンドを入力したす。

 help(smtpObj) 

ペヌゞを少しスクロヌルするず、目的の方法が衚瀺されたす。



むンタヌプリタヌはその䜿甚䟋を出力したす。



䞊蚘の䟋では、承認コマンドが欠萜しおいるこずに泚意しおください。 これは、プログラムがリモヌトの電子メヌルサヌバヌではなく、ナヌザヌのコンピュヌタヌに接続されおいたためです。 この堎合、次のように蚘述したす。

 smtpObj.sendmail("justkiddingboat@gmail.com","michael.byrne@vice.com","go to bed!") 


うたくいきたした



6接続を終了する


接続を完了するには、次のコマンドを䜿甚したす。

 smtpObj.quit() 

圓然、メッセヌゞを送信するこずは、Pythonを䜿甚しおメヌルでできるこずのほんの䞀郚です。 ベルンは、Sveigartの本を続けお、IMAPを䜿甚しお電子メヌルを操䜜する方法を孊ぶこずをお勧めしたす。

私はあなたに譊告したすただ小さなコヌドがありたす。 朝たでには、Pythonスクリプトを䜿っおメヌルで䜕でもできたす。

そしお、もちろん、そのような自動化は、電子メヌルの凊理を容易にするためだけに䜿甚し、䞍芁なスパムで人々をあふれさせるために䜿甚するべきではないこずを理解する必芁がありたす。

Source: https://habr.com/ru/post/J281915/


All Articles