#ラズパイ起動後にIPをメールで送信
最初はGmailでやろうと思ったんですけど、セキュリティ的に弾かれたので別の方法にしました。
また、ここではメールの送信サーバをインストールしてやってますが、めんどくさかったので、送信専用のウェブページ作って、そこをpythonで自動的に送信させよう。(どっちがめんどくさいかは考えない)
http://raspi.seesaa.net/article/421958492.html
実際は下記になります。
#流れ
- 送信用メールフォームのあるwebページを作る
- そのページからメールを送るようなpythonプログラムを作る
- ラズパイからそのプログラムを自動で実行するよう設定する
#メール送信するページ作成
どこかで作ったやつをそのまま持ってきました。
index.html
<html>
<body>
<form id="campaign" name="campaign" action="confirm.php" type="post" method="post">
<p><input type="text" name="ip" id="ip"/></p>
<input type="submit" value="SUBMIT" />
</form>
</body>
</html>
confirm.php
<?php
mb_language("Japanese");
mb_internal_encoding("UTF-8");
$to = 'メールアドレス';
$subject = 'Raspberrypi IP address';
$ip=htmlspecialchars($_POST["ip"]);
$message = $ip;
$headers = 'From:'. $email . "\r\n";
mb_send_mail($to, $subject, $message, $headers);
?>
ここのURLをhttp://autosendmail.com とします
#ラズパイの自動化設定
/home/pi/lxsession/LXDE-pi/autostart
上記ファイルの一番下にこれを追加(ラズパイのOSによって異なると思うので、適宜ググってください。)
@python /パス/autosend.py
ちなみにautosend.pyの中身。
autosend.py
import netifaces
import mechanize
myip = []
def detectip():
for iface_name in netifaces.interfaces():
iface_data = netifaces.ifaddresses(iface_name)
ip_adressList = iface_data.get(netifaces.AF_INET)
if ip_adressList != None:
ip_address = ip_adressList[0]['addr']
myip.append(ip_address)
return myip
def sendmail():
br = mechanize.Browser()
br.open("http://autosendmail.com")
br.select_form(nr=0)
br["ip"] = str(detectip())
br.submit()
if __name__ == "__main__":
sendmail()
#結果
少し余計なものも来てますが、十分ですのでこのままいく!
以上です。