質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.51%

  • Python

    11751questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • Python 3.x

    9840questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

  • Raspberry Pi

    1065questions

    Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

  • Gmail

    133questions

    GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Raspberry pi で写真撮影し gmail添付送信

受付中

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 265

Ruteshi

score 18

前提・実現したいこと

raspberry pi でカメラ自動撮影&自動送信アプリを作る
https://kazuhitogo.hateblo.jp/entry/2018/04/01/132423

上記のサイトさんの事をまるっきり同じことをしたいのですが
エラーが出てしまい質問させていただきました

発生している問題・エラーメッセージ

new mail(s)
Traceback (most recent call last):
  File "app.py", line 80, in <module>
    cues = recieveGmail(server,username,password)
  File "app.py", line 64, in recieveGmail
    cue = cue.group(0).replace("<","").replace(">","")
AttributeError: 'NoneType' object has no attribute 'group'

該当のソースコード

# -*- coding: utf-8 -*-

import os
import sys
import gmail
from time import sleep

import RPi.GPIO as GPIO
from time import sleep
import subprocess
import datetime

import imaplib, re, email, six

# カメラ撮影関数
def shotPicture():
    d = datetime.datetime.today()
    filename = "{0}{1:02d}{2:02d}{3:02d}{4:02d}{5:02d}.jpg".format(d.year, d.month, d.day, d.hour, d.minute, d.second)
    args = ['raspistill', '-o', filename, '-t', '1']
    subprocess.Popen(args)
    return filename

# メール送信
def sendGmail(u,p,t,s,b,a):
    #u=user,p=pass,t=to_addr,s=subject,b=body,a=attachment
    client = gmail.GMail(u, p)
    if a == '':
        message = gmail.Message(s,to=t,text=b)
    else:
        message = gmail.Message(s,to=t,text=b,attachments=[a])
    client.send(message)
    client.close()

# メール受信
def recieveGmail(s,u,p):
    # s=server,u=username,p=password
    client = imaplib.IMAP4_SSL(s)
    client.login(u,p)
    # 受信箱指定
    client.select('INBOX')
    # 未読メールをメモリに格納(この時点で既読になる)
    typ, [data] = client.search(None, "(UNSEEN)")

    # ない場合は空のcuesリストを返す
    # 未読メールがあったか確認
    cues = []
    if typ == "OK":
        if data != b'':
            print("new mail(s)")
            # メールを一件ずつ処理
            for num in data.split():
                result, d = client.fetch(num, "(RFC822)")
                raw_email = d[0][1]
                #文字コード取得用
                msg = email.message_from_string(raw_email.decode('utf-8'))
                fromObj = email.header.decode_header(msg.get('From'))
                for f in fromObj:
                    cue = ""
                    if isinstance(f[0],bytes):
                        cue = f[0].decode('utf-8')
                    else:
                        cue = str(f[0])
                    cue = re.search(r'<(.+)>',cue)
                    cue = cue.group(0).replace("<","").replace(">","")
                    cues.append(cue)
    client.close()
    client.logout()
    return cues


# gmail定義
username = 'アカウント名@gmail.com'
password = 'パスワード'
server = 'imap.gmail.com'

# 返信するホワイトリスト定義
whitelist = ['返信する','パスワード','のリスト','hogehoge@gmail.com']

while True:
    cues = recieveGmail(server,username,password)
    cues = list(set(cues))
    if cues == []:
        sleep(2)
    else:
        print(cues)
        for addr in cues:
            if addr in whitelist:
                sendGmail(username,password,addr,'かしこまり','ちょっと待ってね','')
                pictpass = shotPicture()
                sleep(3)
                sendGmail(username,password,addr,'はいどうぞ','いかが?',pictpass)

試したこと

AttributeError: 'NoneType' object has no attribute 'group'

の意味を調べたりしたのですが…

補足情報(FW/ツールのバージョンなど)

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • scsi

    2019/01/08 19:48

    共感したので。。。自分も先日産まれた子供の写真目的で、 Rasberry Pi3 に motion と Nextcloud クライアントをインストールし、動いたら写真を自動撮影し、クラウドにアップする仕組みを作りました。頑張ってください。

    キャンセル

  • Ruteshi

    2019/01/09 14:57

    メッセージありがとうございます。
    そういって頂けて嬉しいです。
    頑張ります

    キャンセル

回答 2

+1

cue = cue.group(0).replace("<","").replace(">","")
AttributeError: 'NoneType' object has no attribute 'group'

cueはナニモノなんでしょう。
groupというアトリビュートないといってますぜ

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/01/08 17:33

    y_waiwaiさん
    回答ありがとうございます。

    ちょっと調べてみます
    自分では気づかない事を教えてい頂けるのですごく助かります

    キャンセル

0

エラーメッセージよりcue = re.search(r'<(.+)>',cue)の結果がNoneになっているようです。
f[0]に意図した文字列が入っているか確認しましょう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/01/08 18:32

    can110さん
    ありがとうございます。
    早速調べてみます

    キャンセル

同じタグがついた質問を見る

  • Python

    11751questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • Python 3.x

    9840questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

  • Raspberry Pi

    1065questions

    Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

  • Gmail

    133questions

    GmailとはGoogleによって提供されているウェブメールのサービスのことです。