0

Python を使用して、gmail を介した電子メールの送信を自動化し始めたところです。コマンドラインに直接入力するだけでプロセス全体が機能するようになりましたが、プロセスを自動化したいと考えています(つまり、定期的に電子メールを送信します)。SMTPサーバーとの接続を取得する最初の部分が機能しました。

os.system("openssl s_client -starttls smtp -connect smtp.gmail.com:587 -crlf -ign_eof")

次に、その接続内で次のコマンドを入力して実行できるようにします。

os.write("HELO", os.linesep)
os.write("AUTH LOGIN", os.linesep) ... And so on

write コマンドと os.system コマンドを使用してこれを試しましたが、実際にはどちらもこのウィンドウにテキストを挿入していないようです。おそらくLinuxとターミナルのスキルが高い人がこれを手伝ってくれるでしょうか? また、これらのシステム プロセスがすべて実行されている場合は、time.sleep が機能しないようです。どうすればそれを回避できますか?

4

2 に答える 2

1

標準ライブラリの SMTP クライアント実装を使用します: http://docs.python.org/3/library/smtplib

import smtplib
smtp_client = smtplib.SMTP('smtp.gmail.com', 587)
smtp_client.starttls()
smtp_client.login(username, password)

2 要素認証を使用している場合は、使用するアプリケーション固有のパスワードを作成する必要があります。

于 2013-05-06T19:43:50.123 に答える
0

必要なことを行うには、 subprocess モジュールを確認する必要があります。「os.write」だけではいけません。プロセスの標準入出力に「書き込む」必要があります。

command = ['openssl', 's_client', '-starttls smtp', '-connect smtp.gmail.com:587', '-crlf', '-ign_eof']
p = subprocess.Popen(command, stdin=PIPE) # Success!
p.write("HELO", "MYNAME")

于 2013-05-06T19:40:16.840 に答える