コピー2019.11.13スポンサーリンクPythonを使って電子メールを送信する方法について見ていきます。ここでは電子メールをGoogleのGmailを使って、メールを送信するコードを書いて行きます。他のフリーメール(hotmailなど)やメールサーバーなどでも同様のことができるはずです。添付ファイルのあるメールを送信するSMTPハンドラーを使ってログをメールで送信する最後にスポンサーリンクPythonコードでGmailを送信するでは、Gmailを送信するコードをPythonで書いていきましょう。送信元となるGmailのアカウント(メールアドレス)とパスワード、送信先のメールアドレスを用意しておきます。gmailのホスト情報などが必要なので調べておきます。次のサイトに掲載されています。メールを読むことができます。使support.google.comこれらを使って以下のようにコードを書いて行きます。msg.set_content('これはPythonコードを使ったテストメールの本文です。メッセージオブジェクトを作成msg.set_content('これはPythonコードを使ったテストメールの本文です。password)server.send_message(msg)server.quit()まず、メールを送信するのでメッセージとSMTPのライブラリをインポートします。上の情報記事の中にあるものを記入します。送信元のメールアドレス、送信先のメールアドレス、サーバーにログインするためのユーザーネームとパスワードを、それぞれの変数に代入しておきます。(記載のものは架空のものですので、各自の状況に合わせて書き換えてください)メールを作成して行きます。message.EmailMessage()を使ってメールのオブジェクトを作ります。set_content()を使ってメール本文を記入し、Subjectにメールの件名、From、To、に先ほど設定した送信元と送信先を指定します。これでメール(テストメール)の完成です。メールを送信するためにサーバーに接続します。smtplib.SMTP()を使って、ホストとポートを指定します。ehlo()でサーバーと通信を開始し、starttls()でセキュアな通信経路を利用します。password)で情報を渡します。認証が成功したらsend_message(msg)でメッセージを送信します。完了したらquit()でサーバーを閉じます。いう流れのコードになっています。これをPythonファイルで保存して、ターミナルで実行してみましょう。Gmailのセキュリティ設定とエラーおそらく最初の実行ではエラーが出るのではないでしょうか。それはGoogle側がgmailへのアクセスのセキュリティを設定しているため、Pythonのコード実行からログインできないためです。Gmailにセキュリティ通知が届いていて、「安全性の低いアプリをブロックしました」という情報が表示されるはずです。ここで、Pythonのコードを実行するために、このセキュリティを回避しておく必要があるので、Googleアカウントの管理画面にアクセスして、「安全性の低いアプリのアクセス」の項目から「安全性の低いアプリの許可」を「有効」に設定します。これで再度、Pythonコードを受け付けるようになります。この作業は、最初に行っていても良いものです。Googleの提供するアプリにアクセスする時は、このような表示がされるので、必要に応じて設定の許可などをしましょう。メール送信の確認Googleのセキュリティの設定を行ったら、このコードを実行してみましょう。ターミナルから実行した場合は、何も問題が無ければ、数秒待てばプロンプトが再度表示されるはずです。(上のGoogleのセキュリティが効いてブロックされていればエラーが表示されます)メールが届いているか、送信先のメールボックスを確認してみましょう。このように、メールが受信できているのが確認できると成功です。スポンサーリンク添付ファイルのあるメールを送信する次は、添付ファイルをつけて、メールを送信するコードを書いてみます。添付するファイルは上のコードをmail_code.pyで同じで作業ディレクトリに保存したものを、テキストファイルとして添付送信してみます。上のコードを次のように書き換えてみました。msg.set_content('これはPythonコードを使ったテストメールの本文です。msg.attach(text.MIMEText('添付ファイルのあるメール送信です。msg.set_content('これはPythonコードを使ったテストメールの本文です。to_emailmsg.attach(text.MIMEText('添付ファイルのあるメール送信です。password)server.send_message(msg)server.quit()ファイルを添付して送信するには簡単な処理では行えないので、ライブラリを2つ追加してimportしています。サーバーやポートの情報は同じです。あとはメール作成の部分が違います。利用してメールのオブジェクトを作ります。使って、テキストを’plain’に指定して、メール本文を記述します。あと、Subjectは先ほどと区別するために少し変更しています。次に添付ファイルを作成します。withステートメントの構文を使ってファイルを読み込んで作成していきます。withステートメントの使い方は以下で触れています。open,write,read,with,seekPythonでのファイルの作成、データの入出力をここでは扱います。open()でファイル作成する時の読み書きのモード、write()での書き込み、read()での読み込み方、withステートメント、seek()での位置の移動を学びます。使ってファイルを読み出しモード’r’で開きます。使って、f.read()でデータを読み込み、テキストを’plain’に指定して変数attachmentに格納します。これに、add_header()を使ってヘッダー情報を追加し、mail_code.txtというファイルにします。msg.attach(attachment)でメールにファイルを添付します。サーバーの接続処理は先ほどと一緒です。これを実行しすると、次のようにメールが相手先に送信されます。添付ファイルも受信しているのがわかります。一応、ファイルをクリックして見ると次のように表示されます。先のコードがテキストファイルに書き込まれているのがわかります。スポンサーリンクSMTPハンドラーを使ってログをメールで送信するSMTPハンドラーを使ってログをメールで送信するという方法を行ってみます。これは本来、ログデータをログ解析ソフトで収集して分析し、まとめてメールで送るというような場合に使いますが、こでは模擬的に直接メールに出力するということをやってみます。ロギングの詳細については以下の記事を参照してください。レベルと出力Pythonを使ってプログラムの実行中に起こった出来事を記録するロギングを扱います。CRITICAL、ERROR、WARNING、NFO、DEBUGのロギングレベルの変更や出力フォーマットの方法、ファイルへの出力について見ていきます。code-graffiti.com2019.02.08これまでのコードのホスト、ポート、メール情報以外は全て次のように書き換えます。Lの時にメールを送信する処理をやってみます。timeout=20))logger.info('info')logger.critical('critical')ログを取得するのでloggingとhandlersをインポートします。ホスト情報などはそのままです。logging.getLogger(‘Gmail’)として名前をとりあえずここではGmailとしてloggerを作ります。これにsetLevel(logging.CRITICAL)としてロギングレベルをCRITICALに設定します。logger.addHandler(logging.handlers.SMTPHandler())を使って処理を実行していきます。これにホスト情報などの変数を使って、各種引数を渡しています。secureはここではNoneを入れました。timeoutは少し長めに20秒を設定しました。ロギングの出力を、infoとcriticalに設定します。Pythonのロギングは、デフォルトではINFOは出力されないことになっています。ロギングレベルをCRITICALに先ほど設定したので、このコードを実行すると、メールが送信されることになります。確認すると次のように受信されます。受信したメールにはcriticalと出力されているのがわかります。スポンサーリンク最後にここではGoogleのGmailを使ったメール送信のコードを扱いました。他の電子メールも設定を変更などするなどすれば、同様の処理を行えるはずです。ロギングについてもこの期に確認しておくのもいいでしょう。念のためGoogleアカウントのセキュリティも戻しておきましょう。【Python】OpenCVを使ったimageファイルの画像処理の基礎Pythonで画像や動画を処理する際に、ライブラリのOpenCVが利用できます。OpenCVは画像や動画の処理に特化した外部ライブラリです。画像認証の機械学習などにも利用することになります。ここでは画像処理の基礎的な操作を行ってみます。Laplacian()OpenCVを使ったPythonでの画像処理について、画像の勾配を扱います。エッジのような個所のオブジェクトの検出や認識、輪郭追跡の前処理などに利用します。Sobel()、Laplacian()とその他の処理との組み合わせ扱います。【Python】datetimeモジュールで日時の計算Python標準ライブラリーのdatetimeモジュールを使って時間関係の操作を行います。time、timedeltaがあります。これとは別にエポックタイムのtimeもあります。f-stringsPythonでprint()を使って文字列を出力するときの色々なフォーマットを見ていきます。Python2系から引き継がれている%sなどや、波括弧{}と.format()メソッド、Python3.6から使えるf-stringsを扱います。Detection)について扱います。エッジ検出とは画像から端の枠線を取り出す手法で、その代表的な手法であるCannyエッジ検出について見ていきます。【Anaconda】condaコマンドで仮想環境を構築する方法Anacondaのcondaコマンドで仮想環境を構築する方法を扱います。バージョンによってはライブラリが対応していないことがあり、バージョンを落として作業する必要がある場合に、この仮想環境を構築しての利用が考えられます。notebookの基本的な使い方。notebookの基本的な使い方。f-stringsスポンサーリンクタイトルとURLをコピーしました。