前回は、UnityのEditorを拡張する方法についてご紹介しました。
今回は、Pepperを用いて、以前ご紹介した、以下の記事の内容を組み合わせてみます。
「[Pepper] Pepperアプリケーション開発 ~メールを送ってみよう!~」
「[Pepper] Pepperアプリケーション開発 ~画像をダウンロードしてみよう~」
■今回実現するアプリケーション
1)検索する単語をPepperに伝えます
2)Yahooの検索エンジンを使って、1)の単語で画像検索を試みます
3)ヒットした画像を3枚、Pepperの端末内に保存します
4)その保存した3枚の画像を、メールに添付して自分宛に送信します
■プログラム
画像ファイルのダウンロードから保存までの部分と、
その後メールを送るという事で、それぞれのプロジェクトを組み合わせ、以下の様な構成としました。

図1 今回作成したプロジェクト
まず、画像ファイルをダウンロードするプログラムですが、以下のように、今回は画像を3つ保存するように作り替えています。
import sys, urllib
import os.path
class MyClass(GeneratedClass):
…中略…
def onInput_inputVoice(self, inputData):
#画像をダウンロード
inputURLData = “http://image.search.yahoo.co.jp/search?ei=UTF-8&fr=top_ga1_sa&p=” + inputData
receiveData = str(urllib.urlopen(inputURLData).read())
receiveDataSplit1 = receiveData.split(“= 0 and sPort <= 65535 )
except:
bValidPort = False
if( not bValidPort ):
raise Exception( str(sPort) + " is not a valid port number to use to send e-mail. It must be an integer between 0 and 65535. Please check that the port parameter of the box is correct." )
for address in aTo:
try:
mail(
sEmailUser,
address,
sSubject,
sText,
sAttachedFilePath,
sPwd,
sSmtp,
sPort)
except smtplib.SMTPAuthenticationError as e:
raise(Exception("Authentication error, server answered : [%s] %s" % (e.smtp_code, e.smtp_error)))
self.onSent() # activate output of the box
[/python]
画像保存が終わった後、onInput_inputFileName が実行されます。
引数として、添付ファイルの保存場所が渡されるため、それを mail 関数に渡します。
mail 関数では、添付ファイルの保存場所をカンマで分割し、1つ1つmsgに設定して行きます。
※宛先等、他のデータの設定については、この部品作成時のまま、変更していません
そのmsgを利用して、mailServer.sendmail でメールを送信します。
メール送信には、SMTP+STARTTLSの方法を利用しています。
以下、メールを送信する際の流れを簡単ではございますが、説明いたします。
1)SMTP接続する
mailServer = smtplib.SMTP(smtp, port)
2)接続先に対して、これから拡張機能を使うと知らせる
mailServer.ehlo()
3)以降の通信をTLS暗号化することを伝え、セキュアチャネルを開く(拡張機能)
mailServer.starttls()
4)セキュアチャネルに対して、最初にehloコマンドを送信する
mailServer.ehlo()
5)ログイン
mailServer.login(email_user, email_pwd)
6)メールを送る
mailServer.sendmail(email_user, to, msg.as_string())
■実行
プログラムを実行して、Pepperに「ラーメン」と伝えます。
すると、私のメールアドレスに対して、ラーメンの画像が3つ送信されました。

図2 プログラムを実行

図3 送信されたメールの内容
■まとめ
以上で、Pepperで画像をダウンロード後に、メールに添付する方法は終了です。
最後までご覧頂き、ありがとうございました。
弊社では全国各地の請負い(ご自宅)で作業協力頂ける、フリーランスエンジニアの方を常時探しております。
ご興味ある方は、お気軽にお問い合わせ下さい。
こんばんは。pepperが撮った写真をメール送信する方法はどうやったらいいのでしょう。教えて頂きたいです。よろしくお願いいたします。
pepperで画像を撮影してPCに送信したいのですが、うまくいきません。二つのメールアドレスはPCのアドレスではないといけないのですか?また、二つのPCとも、pepperが繋がっているWifiに繋げる必要はあるのでしょうか。教えて頂ければ幸いです。
pepperにて、画像添付付きメールを送信できないというお問い合わせを複数頂いておりますが、以下の点ご確認お願いします。
1)メール自体は送信できますか?
pepper には、「Send E-mail」という部品がありますので、こちらを利用することでメールは送信できます。
もし、画像添付の有無にかかわらず、メールが送信できないということでしたら、
・設定値が正しいかどうか、pepper のリファレンスをご確認ください
・pepper から、メールサーバまで通信が到達できる環境下にあるか、ご確認ください
2)メールは送信できるが、画像添付ができない
メールを送信でき、かつ画像添付ができないということでしたら、画像の保存先が正しいかどうか、ご確認ください
以下、補足です。
> 二つのメールアドレスはPCのアドレスではないといけないのですか?
PCで受信しているアドレスでも、携帯で受信しているアドレスでも問題はないです。
そのメールサーバに、pepper から送信できれば良いです。
>二つのPCとも、pepperが繋がっているWifiに繋げる必要はあるのでしょうか。
必要ありません。pepper、PCはそれぞれで、メールサーバと通信を行いますので、
・pepper とメールサーバが通信可能な環境下にあること
・メールサーバとPCが通信可能な環境下にあること
この条件を満たしていれば、pepperとPCが同じ環境下にある必要はないです。