.
iphone でメールアプリが、
(iosのバージョンが古いためもあるけど)
「不安定」「懐疑」「不明通信で処理が遅い」
など問題が多いため、いまさらですが、即送信用に
Pythonista でメール送信をテスト
(1) メールの入力
xxx.txt 保存ができるテキストエディタアプリ
(Textforce や Textastic など)で、以下を入力
1行目:送信先メールアドレス
2行目:件名
3行目以降:本文
(2) Open in -> Pythonista のスクリプト呼び出し
(3) コンソール上にて実行
[ 1. キッチン ]
Textforce (テキストエディタアプリ)
Pythonista v2.1.1
iphone SE / ios 9.3.5
iphone 5s / ios 12.1.4
[ 2. 仕込 ]
text-open-mail.py
# coding: utf-8
import os
import appex
import shutil
import console
import datetime
import smtplib
from email.MIMEText import MIMEText
from email.Utils import formatdate
from email.Header import Header
now1 = datetime.datetime.now()
now2 = '{0:%Y/%m/%d %H:%M:%S}'.format(now1)
cpedf1 = ''
cpedf3 = ''
cpedf4 = ''
cpedf5 = ''
# テキストアプリ -> open in -> pythonista /Shared/
# に テキストファイルをコピー後、ファイル名を取得(cpedf1)
def main():
FILE = appex.get_file_paths()
PYPATH = os.path.abspath(os.path.dirname(__file__))
while os.path.basename(PYPATH) != 'Documents':
PYPATH = os.path.abspath(os.path.join(PYPATH, os.pardir))
PYPATH = os.path.join(PYPATH, 'Shared')
if not os.path.isdir(PYPATH):
os.mkdir(PYPATH)
for i in FILE:
if os.path.isfile(i):
NAME = os.path.basename(i)
shutil.copyfile(i, os.path.join(PYPATH, NAME))
global cpedf1
cpedf1 = NAME
if os.path.isdir(i):
shutil.copytree(i, PYPATH)
if __name__ == '__main__':
if appex.is_running_extension():
main()
else:
console.alert('Error Occured', 'Please launch from extension', 'ok', hide_cancel_button=True)
iu1 = 0
iu2 = ''
iu4 = 0
iu5 = ''
iu6 = 0
iu7 = ''
iu8 = ''
iu9 = ''
# テキストファイルを読み込み
# 1行目 TOアドレス、2行目 件名
# 1行目 @ が無い、または 空の場合はアドレス入力エラー
# 1行目 措定簡易入力(例 taro) は フルアドレスに変換
# (iu2: TO, iu7: 件名, iu5: 本文)
cpedf3 = './Shared/'
with open(cpedf3 + cpedf1) as linef:
for linm in linef:
iu8 = iu8 + linm
iu3 = linm.strip()
if iu1 == 0:
if iu3 != '':
iu6 = linm.find("@")
if iu6 != -1:
iu4 = 1
iu9 = 'OK: アドレス'
iu2 = iu3
else:
if iu3 == 'taro':
iu4 = 1
iu2 = 'taro2019@mailaddress.com'
else:
iu4 = 2
iu9 = 'NG: アドレス @ 無し'
iu2 = iu3
else:
iu4 = 3
iu9 = 'NG: アドレス 空'
iu2 = iu3
elif iu1 == 1:
iu7 = iu3
else:
iu5 = iu5 + linm
iu1 = iu1 + 1
linef.close()
# コンソール上確認用(iu2: TO, iu7: 件名, iu5: 本文)
print ''
print iu9
print 'iu2: ' + iu2
print iu4
print 'iu7: ' + iu7
print ''
print 'iu5: ' + '\n' + iu5
print '本文ここまで'
print ''
# if: 通常送信、else: アラート送信
if iu4 == 1:
TO = iu2
cpedf4 = iu7
cpedf5 = iu5 + '\n'
BCC = 'backup@mailaddress.com'
else:
TO = 'alert@mailaddress.com'
cpedf4 = 'ALERT: アドレス入力エラー - ' + now2
cpedf5 = iu9 + '\n\n' + iu8 + '\n'
BCC = ''
FROM = 'from@mailaddress.com'
CC = ['', '']
CC_ADD = ', '.join(CC)
ENCOD = 'utf-8'
message = MIMEText(cpedf5.encode(ENCOD),'plain',ENCOD,)
message['Subject'] = str(Header(cpedf4, ENCOD))
message['From'] = FROM
message['To'] = TO
message['Cc'] = CC_ADD
message['Date'] = formatdate()
# SMTP (gmail の場合)
s = smtplib.SMTP('smtp.gmail.com', 587)
s.ehlo()
s.starttls()
s.ehlo()
# 送信元のアドレス、パスワード
s.login('from@mailaddress.com', 'password')
s.sendmail(FROM, [TO, CC_ADD, BCC], message.as_string())
s.close()
print '処理完了'
print ''
[ 3. デザート ]
※ 簡易的ざっくり作成なので
プロセスエラーや細かなエラーは拾ってません
※ Pythonista v3 未確認(多分いけると思います)
※ gmail の場合は
「安全性の低いアプリの許可」-> 有効 が必要です
.