Python の基本の詳細な説明は、電子メール用の非常に詳細なコード例です。Python の基本に精通している友人は非常に役立ちます。次を参照してください。
1. 電子メールの送信
Python 標準ライブラリには、電子メールを送信するための SMTP プロトコルを実装するために使用される smtplib が用意されています。標準ライブラリには、電子メール形式の構築に役立つ電子メール モジュールも提供されています。 SMTP (Simple Mail Transfer Protocol) は、送信元アドレスから宛先アドレスにメールを送信するための一連のルールであり、レターの転送方法を制御するために使用されます。
QQ メールボックスのパスワード (認証コード) を取得します
2. プレーン テキスト形式で電子メールを送信します
コードは次のとおりです。
import smtplib from email.mime.text import MIMEText from email.header import Header # 邮箱用户名 sender = 'dad@qq.com'(输入你的邮箱) # 邮箱密码(部分邮箱为授权码) password = '123456'(输入你的密码) # 收件人邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发 receiver = ['baby@qq.com', ](输入你要发送人的邮箱) # 邮件正文 text = 'Hello,baby' message = MIMEText(text, 'plain', 'utf-8') # 发件人显式的名字 message['From'] = Header('拿头来坚持', 'utf-8') # 收件人显式的名字 message['To'] = Header('baby', 'utf-8') # 邮件标题 message['Subject'] = '爸爸来信,请接收!' try: # 使用QQ企业邮箱服务器发送 smtp = smtplib.SMTP('smtp.qq.com') # 登录 smtp.login(sender, password) # 发送 smtp.sendmail(sender, receiver, message.as_string()) print('邮件发送成功!') # 退出服务器 smtp.quit() except smtplib.SMTPException as e: print('Error!邮件发送失败!', e)
Python メール処理の基本分析
プレーンテキスト形式でメールを送信 実行結果:
3. HTML 形式でメールを送信
コードは次のとおりです。
import smtplib from email.mime.text import MIMEText from email.header import Header # 邮箱用户名 sender = 'dad@qq.com'(输入你的邮箱) # 邮箱密码(部分邮箱为授权码) password = '123456'(输入你的密码) # 收件人邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发 receiver = ['baby@qq.com', ](输入你要发送人的邮箱) # 邮件正文 msg = ''' <p><a href='https://blog.csdn.net/weixin_46382560?spm=1011.2124.3001.5343'>拿头来坚持</p> Life goes on, learning goes on </p> <!----></div></div> <div class="user-profile-head-info-b" data-v-d1dbb6f8><ul data-v-d1dbb6f8><li data-v-d1dbb6f8><div class="user-profile-statistics-num" data-v-d1dbb6f8>22,574</div> <div class="user-profile-statistics-name" data-v-d1dbb6f8>被访问量</div></li> <li data-v-d1dbb6f8><a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" data-v-d1dbb6f8><div class="user-profile-statistics-num" data-v-d1dbb6f8>24</div> <div class="user-profile-statistics-name" data-v-d1dbb6f8>原创文章</div></a></li> <li data-v-d1dbb6f8><a href="https://blog.csdn.net/rank/list/total" rel="external nofollow" rel="external nofollow" target="_blank" data-report-click="{"spm":"3001.5476"}" data-report-query="spm=3001.5476" data-v-d1dbb6f8><div class="user-profile-statistics-num" data-v-d1dbb6f8>128,997</div> <div class="user-profile-statistics-name" data-v-d1dbb6f8>作者排名</div></a></li> <li data-v-d1dbb6f8><a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" data-v-d1dbb6f8><div class="user-profile-statistics-num" data-v-d1dbb6f8>762</div> <div class="user-profile-statistics-name" data-v-d1dbb6f8>粉丝数量</div></a></li></ul></div></div></div> <div class="user-profile-body" data-v-3f0fdf46 data-v-80922f46><div class="user-profile-body-inner" data-v-3f0fdf46><div class="user-profile-body-left" data-v-3f0fdf46><div class="user-profile-aside" data-v-d487ed78 data-v-3f0fdf46><div class="user-general-info single-general-info" data-v-d487ed78><ul data-v-d487ed78><!----> <!----> <li class="user-general-info-join-csdn" data-v-d487ed78><i data-v-d487ed78></i> <span data-v-d487ed78>于</span> <span class="user-general-info-key-word" data-v-d487ed78>2020-02-22</span> <span data-v-d487ed78>加入CSDN</span></li></ul></div> <!----> <div class="user-achievement user-profile-aside-common-box" data-v-d487ed78><div class="aside-common-box-head" data-v-d487ed78>获得成就</div> <div class="aside-common-box-bottom" data-v-d487ed78><div class="aside-common-box-content" data-v-d487ed78><ul data-v-d487ed78><li data-v-d487ed78> <i style="background-image: url(https://img-home.csdnimg.cn/images/20210114022819.png)"></i> <div>获得<span>212</span>次点赞</div> </li><li data-v-d487ed78> <i style="background-image: url(https://img-home.csdnimg.cn/images/20210114022831.png)"></i> <div>内容获得<span>111</span>次评论</div> </li><li data-v-d487ed78> <i style="background-image: url(https://img-home.csdnimg.cn/images/20210114022828.png)"></i> <div>获得<span>562</span>次收藏</div> ''' # 指定消息体使用HTML格式 message = MIMEText(msg, 'html', 'utf-8') # 发件人显式的名字 message['From'] = Header('拿头来坚持', 'utf-8') # 收件人显式的名字 message['To'] = Header('baby', 'utf-8') # 邮件标题 message['Subject'] = '爸爸来信,请接收!' try: # 使用QQ企业邮箱服务器发送 smtp = smtplib.SMTP('smtp.qq.com') # 登录 smtp.login(sender, password) # 发送 smtp.sendmail(sender, receiver, message.as_string()) print('邮件发送成功!') # 退出服务器 smtp.quit() except smtplib.SMTPException as e: print('Error!邮件发送失败!', e)
Python によるメール処理の基本分析
HTML 形式でメールを送信した実行結果:
4. 添付ファイル付きメールの送信
コードは次のとおりです:
import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.header import Header # 邮箱用户名 sender = 'dad@qq.com'(输入你的邮箱) # 邮箱密码(部分邮箱为授权码) password = '123456'(输入你的密码) # 收件人邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发 receiver = ['baby@qq.com', ](输入你要发送人的邮箱) # 指定消息体使用复合类型 message = MIMEMultipart() # 发件人显式的名字 message['From'] = Header('拿头来坚持', 'utf-8') # 收件人显式的名字 message['To'] = Header('baby', 'utf-8') # 邮件标题 message['Subject'] = '爸爸来信,请接收!' # 邮件正文 msg = ''' <p><a href='https://blog.csdn.net/weixin_46382560?spm=1011.2124.3001.5343'>拿头来坚持</p> Life goes on, learning goes on </p> <!----></div></div> <div class="user-profile-head-info-b" data-v-d1dbb6f8><ul data-v-d1dbb6f8><li data-v-d1dbb6f8><div class="user-profile-statistics-num" data-v-d1dbb6f8>22,574</div> <div class="user-profile-statistics-name" data-v-d1dbb6f8>被访问量</div></li> <li data-v-d1dbb6f8><a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" data-v-d1dbb6f8><div class="user-profile-statistics-num" data-v-d1dbb6f8>24</div> <div class="user-profile-statistics-name" data-v-d1dbb6f8>原创文章</div></a></li> <li data-v-d1dbb6f8><a href="https://blog.csdn.net/rank/list/total" rel="external nofollow" rel="external nofollow" target="_blank" data-report-click="{"spm":"3001.5476"}" data-report-query="spm=3001.5476" data-v-d1dbb6f8><div class="user-profile-statistics-num" data-v-d1dbb6f8>128,997</div> <div class="user-profile-statistics-name" data-v-d1dbb6f8>作者排名</div></a></li> <li data-v-d1dbb6f8><a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" data-v-d1dbb6f8><div class="user-profile-statistics-num" data-v-d1dbb6f8>762</div> <div class="user-profile-statistics-name" data-v-d1dbb6f8>粉丝数量</div></a></li></ul></div></div></div> <div class="user-profile-body" data-v-3f0fdf46 data-v-80922f46><div class="user-profile-body-inner" data-v-3f0fdf46><div class="user-profile-body-left" data-v-3f0fdf46><div class="user-profile-aside" data-v-d487ed78 data-v-3f0fdf46><div class="user-general-info single-general-info" data-v-d487ed78><ul data-v-d487ed78><!----> <!----> <li class="user-general-info-join-csdn" data-v-d487ed78><i data-v-d487ed78></i> <span data-v-d487ed78>于</span> <span class="user-general-info-key-word" data-v-d487ed78>2020-02-22</span> <span data-v-d487ed78>加入CSDN</span></li></ul></div> <!----> <div class="user-achievement user-profile-aside-common-box" data-v-d487ed78><div class="aside-common-box-head" data-v-d487ed78>获得成就</div> <div class="aside-common-box-bottom" data-v-d487ed78><div class="aside-common-box-content" data-v-d487ed78><ul data-v-d487ed78><li data-v-d487ed78> <i style="background-image: url(https://img-home.csdnimg.cn/images/20210114022819.png)"></i> <div>获得<span>212</span>次点赞</div> </li><li data-v-d487ed78> <i style="background-image: url(https://img-home.csdnimg.cn/images/20210114022831.png)"></i> <div>内容获得<span>111</span>次评论</div> </li><li data-v-d487ed78> <i style="background-image: url(https://img-home.csdnimg.cn/images/20210114022828.png)"></i> <div>获得<span>562</span>次收藏</div> ''' # 邮件附加html文件 message.attach(MIMEText(msg, 'html', 'utf-8')) # 添加附件 attached_file = MIMEText(open(__file__, encoding='utf-8').read(), 'base64', 'utf-8') # 指定附件的文件名和原先的文件不一样 attached_file['Content-Disposition'] = 'attachment;filename="mail.py"' # 邮件附加附件 message.attach(attached_file) try: # 使用QQ企业邮箱服务器发送 smtp = smtplib.SMTP('smtp.qq.com') # 登录 smtp.login(sender, password) # 发送 smtp.sendmail(sender, receiver, message.as_string()) print('邮件发送成功!') # 退出服务器 smtp.quit() except smtplib.SMTPException as e: print('Error!邮件发送失败!', e)
Python 電子メールの基本分析処理
##添付ファイル付き送信 添付メール実行結果:##5. 画像メール送信#コードは以下の通り
import smtplib from email.mime.text import MIMEText from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart from email.header import Header # 邮箱用户名 sender = 'dad@qq.com'(输入你的邮箱) # 邮箱密码(部分邮箱为授权码) password = '123456'(输入你的密码) # 收件人邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发 receiver = ['baby@qq.com', ](输入你要发送人的邮箱) # 利用related定义内嵌资源的邮件体 message = MIMEMultipart('related') # 发件人显式的名字 message['From'] = Header('拿头来坚持', 'utf-8') # 收件人显式的名字 message['To'] = Header('baby', 'utf-8') # 邮件标题 message['Subject'] = '爸爸来信,请接收!' # 邮件正文 content = MIMEMultipart('alternative') # html内容 msg = ''' <p><a href='https://blog.csdn.net/weixin_46382560?spm=1011.2124.3001.5343'>拿头来坚持</p> Life goes on, learning goes on <p> 拿头来坚持的个人主页 <img src='cid:img01'> </p> ''' # 邮件附加html文件 message.attach(MIMEText(msg, 'html', 'utf-8')) # 添加图片 with open('csdn.png', 'rb') as f: img01 = MIMEImage(f.read()) # 定义资源的名字为img01 img01.add_header('Content-ID', 'img01') # 邮件附加图片 message.attach(img01) try: # 使用QQ企业邮箱服务器发送 smtp = smtplib.SMTP('smtp.qq.com') # 登录 smtp.login(sender, password) # 发送 smtp.sendmail(sender, receiver, message.as_string()) print('邮件发送成功!') # 退出服务器 smtp.quit() except smtplib.SMTPException as e: print('Error!邮件发送失败!', e)
画像送信メール実行結果:
6. メール受信 電子メールを受信するには 2 つの一般的な方法があります。 プロトコル: POP3 プロトコルと IMAP プロトコル
POP3 プロトコル (ポスト オフィス プロトコル バージョン 3、ポスト オフィス プロトコル バージョン 3): 電子メール クライアントがサーバーに電子メールをダウンロードできますが、クライアント操作中 (電子メールの移動、既読としてマークなど) はサーバーにフィードバックされません。たとえば、メールボックスから 3 つの電子メールがクライアント経由で収集され、他のフォルダーに移動された場合、これらの電子メールはメール上に保存されます。サーバーは同期的に移動されません。
IMAP プロトコル (インターネット メール アクセス プロトコル): Web メール クライアントと電子メール クライアント間の双方向通信を提供します。クライアントで行われた変更はすべてサーバーに同期されます。クライアント上でメールを操作すると、サーバー上のメールもそれに合わせて操作されます。
7. POP3 プロトコルを使用して電子メールをダウンロードする
コードは次のとおりです: 実行結果: b' OK XMail POP3 Server v1.0 Service Ready(XMail v1.0)' [b'1 1255'、b'2 1286'、b'3 1310'、b'4 1398'、b'5 1458'、b'6 1450'、b'7 1602'、b'8 1633'、b'9 5001' 、b' 10 2347'、b'11 2371'、b'12 2267'、b'13 5033'、b'14 5077'、b'15 17326'] サーバーが正しく接続されており、電子メールの数がリストされており、POP3 プロトコルが正しく使用されていることを示しています。 推奨学習: 以上がPythonメール処理例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。import poplib
from email.parser import Parser
# 登录邮箱的用户名
username = 'baby@qq.com'(输入你的邮箱)
# 登录邮箱的密码(部分邮箱为授权码)
password = '123456'(输入你的密码)
# 连接邮箱服务器
pop_server = poplib.POP3('pop.qq.com')
# 打印出邮箱服务器的欢迎文字
print(pop_server.getwelcome())
# 登录邮箱服务器
pop_server.user(username)
pop_server.pass_(password)
# 打印出当前账号的状态,第一个返回值为邮件数,第二个返回值为占用空间
print('Server stat', pop_server.stat())
# 获取所以邮件列表
resp, mails, octets = pop_server.list()
print(mails)
# 获取最新的一封邮件(序列号最大的),邮件索引从1开始计数
index = len(mails)
resp, lines, octets = pop_server.retr(index)
content = b'\r\n'.join(lines).decode('utf-8')
# 解析出邮件
msg = Parser().parsestr(content)
# 可以根据邮件索引号直接从服务器删除邮件
# pop_server.dele(index)
# 关闭连接
pop_server.quit()
これで、Python の基本を詳しく説明した電子メール処理に関するこの記事は終了です。