受注日記(2) SMTPメール送信
これはラボ レポートであるため、ラボ レポートの形式に従います。
1. 実験目的
- SMTP による電子メール送信の原則を理解している
- SMTP を使用して電子メール送信を自動化する
- 実際のシナリオでデコレータを使用してコードのカプセル化を改善することに習熟する
- プログラムにおける __name__ の役割を理解する
2. 実験内容
QQ メールボックスで smtp サーバー キーを取得し、電子メールを自動送信するプログラムを完了します。 要件: smtp サーバーにログインするには、デコレータを使用する必要があります。
3. 手順と結果
1. プログラムを実行する
from smtplib import SMTP
from email.mime.text import MIMEText
from email.header import Header
from email.utils import formataddr
from functools import wraps
receivers = ['[email protected]', ]
subject = '测试邮件'
def decorate(fun_):
username = '?'
password_pass = '?'
smtp = SMTP('smtp.qq.com')
smtp.login(username, password_pass)
@wraps(fun_)
def func_mail(*args, **kwargs):
fun_(smtp, username, *args, **kwargs)
smtp.quit()
smtp.close()
return func_mail
@decorate
def mail(smtp, username):
for receiver_ in receivers:
content = "这是一个测试邮件,不要回复哦~~~"
msgRoot = MIMEText(content, "html",
"utf-8")
msgRoot["Subject"] = Header(subject, "utf-8")
msgRoot['From'] = formataddr(("test", username))
msgRoot['To'] = formataddr((receiver_.split("@")[0], receiver_))
smtp.sendmail(username, receiver_, msgRoot.as_string())
print(receiver_, f':发送完成, 发送内容为:{
content}')
if __name__ == '__main__':
mail()
2. 運用実績
参考記事: https: //www.cnblogs.com/liuzhongkun/p/16263523.html