質問編集履歴

2

ファイルにアクセス権を付与の追加

2020/01/14 00:26

投稿

kazushige
kazushige

スコア20

test CHANGED
File without changes
test CHANGED
@@ -22,6 +22,14 @@
22
22
 
23
23
  もとに作成したものです。python senser.py を実行してgmailが送信されていますので問題はないと思っています。
24
24
 
25
+ 追記:アクセス権付与が必要なことを知り、chmodでファイルにアクセス権を不とするため、下記の処理を
26
+
27
+ し、再起動したのですが、ダメでした。
28
+
29
+
30
+
31
+  $ sudo chmod +x /home/pi/senser.py
32
+
25
33
 
26
34
 
27
35
  # -*- coding: utf-8 -*-

1

問題の発生した環境 、生している問題・エラーメッセージの説明の追加

2020/01/14 00:26

投稿

kazushige
kazushige

スコア20

test CHANGED
File without changes
test CHANGED
@@ -1,10 +1,12 @@
1
+ RasperrPi3B+で、OSはraspbian GNU/Linux 9\n\1 バージョン9.11で、
2
+
1
3
  rasuberrypi3+bにカメラを装着し、motionで、外部のpcから、画像を見られるようにし、さらに、動体を検出し、
2
4
 
3
5
  四角枠で示すようにしたのですが、さらに、動体を検出した時にgmailを送信出来るようにするため、
4
6
 
5
7
 
6
8
 
7
- moion.confの中のon_movie_startの後ろに次のようにgmailを送付するスクリプト指定したのですが、送信がされません。どこか、指定が間違っているのかご指導をお願い致します。
9
+ moion.confの中のon_movie_startの後ろに次のようにgmailを送付するスクリプト指定したのですが、送信がされません。エラーメッセージは、ありません。実行されてそのまま終了しています。どこか、指定が間違っているのかご指導をお願い致します。
8
10
 
9
11
 
10
12
 
@@ -15,3 +17,189 @@
15
17
 
16
18
 
17
19
  on_movie_startを使うときは、連動して他に、指定することがあるのでしょうか。
20
+
21
+ 参考ですが、senser.pyは、"http://make.bcde.jp/python/gmailで簡単にメール送信/のプログラム"を、
22
+
23
+ もとに作成したものです。python senser.py を実行してgmailが送信されていますので問題はないと思っています。
24
+
25
+
26
+
27
+ # -*- coding: utf-8 -*-
28
+
29
+ """
30
+
31
+ Gmail
32
+
33
+ Gmailで簡単にメール送信
34
+
35
+ """
36
+
37
+
38
+
39
+ import os.path
40
+
41
+ import datetime
42
+
43
+ import smtplib
44
+
45
+ from email import Encoders
46
+
47
+ from email.Utils import formatdate
48
+
49
+ from email.MIMEBase import MIMEBase
50
+
51
+ from email.MIMEMultipart import MIMEMultipart
52
+
53
+ from email.MIMEText import MIMEText
54
+
55
+
56
+
57
+ #Gmailアカウント
58
+
59
+ ADDRESS ="**********"
60
+
61
+
62
+
63
+ #SMTPサーバの設定(Gmail用)
64
+
65
+ SMTP = "smtp.gmail.com"
66
+
67
+ PORT = 587
68
+
69
+
70
+
71
+ def create_message(from_addr, to_addr, subject, body, mime=None, attach_file=None):
72
+
73
+ """
74
+
75
+ メッセージを作成する
76
+
77
+ @:param from_addr 差出人
78
+
79
+ @:param to_addr 宛先
80
+
81
+ @:param subject 件名
82
+
83
+ @:param body 本文
84
+
85
+ @:param mime MIME
86
+
87
+ @:param attach_file 添付ファイル
88
+
89
+ @:return メッセージ
90
+
91
+ """
92
+
93
+ msg = MIMEMultipart()
94
+
95
+ msg["From"] = from_addr
96
+
97
+ msg["To"] = to_addr
98
+
99
+ msg["Date"] = formatdate()
100
+
101
+ msg["Subject"] = subject
102
+
103
+ body = MIMEText(body)
104
+
105
+ msg.attach(body)
106
+
107
+
108
+
109
+ # 添付ファイル
110
+
111
+ if mime != None and attach_file != None:
112
+
113
+ attachment = MIMEBase(mime['type'],mime['subtype'])
114
+
115
+ file = open(attach_file['path'])
116
+
117
+ attachment.set_payload(file.read())
118
+
119
+ file.close()
120
+
121
+ Encoders.encode_base64(attachment)
122
+
123
+ msg.attach(attachment)
124
+
125
+ attachment.add_header("Content-Disposition","attachment", filename=attach_file['name'])
126
+
127
+
128
+
129
+ return msg
130
+
131
+
132
+
133
+ def send(from_addr, to_addrs, msg):
134
+
135
+ """
136
+
137
+ メールを送信する
138
+
139
+ @:param from_addr 差出人
140
+
141
+ @:param to_addr 宛先(list)
142
+
143
+ @:param msg メッセージ
144
+
145
+ """
146
+
147
+ smtpobj = smtplib.SMTP(SMTP, PORT)
148
+
149
+ smtpobj.ehlo()
150
+
151
+ smtpobj.starttls()
152
+
153
+ smtpobj.ehlo()
154
+
155
+ smtpobj.login( ADDRESS, "*************")
156
+
157
+ smtpobj.sendmail(from_addr, to_addrs, msg.as_string())
158
+
159
+ smtpobj.close()
160
+
161
+
162
+
163
+
164
+
165
+ if __name__ == '__main__':
166
+
167
+
168
+
169
+ #宛先アドレス
170
+
171
+ to_addr = "***********@gmail.com"
172
+
173
+
174
+
175
+ #件名と本文
176
+
177
+ subject = "動体検知"
178
+
179
+ body = "動くものを発見しました。"
180
+
181
+
182
+
183
+ #添付ファイル設定(text.txtファイルを添付)
184
+
185
+ mime={'type':'text', 'subtype':'comma-separated-values'}
186
+
187
+ attach_file={'name':'test.txt', 'path':'./text.txt'}
188
+
189
+
190
+
191
+ #メッセージの作成(添付ファイルあり)
192
+
193
+ msg = create_message(ADDRESS, to_addr, subject, body, mime, attach_file)
194
+
195
+
196
+
197
+ #メッセージ作成(添付ファイルなし)
198
+
199
+ #msg = create_message(ADDRESS, to_addr, subject, body)
200
+
201
+
202
+
203
+ #送信
204
+
205
+ send(ADDRESS, [to_addr], msg)