内容:ガイド
序文
SMTP (Simple Mail Transfer Protocol) は、Simple Mail Transfer Protocol とも呼ばれ、信頼性が高く効率的な電子メール送信を提供するプロトコルです。
Python の smtplib モジュールは、smtp プロトコルをカプセル化するだけで、電子メールを送信するための非常に便利な方法を提供します。
Python でメールを送信するには主に smtplib と email の 2 つのモジュールが必要ですが、この 2 つのモジュールは Python の組み込みライブラリであり、インポートすることで使用できます。smtplib は主にメールの送信、つまりメールボックス サーバーへの接続、メールボックスへのログイン、メールの送信などのメール送信アクションを担当します。
電子メールは主に電子メールの構築を担当します。電子メールとは、送信者、受信者、件名、本文、添付ファイルなど、電子メール ページに表示されるいくつかの構造を指します。
SMTP認証
メールの送信は smtp サービスに基づいていると前述しました。そのため、smtp サーバーにログインできるアカウントと認証コードが必要です。ここでは、qq メールボックスを例に説明します。qq メールボックスにログインした後、 [設定] > [アカウント] で SMTP を有効にし、テキスト メッセージを送信して認証コードを取得します。
メールを送る
関連するパラメーターの説明:
smtp サーバーへの接続: smtplib.SMTP_SSL (smtp サーバーのアドレス、ポート番号)
smtp サーバーへのログイン: smtp.login (smtp 電子メール アドレス、smtp にログインするための認証コード)
メール オブジェクトの構築: MIMEMultipart()
メールコンテンツの作成 : MIMEText(email content, "plain", "utf8") 2 つのパラメータ テキストタイプ、エンコード形式; 電子メールコンテンツを html 形式で送信したい場合は、plain (デフォルト) を html に置き換えます
関連するコンテンツを電子メールに追加します: smg.attach (特定のコンテンツ)、電子メールのコンテンツを追加します。 電子メールの件名を設定します。
smg[“Subject”] = 件名の内容
電子メールの送信者を設定します。 smg[“From”] = 電子メール アドレス
電子メールの受信者を設定します。 From: smg[ 「宛先」] = メールアドレス
メール送信: smtp.send_message (メールオブジェクト、from_addr=送信者のメールアドレス、to_addrs=受信者のメールアドレス) 受信者が複数の場合、リスト形式を使用して to_addrs に渡して添付ファイルを作成します: MIMEApplication (添付ファイルの内容) 画像を作成します:
MIMEImage
(画像内容)、添付ファイルと同じ
添付ファイルや画像などを設定します。 file_msg.add_header(_name, _value, **_params): 拡張ヘッダー設定。_name は追加するヘッダー フィールド、_value はヘッダーの値です。
msg.add_header('Content-ID', 'imgid') #设置图片ID
msg.add_header('Content-Disposition', 'attachment', filename='test.xlsx')#为附件添加一个标题
msg.add_header('Content-Disposition', 'attachment', filename=('utf-8', '', '中文标题')) #添加非ASCII字符时需指定编码
import smtplib
from email.mime.text import MIMEText # 创建文本内容的邮件内容
from email.mime.multipart import MIMEMultipart # 创建带附件的实例
from email.mime.application import MIMEApplication # 用于创建附件的
from email.mime.image import MIMEImage # 用于创建图片,与添加附件一样的,下面不做举例
# 第一步: 连接到smtp服务器
smtp = smtplib.SMTP_SSL("smtp.qq.com", 465)
smtp.login("[email protected]","afajccbab")
# 第二步:构建邮件
smg = MIMEMultipart()
text_smg = MIMEText("这是邮件文本内容", "plain", "utf8") # 邮件内容
smg.attach(text_smg) # 添加到邮件
# 添加附件
file_msg = MIMEApplication(open(r"C:\project\test\reports\report.html","rb").read())
file_msg.add_header('content-disposition', 'attachment', filename='report.html')
smg.attach(file_msg) # 添加到邮件
smg["Subject"] = "测试测试" # 主题
smg["From"] = "[email protected]" # 邮件内显示的发件人
smg["To"] = "[email protected]" # 邮件内显示的收件人
# 第三步发送邮件
smtp.send_message(smg, from_addr="[email protected]", to_addrs="[email protected]")
他にも使い方はたくさんありますので、興味のある方はさらに勉強してみてください。
パッケージングとアプリケーション
以下は、独自のニーズに応じて最適化できる簡単なカプセル化の例です。電子メールの件名、送信者、受信者、SMTP ログイン メールボックス認証パスワードを抽出して、メンテナンス用に構成ファイルに入れることもできます。
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
def send_email(file_path):
smtp = smtplib.SMTP_SSL("smtp.qq.com",465)
smtp.login("[email protected]","smtp登录密码")
smg = MIMEMultipart()
text_smg = MIMEText("这是邮件文本内容", "plain", "utf8")
smg.attach(text_smg)
file_msg = MIMEApplication(open(file_path,"rb").read())
file_msg.add_header('content-disposition', 'attachment', filename='report.html')
smg.attach(file_msg)
smg["Subject"] = "测试报告"
smg["From"] = "[email protected]"
smg["To"] = "[email protected]"
smtp.send_message(smg,from_addr="[email protected]",to_addrs="[email protected]")
テスト レポートはテスト ケースの実行後に生成されるため、テスト レポートの生成後に電子メール送信ステップを追加できます。
import unittest
import os
from common.contants import CASE_DIR, REPORT_DIR
from common.send_email import send_email
# 第一步:创建测试套件
suite = unittest.TestSuite()
# 第二步加载用例到套件
loader = unittest.TestLoader()
suite.addTest(loader.discover(CASE_DIR))
report_path = os.path.join(REPORT_DIR, "report.html")
with open(report_path, "wb") as f:
runner = HTMLTestRunner(stream=f,
title="24期的测试报告",
description="测试报告的描述信息。。。。。",
tester="MuSen"
)
# 运行测试套件
runner.run(suite)
# 执行完代码之后,发送报告
send_email(report_path)
以下は、私がまとめた 2023 年の最も完全なソフトウェア テスト エンジニア学習知識アーキテクチャ システム図です。 |
1. Pythonプログラミングの入門から習得まで
2.インターフェース自動化プロジェクトの実戦
3. Web自動化プロジェクトの実戦
4. アプリ自動化プロジェクトの実戦
5. 一流メーカーの再開
6. DevOps システムのテストと開発
7. 一般的に使用される自動テストツール
8、JMeterのパフォーマンステスト
9. まとめ(最後にちょっとしたサプライズ)
闘争は心のメロディーであり、努力は奏でられる運動です。前途がどれほど困難であっても、情熱と忍耐力を維持する限り、すべての闘いは成長の宮殿です。自分の力を信じて果敢に追いかけてこそ、運命の限界を乗り越え、人生の栄光を切り開くことができる!
闘争は人生の旅であり、勤勉は前に進むための原動力です。困難や挫折が道を阻むとき、私たちは自分の信念を貫き、勇敢に戦い、その闘いを通じて初めて自分を超え、理想の翼を実現することができます。諦めないで、止めないでください。
闘いの道では、困難や挑戦を恐れる必要はありません。それは成長のはしごだからです。自分の可能性を信じて勇敢に前進し、汗を流して夢の花に水をやりましょう。戦い続ければ、いつかは自分だけの輝かしい人生を切り開くことができる!