メール機能は、Pythonsmtplibで簡単に実現できます。 SMTPとは?メール機能を実現するには?
SMTP(Simple Mail Transfer Protocol)は、Simple Mail Transfer Protocolであり、送信元アドレスから宛先アドレスにメールを転送するために使用される一連のルールであり、メールの転送方法を制御します。
Pythonのsmtplibは、メールを送信するための非常に便利な方法を提供します。 smtpプロトコルをカプセル化するだけです。
Pythonは、次のようにSMTPオブジェクト構文を作成します。
import smtplib
smtpObj = smtplib.SMTP([host [, port [, local_hostname]]])
パラメータの説明:
ホスト:SMTPサーバーホスト。 runoob.comなどのホストのIPアドレスまたはドメイン名を指定できます。これはオプションのパラメーターです。
port:hostパラメータを指定する場合は、SMTPサービスで使用するポート番号を指定する必要があります。通常、SMTPポート番号は25です。
local_hostname:SMTPがローカルマシン上にある場合は、サーバーアドレスをlocalhostとして指定するだけで済みます。
Python SMTPオブジェクトは、sendmailメソッドを使用してメールを送信します。構文は次のとおりです。
SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options])
パラメータの説明:
from_addr:メール送信者のアドレス。
to_addrs:文字列リスト、メール送信アドレス。
msg:メッセージを送信
ここで、3番目のパラメーターに注意する必要があります。msgは文字列であり、メールを意味します。メールは通常、タイトル、送信者、受信者、メールの内容、添付ファイルなどで構成されています。メールを送信するときは、メッセージの形式に注意してください。この形式は、smtpプロトコルで定義されている形式です。
参考までにみんなと共有してください。具体的な実装方法は次のとおりです。
import smtplib, socket
fromaddr = [email protected]
toaddrs =["[email protected]","[email protected]"]
msg =open("multimsg.eml","r").read()try:
server = smtplib.SMTP('10.0.0.1')
result = server.sendmail(fromaddr, toaddrs, msg)
server.quit()if result:for r in result.keys():
print "Error sending to", r
rt = result[r]
print "Code", rt[0],":", rt[1]except(smtplib.SMTPException, socket.error), arg:
print "SMTP Server could not send mail", arg
補足例:
pythonはメール送信機能を実現します
''' ソケットは特定のネットワークプロトコル(TCPなど)用です/IP,ICMP/IP,UDP/IPなど)、プログラムが受け入れて接続できるようにします。TCPとストリームソケットを備えた単純なサーバーをPythonで構築するには、ソケットモジュールを使用する必要があります。このモジュールに含まれる関数とクラスの定義を使用して、ネットワークを介して通信するプログラムを生成できます。 、6ステップサーバーのいくつかの方法に分けられます:
1. ソケットとは
カーネル内のソケットはレイヤーごとに抽象化され、一般的なものを抽出します,このようにして、外部から提供されるインターフェースを可能な限り統合することができます,Socket関数の3つのパラメーターは、実際には抽象ソケットを具体化するための条件です。familパラメーターは図に示す第2層の通信ドメインを決定し、タイプは第3層の通信モードであるプロトコルを決定します。
第4層の実際の通信プロトコルを決定します。
このコンテンツがどのレベルにあるかを最初に理解しますか?コミュニケーションの仕方
http://www.cnblogs.com/wangcq/p/3520400.html、メソッドを見ると、サーバーとクライアントはこれらのステップに大まかに分けられます
1. オブジェクトを作成する
2. ソケットを指定されたアドレスsocketにバインドします.bing(住所)3.ステップ3、バインド後、ソケットを準備し、ポートを監視するソケット.listen(backlog)4.ソケットのacceptメソッドは、クライアントが接続を要求するのを待ちます
5. 処理段階
6. 送信が終了すると、サーバーはソケットのcloseメソッドを呼び出して接続を閉じます
クライアントには4つのステップがあります。
1. ソケット接続サーバーを作成する
2. ソケット接続方式を使用してサーバーソケットに接続します.connect((host,port))3.クライアントとサーバーは、sendメソッドとrecvメソッドを介して通信します
4. ソケットのcloseメソッドを呼び出して通信します
'''
# encoding=utf-8import socket
t = socket.socket(socket.AF_INET, socket.SOCK_STREAM)'''ソケットオブジェクトを作成し、ソケットをフォーマットします.socket(family,type),ファミリーフォーマットはAFです_INET(IPV4プロトコルのTCPおよびUDP用)、タイプパラメーター、SOCK_STREAM(ストリームソケット、TCPに接続指向の信頼性の高いデータサービスを提供)またはSOCK_DGRAM(データグラムソケットは、UDPに接続指向の信頼性の低いデータサービスを提供します),SOCK_RAW(rawソケット、低レベルプロトコル)'''
t.connect(('smtp.126.com',25)) #接続を確立する
print "start", t.recv(1024) #recvメソッドを使用してデータを通信および転送します
t.send("helo 126.com\r\n") #コンテンツを送信する
print "111", t.recv(1024)
t.send("auth login\r\n") #メールボックスにログインします
print "222", t.recv(1024) #コンソールで印刷
t.send("dGVzdG1hbjE5ODA=\r\n") #base64ビットモードでエンコードされ、次のようにデコードされます:testman1980
print "333", t.recv(1024) #コンソールで印刷
t.send("Zm9zdGVyd3UxOTc4\r\n")#base64ビットモードでエンコードされ、次のようにデコードされます:fosterwu1978
print "444", t.recv(1024) #コンソールで印刷
t.send("mail from:<[email protected] \r\n") #送信者は、なぜそれが以下の電子メールの内容にも含まれているのか、ここではあまり明確ではありません。
print "555", t.recv(1024) #コンソールで印刷
t.send("rcpt to:<[email protected] \r\n") #受信者を変更しましたが、下に受信者がいるのか、メッセージが下に届くのか、優先度はわかりません。明日実験してみましょう。
print "666", t.recv(1024) #コンソールで印刷
t.send("data\r\n") #データの役割はまだ発見されていません。明日練習してください
print "777", t.recv(1024) #コンソールで印刷
# メールコンテンツを送信する
t.send("from:[email protected]\r\n") #オプションで、他の人の送信記録を偽造できます
t.send("to:[email protected]\r\n") #optional,誰にでも送ることができます
t.send("subject:hello!\r\n")
t.send("\r\n") #smtpプロトコルの要件に従って、タイトルの後に空白行を送信する必要があります
t.send("mail test1111!\r\n") #メールコンテンツを送信する
t.send(".\r\n")
print "888", t.recv(1024)
Pythonでメール機能を実装する方法についてのこの記事はこれで終わりです。Pythonでメール機能を実装する方法の詳細については、ZaLou.Cnを検索してください。
Recommended Posts