ホームページ >バックエンド開発 >Python チュートリアル >Pythonはどうやって送信するのでしょうか? Pythonでメールを送信する3つの方法の紹介
この記事の内容は、PHP が SwooleTaskWorker を使用して Mysql の非同期操作を実装する方法 (コード) に関するもので、一定の参考値があります。必要な友人は参考にしてください。お役に立てば幸いです。
Python で電子メールを送信するには、メール サーバーへのログイン、smtp サービスの使用、sendmail コマンドの呼び出しなど、3 つの方法があります。
Python での電子メールの送信は比較的簡単です。メール サービスにログインできます。送信するには、Linux で sendmail コマンドを使用して送信することもできます。ローカルまたはリモートの smtp サービスを使用して電子メールを送信することもできます。単一、グループ、カーボン コピーのいずれであっても、より簡単です実装する。この Mipu ブログでは、まず最も簡単なメール送信方法と記録方法をいくつか紹介します。HTML メールや添付ファイルなどもサポートされています。必要に応じてドキュメントを確認してください。
#1. メール サーバーにログインします
smtp 経由でサードパーティの smtp メールボックスにログインし、ポート 25 および 465 をサポートする電子メールを送信しますvim python_email_1.py#!/usr/bin/env python # -*- coding:utf-8 -*- # # author: mimvp.com # 2015.10.05 import smtplib from email.mime.text import MIMEText smtpHost = 'smtp.exmail.qq.com' sender = 'robot@mimvp.com' password = "mimvp-password" receiver = 'yanggang@mimvp.com' content = 'hello mimvp.com' msg = MIMEText(content) msg['Subject'] = 'email-subject' msg['From'] = sender msg['To'] = receiver ## smtp port 25 smtpServer = smtplib.SMTP(smtpHost, 25) # SMTP smtpServer.login(sender, password) smtpServer.sendmail(sender, receiver, msg.as_string()) smtpServer.quit() print 'send success by port 25' ## smtp ssl port 465 smtpServer = smtplib.SMTP_SSL(smtpHost, 465) # SMTP_SSL smtpServer.login(sender, password) smtpServer.sendmail(sender, receiver, msg.as_string()) smtpServer.quit() print 'send success by port 465'コマンドを実行します:
$ python python_email_1.py send success by port 25 send success by port 465結果を送信すると、2 つの電子メールが届きます。以下に示すように、電子メールの 1 つのスクリーンショットを撮ります:
##2. smtp サービスを使用します
テストは失敗しました。スキップするか、修正するメッセージを残してください
#!/usr/bin/env python # -*- coding:utf-8 -*- # # author: mimvp.com # 2015.10.05 import smtplib from email.mime.text import MIMEText import subprocess smtpHost = 'smtp.exmail.qq.com' sender = 'robot@mimvp.com' password = "mimvp-password" receiver = 'yanggang@mimvp.com' content = 'hello mimvp.com' msg = MIMEText(content) if __name__ == "__main__": p = subprocess.Popen(['/usr/sbin/sendmail', '-t'], stdout=subprocess.PIPE) print(str(p.communicate())) p_res = str(p.communicate()[0]) msg = MIMEText(p_res) msg["From"] = sender msg["To"] = receiver msg["Subject"] = "hello mimvp.com" s = smtplib.SMTP(smtpHost) s.login(sender, password) s.sendmail(sender, receiver, msg.as_string()) s.quit() print 'send success'3. sendmail コマンドを呼び出す
ネイティブ Linux sendmail サービスを呼び出して電子メールを送信します。sendmail バックグラウンド プロセスを開始する必要はなく、送信者も必要ありません。電子メールの送信者には、制限なく任意の名前を指定できます。
特記事項: sendmail コマンドは、デフォルトでポート 25 を使用して電子メールを送信します。Alibaba Cloud、Tencent Cloud などがポート 25 をブロックしているため、この例はポート 25 が有効になっているマシンでテストする必要があります。
vim python_email_3.py
#!/usr/bin/env python # -*- coding:utf-8 -*- # # author: mimvp.com # 2015.10.05 from email.mime.text import MIMEText from subprocess import Popen, PIPE import commands import sys reload(sys) sys.setdefaultencoding('utf-8') def send_mail(sender, recevier, subject, html_content): msg = MIMEText(html_content, 'html', 'utf-8') msg["From"] = sender msg["To"] = recevier msg["Subject"] = subject p = Popen(["/usr/sbin/sendmail", "-t"], stdin=PIPE) p.communicate(msg.as_string()) sender = 'robot@mimvp.com' recevier = 'yanggang@mimvp.com' subject = 'sendmail-subject' html_content = 'hello mimvp.com' send_mail(sender, recevier, subject, html_content)
コマンドの実行:
python python_email_3.py
結果の受信:
#
以上がPythonはどうやって送信するのでしょうか? Pythonでメールを送信する3つの方法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。