LoginSignup
9
16

More than 5 years have passed since last update.

python gmailからemailを送信

Posted at

参考元

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)の呼び方を、ニュートラルネットワークと間違えていた。何を中立ちしてくれるんやろな?

9
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
16