自動観察日記

自動で観察したい

余談:Python Gmailモジュールを使ったはてなブログへの記事投稿

前の記事で述べた自動投稿手法がめんどうなので、Gmailを経由した投稿も考えていました。

前の saibaimen.hatenadiary.jp

Gmailを使った投稿方法はこちらを参考にしました。 s4t.hatenablog.com

メールでのはてなブログへの投稿

はてなブログの[設定]→[詳細設定]には、記事を投稿する用のメールアドレスが書いてあります。 f:id:shut9:20180823012634p:plain ここにメールを送ると、はてなブログに記事が投稿されます。 添付ファイル付でメールを送ると、添付ファイルも一緒に記事に載せてくれるようです。

PythonGmailを使ってメールを送る

Gmailモジュールなるものがあるらしいです

$ pip install gmail

#mailpost-hatena.py                                                                                                                                                                                         
import gmail

def mail(head,sentence):
    # user info                                                                                                                                                                                             
    username = '自分のGmailのアドレスを書く@gmail.com'
    password = '自分のGoogleアカウントのパスワードを書く'

    # To                                                                                                                                                                                                    
    sendmail = '設定に書いてある例のアドレス@blog.hatena.ne.jp' # draft

    #Attachments                                                                                                                                                                                            
    fig=['./test.png']

    client = gmail.GMail(username,password)   
    message = gmail.Message(head,text=sentence,to=sendmail, attachments=fig)

    client.send(message)
    client.close()


with open('test.txt','r') as r:

    h = r.readline().replace('\n','')
    s = r.read().replace(h,'')
    r.close()

mail(h,s)

test.txtの1行目が記事のタイトル、2行目以降が本文になります。
しかし、ここでよくわからない問題に当たりました。
上記のプログラムではtest.pngというファイルを添付してメールを送信するのですが、何故か記事が投稿されません。
いろいろ試した結果、次のことがわかりました。

  1. 添付ファイルをなくして

    message = gmail.Message(head,text=sentence,to=sendmail, attachments=fig)

message = gmail.Message(head,text=sentence,to=sendmail)

に変更すれば、正常に記事が投稿される
2. Pythonを使わずに、Gmailから直接添付ファイル付きではてなブログ宛に送ると、画像付きで記事が投稿される
3. Gmail(Python)を使用しても、はてなブログ以外のアドレス(他のGmailアドレスや、docomo)には添付ファイル付きでも正常に送信される

この方法が使えれば記事の自動投稿は楽だったのですが、画像を投稿したかったので断念しました。
エラーも出ないし原因がよくわかりません………