牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

題名のみの自分宛メールをGmailとPythonで速攻簡単に送れるようにしてみた

追加:そしてQuicksilverから
コード修正と追加:おまけ2(別のやり方)

Gmailを使ってGTD的なことをやってるから、速攻簡単に題名だけのメールを自分宛に送れないかなーと思ってやってみた。

インスコ

macportsで『py25-socket-ssl』 をインストールしておく。
(入れないと『'module' object has no attribute 'ssl'』エラーになる)

sudo port install py25-socket-ssl


2010-09-10:追記
MacOSX10.6 + pytyon2.6 にしたら py26-socket-ssl が無いので、試しにpy26-opensslをインストールしたら動いた。

sudo port install py26-openssl

コード

参考サイトからコピペとかしつつ多少変更。


oneLineGmail.py

#!/usr/bin/env python
# *-# -*- coding: utf-8 -*-

import sys
import smtplib
from email.MIMEText import MIMEText
from email.Utils import formatdate

login_name = "hoge@gmail.com"
login_pass = "your_password"
from_address = "hoge@gmail.com"
to_address = "hoge@gmail.com"

def send_one_line_gmail(subject):
    body = "-"
    msg = MIMEText(body)
    msg['Subject'] = subject
    msg['From'] = from_address
    msg['To'] = to_address
    msg['Date'] = formatdate()

    s = smtplib.SMTP('smtp.gmail.com', 587)
    s.ehlo()
    s.starttls()
    s.ehlo()
    s.login(login_name, login_pass)
    s.sendmail(from_address, [to_address], msg.as_string())
    s.quit()


if __name__ == '__main__':
    arg = sys.argv
    if 2 <= len(arg):
        subject = " ".join(sys.argv[1:])
        #print subject #test
        send_one_line_gmail(subject)
        print "DONE!"
    else:
        print "non subject!"

使い方

1.login_name, login_pass, from_address, to_address を自分のものに書き換える。


2.oneLineGmail.pyとか名前にして、シェルから

python oneLineGmail.py ほげほげ

とかやると題名が「ほげほげ」のメールが届くはず。
(※OSX10.4のターミルで実行すると、行頭が漢字のとき文字化けする?(´・ω・`))

おまけ

どこからでも実行できるように

『/opt/local/bin』に置いてChange modeしとくと、『oneLineGmail.py ほげほげ』で送れるから便利かも。

sudo ln -s ~/oneLineGmail.py /opt/local/bin/oneLineGmail.py
そしてQuicksilverから

設定のPlub-ins『Terminal Module』を使えるようにしておく

  1. Quicksilverから1stPaneでピリオド(.)押して『oneLineGmail.py ふがふが』とかコマンドいれる。
  2. 2ndPaneで『Run a Text command in Terminal』を選ぶ

するとターミナル開いて実行されるはず。
(参考:わかばマークのMacの備忘録 : Quicksilver Plug-in/ Terminal Module

おまけ2(別のやり方)

もっと簡単設定で「todo ほげほげりん」とかで送ってみる


設定は.bashrcとかに

alias todo="~/oneLineGmail.py"

とか書くだけ。


あとはターミナルから

todo ほげほげりん

で実行すると、題名が「ほげほげりん」のメールが届くはず