Python を使用して SMTP を実装して電子メールを送信する方法の例を共有する

零下一度
リリース: 2017-05-24 14:09:35
オリジナル
1947 人が閲覧しました

この記事では、主に Python で SMTP メール送信を実装する方法に関する詳細なチュートリアルを紹介します。SMTP メール送信コードも添付されていますので、興味のある方は参考にしてください

はじめに

Python でメールを送信する方法に関するチュートリアルが見つかりました。ウェブサイトを検索するとたくさんありましたが、どれも多くの原則について述べており、指定されたコードを使用して電子メールを送信するテストを行ったところ、失敗しました。原因を見つけるには、環境のデバッグが原因であるため、今日は環境のデバッグからコードの実装までの詳細なチュートリアルを説明します。解決策を見つけましたが、効果的な解決策を得ることができませんでした。

SMTP プロトコル

まず SMTP (Simple Mail Transfer Protocol) について理解します。SMTP プロトコルは、メール配信エージェントが受信者のメール サーバーに電子メールを送信するために使用されます。 SMTP プロトコルは電子メールの送信にのみ使用でき、電子メールの受信には使用できません。ほとんどの電子メール送信サーバーは SMTP プロトコルを使用します。 SMTP プロトコルのデフォルトの TCP ポート番号は 25 です。

環境のデバッグ

前述したように、電子メールは SMTP プロトコルを使用して送信されるため、最初に送信者のメールボックスで SMTP プロトコルが有効になっているかどうかを確認する必要があります。有効になっていない場合は、163.com メールボックスを使用しました。送信者の電子メール アドレスとして、次の図に示すように SMTP プロトコルを有効にします。

1. 以下に示すように、まず 163.com メールボックス (NetEase メールボックス) にログインします

2. 上の機能バーに [

設定] オプションがあることを確認します。メールボックスで、オプションをクリックし、ドロップダウン メニューの「POP3/SMTP/IMAP」を選択します

3. 「チェックされていません」のように、チェックする必要があります。有効にすることを選択する場合は、チェックを入れると、下の赤いボックスに

:

SMTP サーバー: smtp.163 があることがわかります。 .com

実装コード

上記の設定後、環境はデバッグされ、以下のコードを実装することができます。 pycharm4.5.3editorを使用してコードを記述することをお勧めします。次のコードは、python2.7 と python3.4 の両方のバージョンのテストで使用できます。

#coding:utf-8  #强制使用utf-8编码格式
import smtplib #加载smtplib模块
from email.mime.text import MIMEText
from email.utils import formataddr
my_sender='发件人邮箱账号' #发件人邮箱账号,为了后面易于维护,所以写成了变量
my_user='收件人邮箱账号' #收件人邮箱账号,为了后面易于维护,所以写成了变量
def mail():
  ret=True
  try:
    msg=MIMEText('填写邮件内容','plain','utf-8')
    msg['From']=formataddr(["发件人邮箱昵称",my_sender])  #括号里的对应发件人邮箱昵称、发件人邮箱账号
    msg['To']=formataddr(["收件人邮箱昵称",my_user])  #括号里的对应收件人邮箱昵称、收件人邮箱账号
    msg['Subject']="主题" #邮件的主题,也可以说是标题

    server=smtplib.SMTP("smtp.xxx.com",25) #发件人邮箱中的SMTP服务器,端口是25
    server.login(my_sender,"发件人邮箱密码")  #括号中对应的是发件人邮箱账号、邮箱密码
    server.sendmail(my_sender,[my_user,],msg.as_string())  #括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
    server.quit()  #这句是关闭连接的意思
  except Exception:  #如果try中的语句没有执行,则会执行下面的ret=False
    ret=False
  return ret

ret=mail()
if ret:
  print("ok") #如果发送成功则会返回ok,稍等20秒左右就可以收到邮件
else:
  print("filed") #如果发送失败则会返回filed
ログイン後にコピー

以下に示すように、送信が成功すると ok が返され、それ以外の場合は実行が失敗します:

視野を広げましょう

コードは使用できますが、どうしてもいじりたがる人もいます。試してみるとすぐにコードが壊れてしまうので、疑問を解消するための知識ポイントをいくつか紹介します。 1. 上記のコードの最初の行には「#coding:utf-8」がありませんが、このコードを読んでいる多くの人はこの行にあまり注目していないと思います。コードの実装を行うには、-8 形式で十分です。Python ではこの行が非常に重要です。これは、Python2 バージョンで認識されるためです。デフォルトではASCIIエンコーディングになっているため、Pythonで中国語の文字が出現すると認識されず、表示されるエラーメッセージは以下の通りです:

エラーメッセージ

例: ファイル "F:/python/s12/ pymail.py",line2SyntaxError:非 ASCII 文字 'xe5'infileF:/python/s12/pymail.pyonline2,butnoencodingdeclared;http://www.python.org/peps/pep-0263.htmlf を参照してください

ord

詳細したがって、上記のエンコードエラーが発生した場合、プロンプトが表示されたら、

#coding:utf-8

#を追加して、強制的にエンコードをutf-8

または

#coding:GBK

#forceにできます。ページの最初の行にある GBK へのエンコード

[関連する推奨事項]

1.

SMTP を使用して電子メールを送信する Python の例の詳細な紹介

2. SMTP を使用して送信する Python のコードの概要メール

3. c# qq メールボックス smtp を呼び出して、修正されたバージョン コードをメールで送信します

4. Python は SMTP を使用してメールを送信します

5. php smtp を使用してメールを送信します

6. Python SMTP メールモジュールの詳細な説明

7. Python smtplib モジュールは SSL/TLS セキュアメールを送信します

以上がPython を使用して SMTP を実装して電子メールを送信する方法の例を共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート