Pythonを使用して簡単にメールを送信する方法を教えてください

序文

今、生活のペースは加速しており、人と人とのコミュニケーションの仕方も異なります。より便利にコミュニケーションをとるために、メールが生成されています。ご存知のように、メールは実際にはデータの送受信と同じです。クライアント側とサーバー側メールを受信する機能であるメールの通信プロトコルはSMTP、POP3、IMAPであり、よく使うQQメールボックスやNeteaseメールボックスのようにすべてtcp / ipプロトコルに属しています。これらは同じモードです。

多くの人がPythonを学び、どこから始めればよいのかわかりません。
多くの人がPythonを学び、基本的な文法を習得した後、どこから始めればよいかわかりません。
事例研究を行った多くの人々は、より高度な知識を学ぶ方法を知りません。
これらの3つのタイプの人々のために、私はあなたに優れた学習プラットフォームを提供し、ビデオチュートリアル、電子書籍、およびコースのソースコードを無料で受け取ることができます!??
¤QQグループ:828010317

準備ができました

  • 編集者:崇高なテキスト3
  • モジュール:smtplibとメール

プロジェクトの実施

1.インストール

pip install smtplib 
pip install email 

注:ここに小さな穴があります。つまり、smtplibのインストールは上記のように直接インストールできません。そうしないと、インストールされません。最初にPyEmailをインストールする必要があります。これは、smtplibがこのモジュールに統合されているため、枕モジュールのようなものです。 PILに統合同じ、もう一方は正常にインストールできます。

2. pop3 SMTP imapサービスを開いて、電子メール認証コードを理解します

メールボックスにメールを送信する場合は、最初に上記のサービスをアクティブにしてメールが通信できるようにする必要があります。また、QQメールボックスなどのメール認証コードが必要です。

QQメールボックスを開き、[設定--------アカウント]を選択して、サービスをオンにします。

サービスを開始したら、[認証コードの生成]をクリックして、認証コードを保存します。認証コードを取得するには、登録した携帯電話番号を使用してテキストメッセージまたは動的トークンを送信するだけです。

3.メールポートを構築し、接続を確立します

import smtplib 
sm=smtp.SMTP()  # 初始化连接 
sm.connect('邮件服务器地址','端口')  #建立连接 
sm.login('邮箱账号','邮箱密码/授权码')  #登陆账户 
sm.sendmail('邮件发送方','邮件接受方','邮件内容') #发送邮件 
sm.quit() #关闭连接,结束邮件服务 

上記の知識を理解した後、ログインしてみましょう。例としてQQメールボックスを取り上げます。

ログインに成功したことを示すロゴがあります。ちなみに、サーバーがすでにメールサーバーのポートを設定しているので、ここでメールサーバーのポートを設定しなかったのはなぜですか。デフォルトのポートは25です。セキュリティが心配な場合はメール、たとえば、ハッカーがHuを傍受する場合、SSLリンク送信を使用することもできます。

同様に、そのポートもデフォルトで構成されています。ポート番号は465です。セキュリティのために、これを選択します。

4.メールコンテンツパーツを作成します

ここでは、電子メールモジュールを使用する必要があります。電子メールは通常、テキスト、画像、ファイルなど、さまざまなものを送信できることを知っているので、見てみましょう。

1.テキスト

インポートモジュール

from email.mime.text import MIMEText 

テキストを入力

その前に、その特定の使用法を知る必要があります。

  • MIMEText( 'メールコンテンツ'、 'タイプ'、 'エンコーディング')
  • メッセージの内容は文字列です
  • タイプ:text / plain text / html
  • エンコーディング:utf-8 gbk

構造テキスト

MIMEText('hello','text/plain','utf-8') 

ハイパーテキストを作成する

MIMEText('<a href='www.baidu.com'>点击此处有惊喜</a>','text/html','utf-8') 

今やりましょう。

私は非常にうまくメールを受け取りました。それは私に送られたメールボックス2091500484でした。もちろん、私たちはこのような最も単純な機能を実現しました。

開始と終了を追加するなど、フォーマットを標準化する必要があります。電子メールの完全なコンテンツを構築するモジュールをインポートする必要があります。

from email.header import Header 

次に、頭、内容、尾を設定します

msg1['From']=Header('你是猪吗')  #设置发件人昵称 
msg1['To']=Header('[email protected]') #设置收件人昵称 
msg1['Subject'] = Header('我是猪') #设置标题 

ほら、おもしろいですか?来てみてください、ははは。

二、写真

テキストを送信した後も、画像を送信したいのですが、どうすればよいですか?慌てる必要はありません。この時点で、画像送信モジュールをインポートする必要があります。

from email.mime.image import MIMEImage 

次に、画像ファイルを読み取り、電子メールに追加します。

ff=open('1.jpg','rb').read() #打开文件 
fd=MIMEImage(ff,'subtype')    #初始化 
fd.add_header('Content-ID','1.jpg')  #添加到头部 

画像が表示されていないことがわかります。元の画像はhtmlまたは添付ファイルのいずれかの添付ファイルに基づいていますが、どちらも添付モジュールのサポートが必要です。以下の添付モジュールをインポートしましょう。

from email.mime.multipart import MIMEMultipart 

1.画像をHTMLに挿入します

つまり、画像は添付ファイルの形ではなく、身体の部分に挿入されます。

msg3 = MIMEMultipart('related') 
msg3['From'] = '你是猪吗' 
msg3['To'] = '[email protected]' 
msg3['Subject'] = '我是猪' 
msg4 = MIMEMultipart('alternative') #构建一个附件 
msg3.attach(msg4)  #将附件引入到另一个附件 
text=""" 
   <html> 
   <body> 
   <img src='cid:img' tittle='I am  pig'> 
   </body> 
   </html> 
""" 
msg4.attach(MIMEText(text, 'html', 'utf-8')) #将html插入到附件中 
ff=open('2.jpg','rb') 
img = MIMEImage(ff.read())  #将图片读取到附件中 
ff.close() 
img.add_header('Content-ID','<img>') #添加图片头部 
msg3.attach(img)   #将图片添加到附件 
sm.sendmail('[email protected]','[email protected]',msg3.as_string()) #发送 
sm.quit() 

プロセスはさらに複雑であり、主にネストされた添付ファイル構造のために、単に画像を添付ファイルとして追加するよりも少し面倒であることがわかります。

2.画像​​を添付ファイルにインポートします

これは簡単に実現できます。示されているように:

3、ドキュメント

ファイルを送信する前に考慮しなければならない問題の1つは、ファイルをバイナリ形式で読み取ってから添付ファイルに追加する必要があることです。これは簡単に理解できます。

1.ファイルを読みます

ここで、ファイルを読み取るためにbase64データストリームを構築する必要があります。

msg6=MIMEMultipart() 
txt=MIMEText(open('fd.txt','rb').read(), 'base64', 'utf-8') 

2.送信タイプを設定します

txt["Content-Type"] = 'application/octet-stream' 

3.添付ファイル名を設定します

txt["Content-Disposition"] = 'attachment; filename = "fd.txt" ' 

4.ファイルを添付ファイルに追加します

msg6.attach(txt) 

最後に、ファイルが添付ファイルに正常に追加されました。

プロジェクトの概要

メール送信についての私の考えは以上です。また、メール送信のプロセスを視覚的に表示したい場合は、メールサーバーにログインする前に次の文を追加してください。

sm.set_debuglevel(1) 

このようにして、すべての送信プロセスを端末に印刷できます。メールについて学ぶことは私たちの生活を大いに促進することができます。メールを使用してスケジュールを設定できます。プログラムを通じて、毎日時間どおりにメールを送信できます。非常に説得力がありませんか?この記事が今日お役に立てば幸いです。メールの新しい理解があります。

 

おすすめ

転載: blog.csdn.net/Python_sn/article/details/110885012