PythonはSMTPサービスを呼び出して自動的にEmailを送信する実現ステップを実行します。


背景が必要です
例えば、毎日の時間をpythonでサービスが正常に運行されているかどうかをテストするようなタイミングタスクを設計したいと思いますが、システムのバックグラウンドに毎日ログインしてサービス状態を確認するのは嫌です。ここでは、pythonのsmatpモジュールを使ってタスクの結果を放送し、パブリックメールを申請します。pythonがタイミングのテストタスクを実行した後、smatpのインターフェースを呼び出して、テスト結果を受信が必要な人のメールボックスに放送します。これにより、私たちはモバイル端末でシステムの状態をリアルタイムで監視することができます。
QQメールボックスのSMTPサービス配置フロー
1.ブラウザ登録してQQメールボックスに入る
2.設定に入る-アカウント

3.POP 3-MTPサービスの位置を見つけて、オープンをクリックしてください。

4.いくつかの検証プログラムを行う

5.オープンに成功すると、システムは一連の長さが16のランダムパスワードを与え、パスワードの代わりに第三者登録を行う。
6.SMtpサーバのアドレスとポート番号を設定する
ライセンスコードでSMTPを登録してメールを送ります。
ここでは成果コードを直接展示します。その中にいくつかのプライバシー情報を処理しました。

# smtp_test.py
#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
import smtplib
from email.mime.text import MIMEText
from email.header import Header
 
#     SMTP   
mail_host="smtp.qq.com" #     
mail_user="[email protected]"  #   
mail_pass="passpasspasspass"  #   
 
 
sender = '[email protected]'
receivers = ['[email protected]'] #     ,      QQ        
 
message = MIMEText('Python SMTP       ...', 'plain', 'utf-8')
message['From'] = Header("SMTP EMAIL", 'utf-8')
message['To'] = Header("TEST MESSAGE", 'utf-8')
 
subject = 'Python SMTP     '
message['Subject'] = Header(subject, 'utf-8')
 
 
try:
  smtpObj = smtplib.SMTP() 
  smtpObj.connect(mail_host, 25)  # 25   SMTP    
  smtpObj.login(mail_user,mail_pass) 
  smtpObj.sendmail(sender, receivers, message.as_string())
  print ("      ")
except smtplib.SMTPException:
  import traceback
  traceback.print_exc()
  print ("      ")
ここでのサーバ構成のSMTPのサーバsmatp.qq.comは、対応ポート番号が25に設定されており、ここでのパスワードとアカウントは、読者自身のライセンスパスワードとアカウントに置き換えられています。このプログラムの正常な結果は以下の通りです。

[dechin@dechin-manjaro smtp]$ python3 smtp_test.py 
      
また、ここではtrackbackを使ってエラーログの収集をしていますので、エラープログラムがあっても実行を続けられますが、エラーログを放送します。
最後にメールボックスの中のメールを調べます。(ゴミ箱に入れられる場合があります。)

crontabを使ってLinuxシステムのタイミングタスクを追加します。
crontabはLinuxシステムの下で持っているタイミングタスクの配置サービスで、基本的な使い方はCrontab-lを通じてタイミングタスクを確認したり、crontab-eを通じてタイミングタスクを編集したりします。しかし、自分のエディタはnanoなので、非常に使いにくいです。だから、エディタをvimに設定して使用してもいいです。
[dechin@dechin-manjaro smatp.$export EDIOR=「/usr/bin/vim」crontab-e
もちろん、現在のユーザー登録画面では、一時的に配置するだけで、直接にcrontab-eを使って配置されます。長期的に有効になると、設定ファイルを変更する必要があります。ここでは紹介しません。crontabのタスク構成は、以下の説明を参照することができます。

一つのタイミングタスク+SMTPブロードキャストの例
ここでまず簡単な乱数印刷のタスクを作成します。このように、私たちはcrontabにプログラムを実行するタイミングタスクを追加すれば、毎回異なる乱数を生成し、指定されたファイルに出力し、他のsmapのタイミングタスクによって読み取りと放送を行うことができます。以下は乱数を印刷するジョブの内容です。

[dechin@dechin-manjaro smtp]$ cat random_job.py 
import random
print (random.random())
前に使ったsmatpのタスクを少し修正して、乱数をメールのタイトルに読み込みます。

# smtp_test.py
#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
import smtplib
from email.mime.text import MIMEText
from email.header import Header
 
#     SMTP   
mail_host="smtp.qq.com" #     
mail_user="[email protected]"  #   
mail_pass="passpasspasspass"  #   
 
 
sender = '[email protected]'
receivers = ['[email protected]'] #     ,      QQ        
 
message = MIMEText('Python SMTP       ...', 'plain', 'utf-8')
message['From'] = Header("SMTP EMAIL", 'utf-8')
message['To'] = Header("TEST MESSAGE", 'utf-8')

random_number = 1
with open('/home/dechin/projects/2021-python/smtp/random_number.txt', 'r') as file:
  random_number = float(file.readlines()[0])

subject = 'The random number generated is: ' + str(random_number)
message['Subject'] = Header(subject, 'utf-8')
 
 
try:
  smtpObj = smtplib.SMTP() 
  smtpObj.connect(mail_host, 25)  # 25   SMTP    
  smtpObj.login(mail_user,mail_pass) 
  smtpObj.sendmail(sender, receivers, message.as_string())
  print ("      ")
except smtplib.SMTPException:
  import traceback
  traceback.print_exc()
  print ("      ")
最後に、crontabのタイミングタスクを再構成すると、次のようになります。

[dechin@dechin-manjaro smtp]$ crontab -l
* * * * * python3 /home/dechin/projects/2021-python/smtp/random_job.py > /home/dechin/projects/2021-python/smtp/random_number.txt
* * * * * python3 /home/dechin/projects/2021-python/smtp/smtp_test.py
上記は、一刻も早くタイミングタスクの効果を示すために、毎分1回のタスクを実行するように設定されていますが、実際のシーンでは、このような高周波のタイミングタスクテストは必要ありません。
最後にメールボックスを見て、一連のタイミングタスクの内容をフィードバックしました。

本論文の最初のリンクは:https://www.cnblogs.com/dechinphy/p/smtp.html
著者ID:Dechina Phy
以上はPythonがSMTPサービスを呼び出して自動的にEmailの実現ステップの詳細を送りました。PythonがSMTPサービスを呼び出して自動的にEmailの資料を送ります。他の関連記事に注目してください。