Posted at

python gmailからemailを送信

More than 1 year has passed since last update.


参考元

https://www.udemy.com/the-python-mega-course/learn/v4/overview

gmailを送るためのSMTPの設定

https://www.lifewire.com/what-are-the-gmail-smtp-settings-1170854

smtpの公式ドキュメント:

https://docs.python.jp/3/library/smtplib.html

emailモジュールの公式ドキュメント:

https://docs.python.org/ja/3.5/library/email-examples.html


使うライブラリー

from email.mime.text import MIMEText

import smtplib


gmailから送るためのコード

いくつか注意点:


  • この.pyのファイルの名前を"email.py"にしないこと。pythonにはemailモジュールが既にあるため。特に仮想環境上で別の.pyファイルと紐付ける場合は大抵バグる。

  • 事前に自分のgoogleアカウント→アカウントにアクセスできるアプリ→安全性の低いアプリの許可:無効→有効へ。あいにくgoogleには安全度が低いと見なされている。


#don't be this file name "email.py"
#becasuse 'email module' is alreday ocuppyed
#it mean don't use module name already exist

from email.mime.text import MIMEText
import smtplib

def send_email(email, chinpo, average, count):
#送り元
from_email="自分のgmailアドレス@gmail.com"
from_password="gmailアドレスに対応したpassword"

#送り先
to_email=email

#メールの内容
subject="Chinpo data"
message="Hey there, your chinpo size is <strong>%s</strong>.<br>Average size of <strong>%s</strong> people is <strong>%s</strong>.<br>Thanks!" % (chinpo, count, average)

msg=MIMEText(message, "html")
msg["Subject"]=subject
msg["To"]=to_email
msg["From"]=from_email

gmail=smtplib.SMTP("smtp.gmail.com", 587)
#gmail.ehlo()
gmail.starttls()
gmail.login(from_email, from_password)
gmail.send_message(msg)
#gmail deal with smtp as less scure, 安全性の低いアプリを許可をonへ
#そして迷惑メールに振り分けられていると


  1. 前提として、有効なgmailアカウントが必要。要はgmailのメールアドレスとパスワードが必要。送信元。

  2. もちろん送り先のメールアドレスもいる

  3. メールの本体になるのはMIMEText。ここにメールの文章やその他情報を渡す。msg変数をprintすると(下記※1)辞書みたいなのが出力される。_subtypeって引数にメールの中身のコンテントタイプを登録可能。htmlとか。デフォルトはplainhtmlを指定することで、htmlタグを使えるようになる。変数のmessageに入ってる<strong>はhtmlタグ。文字を太字強調できる。

  4. msg["Subject"]でメールの件名。["To"]で宛先のEメールアドレス。["From"]は送り元のメールアドレスを登録する。


  5. SMTPはメールサーバへ接続してメールを送信する機能を提供してくれる。今回はgmailで送るので、
    gmailのサーバーアドレスsmtp.gmail.com(ホスト名)。SMTP port番号を587を渡す。参考元:https://www.lifewire.com/what-are-the-gmail-smtp-settings-1170854


  6. starttls()メソッド。TLS (Transport Layer Security) モードでSMTP接続する。以降のSMTPコマンドは暗号化される。

  7. gmailにはアカウントのログインが必要。login()メソッドに自分のメールアドレスと、パスワードを渡す。


  8. send_message()メソッドでメールを送信できる。


※1

Content-Type: text/plain; charset="us-ascii"

MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

databaseから値を持ってきて、送るとか。

このクソ便利なscheduleモジュール: https://pypi.org/project/schedule/ を使って提示連絡を自動化するとかできる。



  • scheduleは時間、日付、曜日で時間を指定できる。曜日+時間みたいな組み合わせも可能。

でもEメールの確認すげぇめんどくさいから、一刻も早くこの世からEメールが消滅してくれることを願ってる。メールボックス開くのが憂鬱やねん。


あとがき

最近勘違いしてたこと。ニューラルネットワーク(Neural Network)の呼び方を、ニュートラルネットワークと間違えていた。何を中立ちしてくれるんやろな?