ホームページ  >  記事  >  バックエンド開発  >  Pythonはどうやって送信するのでしょうか? Pythonでメールを送信する3つの方法の紹介

Pythonはどうやって送信するのでしょうか? Pythonでメールを送信する3つの方法の紹介

不言
不言転載
2018-10-18 17:19:143369ブラウズ

この記事の内容は、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 つのスクリーンショットを撮ります:

Pythonはどうやって送信するのでしょうか? Pythonでメールを送信する3つの方法の紹介

##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つの方法の紹介#

以上がPythonはどうやって送信するのでしょうか? Pythonでメールを送信する3つの方法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。

関連記事

続きを見る