ホームページ  >  記事  >  バックエンド開発  >  Pythonのsmtplibモジュールを使ってメールを送信する手順を詳しく解説

Pythonのsmtplibモジュールを使ってメールを送信する手順を詳しく解説

WBOY
WBOYオリジナル
2016-07-06 13:29:432295ブラウズ

1. SMTPサーバーにログインします
まずオンライン方法を使用します (ここでは 163 の電子メールを使用します。smtp.163.com は smtp サーバーのアドレス、25 はポート番号です):

リーリー

見つかった戻り値:

リーリー

、プロンプトの検証が失敗しました。
Python が SMTP サービスをサポートしていないか、サービスがオンになっていないという人もいます。しかし、最後に Foxmail を使用して 163 メールボックスにログインしたとき、正しいパスワードを入力したのに、パスワードが間違っているというメッセージが表示されたことを思い出しました。最終的な解決策は、QQ および 163 メールボックスにはクライアント パスワードが設定されており、サードパーティ ログインする際にはクライアントのパスワードを使用してログインする必要がありますが、Pythonでも同様ですので、クライアントのパスワードを設定し、クライアントのパスワードでログインしてください。

2016627144753064.png (700×421)

リーリー

この時点で、ログイン成功のプロンプトが返されます:

リーリー

2. メールを送信します

まずオンラインで提供されたコードを使用します:

リーリー

MIMEText オブジェクトを構築する場合、最初のパラメータは電子メール本文、2 番目のパラメータは MIME サブタイプ、最後のパラメータはエンコード方式です。
Sendmail は電子メールを送信するためのメソッドです。最初のパラメータは送信側の電子メール アドレスで、2 番目のパラメータは受信者の電子メール アドレスです。つまり、as_string は同時に複数の人に送信できます。オブジェクトを str に挿入します。
ただし、実行結果はオンラインで言及されている結果を取得できません:

2016627144839301.jpg (350×162)

代わりに:

リーリー

オンラインで確認したところ、次のことがわかりました: smtplib.SMTPDataError: (554, 'DT:SPM 163 smtp11... このエラーは、エンベロープ送信者とレターヘッド送信者が一致しないためです。 送信者とレターヘッドが存在しないことがわかりますテーマなので、コードを次のように変更する必要があります:

リーリー

これでメールを正常に送信できます
msg 内の特定の情報は、通常の電子メール方法を使用して電子メールを送信することでテストできます

2016627144903688.png (424×155)

3.参考例

リーリー

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。