Jadual Kandungan
实例:
1.使用Python发送纯文本格式和html格式的邮件.
2.Python 发送带附件的邮件.
3.在 HTML 文本中添加图片
4.同时支持HTML和Plain格式
Rumah pembangunan bahagian belakang Tutorial Python Python SMTP邮件模块详解

Python SMTP邮件模块详解

May 24, 2017 pm 02:09 PM

SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。

Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。

实例:

1.使用Python发送纯文本格式和html格式的邮件.

 email.mime.text  
  email.utils 
 msg = MIMEText(message, , ) 
   msg[] = formataddr([,])          
   msg[] = formataddr([,])               
   msg[] =                              
   server = smtplib.SMTP(, 25                                    
   server.login(,                  
   server.sendmail(, [          
   u                
   u   ==      cpu = 100    
  disk = 500     mem = 50     
  i  range(1         
  cpu > 90            
 alert = u           
 disk > 90             
 alert = u          
 mem > 80            
  alert = u            
  email(alert)
Salin selepas log masuk
#Python发送HTML格式的邮件与发送纯文本消息的邮件不同之处就是将MIMEText中_subtype设置为html
Salin selepas log masuk
1  msg = MIMEText(&#39;<html><body><h1>Hello</h1>&#39; +2     
&#39;<p>send by <a href="http://www.python.org">Python</a>...</p>&#39; +3     
&#39;</body></html>&#39;, &#39;html&#39;, &#39;utf-8&#39;)
Salin selepas log masuk

2.Python 发送带附件的邮件.

发送带附件的邮件,首先要创建MIMEMultipart()实例,然后构造附件,如果有多个附件,可依次构造,最后利用smtplib.smtp发送。

 1 #!/usr/bin/env python 2 #coding:utf-8 3  4 import smtplib 5 from email.mime.text import MIMEText 6 from email.utils import formataddr 7 from email.mime.multipart import MIMEMultipart 8  9 def email(message):10 11     msg = MIMEMultipart()12     msg[&#39;From&#39;] = formataddr(["管理员",&#39;ylemail2012@sina.cn&#39;])13     msg[&#39;To&#39;] = formataddr(["Saneri",&#39;349622541@qq.com&#39;])14     msg[&#39;Subject&#39;] = "Zabbix报警系统!"15     msg.attach(MIMEText(message, &#39;plain&#39;, &#39;utf-8&#39;))16 17     #---这是附件部分---18     # 构造附件1,文本类型附件19     att1 = MIMEText(open(&#39;test.txt&#39;, &#39;rb&#39;).read(), &#39;base64&#39;, &#39;utf-8&#39;)20     att1["Content-Type"] = &#39;application/octet-stream&#39;21     # 这里的filename可以任意写,写什么名字,邮件中显示什么名字22     att1["Content-Disposition"] = &#39;attachment; filename="test.txt"&#39;23     msg.attach(att1)24 25     # 构造附件2,jpg类型附件26     from email.mime.application import MIMEApplication27     att2 = MIMEApplication(open(&#39;001.jpg&#39;,&#39;rb&#39;).read())28     att2.add_header(&#39;Content-Disposition&#39;, &#39;attachment&#39;, filename="001.jpg")29     msg.attach(att2)30     #构造附件3,pdf类型附件31     att3 = MIMEApplication(open(&#39;test.pdf&#39;,&#39;rb&#39;).read())32     att3.add_header(&#39;Content-Disposition&#39;, &#39;attachment&#39;, filename="test.pdf")33     msg.attach(att3)34     #构造附件4,xlsx类型附件35     att4 = MIMEApplication(open(&#39;test.xlsx&#39;,&#39;rb&#39;).read())36     att4.add_header(&#39;Content-Disposition&#39;, &#39;attachment&#39;, filename="test.xlsx")37     msg.attach(att4)38     #构造附件5,mp3类型附件39     att5 = MIMEApplication(open(&#39;test.mp3&#39;,&#39;rb&#39;).read())40     att5.add_header(&#39;Content-Disposition&#39;, &#39;attachment&#39;, filename="test.mp3")41     msg.attach(att5)42 43     try:44         server = smtplib.SMTP("smtp.sina.com", 25)45         #set_debuglevel(1)可以打印出和SMTP服务器交互的所有信息46         #server.set_debuglevel(1)47         #login()方法用来登录SMTP服务器48         server.login("ylemail2012@sina.cn","password")49         #sendmail()方法就是发邮件,由于可以一次发给多个人,所以传入一个list,邮件正文是一个str,as_string()把MIMEText对象变成str50         server.sendmail(&#39;ylemail2012@sina.cn&#39;, [&#39;349622541@qq.com&#39;,], msg.as_string())51         print u"邮件发送成功!"52         server.quit()53     except smtplib.SMTPException:54         print u"Error: 无法发送邮件"55 if name == &#39;main&#39;:56     cpu = 10057     disk = 50058     mem = 5059     for i in range(1):60         if cpu > 90:61             alert = u"CPU出问题!"62             email(alert)63         if disk > 90:64             alert = u"硬盘出问题!"65             email(alert)66         if mem > 80:67             alert = u"内存出问题!"68             email(alert)
Salin selepas log masuk

3.在 HTML 文本中添加图片

邮件的 HTML 文本中一般邮件服务商添加外链是无效的,正确添加突破的实例如下所示:

 1 #!/usr/bin/env python 2 #coding:utf-8 3  4 import smtplib 5 from email.mime.multipart import MIMEMultipart 6 from email.mime.text import MIMEText 7 from email.mime.image import MIMEImage 8 from email.utils import formataddr 9 10 def email():11     msg = MIMEMultipart()12     msg[&#39;From&#39;] = formataddr(["管理员",&#39;ylemail2012@sina.cn&#39;])13     msg[&#39;To&#39;] = formataddr(["Saneri",&#39;349622541@qq.com&#39;])14     msg[&#39;Subject&#39;] = "Zabbix报警系统!"15     msg.attach(MIMEText(&#39;<b>Some <i>HTML</i> text</b> and an image.<br><img src="cid:image1"><br>good!&#39;,&#39;html&#39;,&#39;utf-8&#39;))16 17     fp = open(&#39;001.jpg&#39;, &#39;rb&#39;)18     msgImage = MIMEImage(fp.read())19     fp.close()20     msgImage.add_header(&#39;Content-ID&#39;, &#39;<image1>&#39;)21     msg.attach(msgImage)22     try:23         server = smtplib.SMTP("smtp.sina.com", 25)24         server.login("ylemail2012@sina.cn","password")25         server.sendmail(&#39;ylemail2012@sina.cn&#39;, [&#39;349622541@qq.com&#39;,], msg.as_string())26         print u"邮件发送成功!"27         server.quit()28     except smtplib.SMTPException:29         print u"Error: 无法发送邮件"30 31 if name == &#39;main&#39;:32     email()
Salin selepas log masuk

4.同时支持HTML和Plain格式

如果我们发送HTML邮件,收件人通过浏览器或者Outlook之类的软件是可以正常浏览邮件内容的,但是,如果收件人使用的设备太古老,查看不了HTML邮件怎么办?

办法是在发送HTML的同时再附加一个纯文本,如果收件人无法查看HTML格式的邮件,就可以自动降级查看纯文本邮件。

利用MIMEMultipart就可以组合一个HTML和Plain,要注意指定subtype是alternative

1 msg = MIMEMultipart(&#39;alternative&#39;)2 msg[&#39;From&#39;] = ...3 msg[&#39;To&#39;] = ...4 msg[&#39;Subject&#39;] = ...5 6 msg.attach(MIMEText(&#39;hello&#39;, &#39;plain&#39;, &#39;utf-8&#39;))7 msg.attach(MIMEText(&#39;<html><body><h1>Hello</h1></body></html>&#39;, &#39;html&#39;, &#39;utf-8&#39;))8 # 正常发送msg对象...
Salin selepas log masuk

【相关推荐】

1. 详细介绍Python使用SMTP发送邮件实例

2. Python 使用SMTP发送邮件的代码小结

3. c#调用qq邮箱smtp发送邮件修改版代码

4. Python使用SMTP发送邮件

5. php smtp发送邮件

6. 分享Python实现SMTP发送邮件图文实例

7. python smtplib模块发送SSL/TLS安全邮件实例

Atas ialah kandungan terperinci Python SMTP邮件模块详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

PHP dan Python: Contoh dan perbandingan kod PHP dan Python: Contoh dan perbandingan kod Apr 15, 2025 am 12:07 AM

PHP dan Python mempunyai kelebihan dan kekurangan mereka sendiri, dan pilihannya bergantung kepada keperluan projek dan keutamaan peribadi. 1.PHP sesuai untuk pembangunan pesat dan penyelenggaraan aplikasi web berskala besar. 2. Python menguasai bidang sains data dan pembelajaran mesin.

Python vs JavaScript: Komuniti, Perpustakaan, dan Sumber Python vs JavaScript: Komuniti, Perpustakaan, dan Sumber Apr 15, 2025 am 12:16 AM

Python dan JavaScript mempunyai kelebihan dan kekurangan mereka sendiri dari segi komuniti, perpustakaan dan sumber. 1) Komuniti Python mesra dan sesuai untuk pemula, tetapi sumber pembangunan depan tidak kaya dengan JavaScript. 2) Python berkuasa dalam bidang sains data dan perpustakaan pembelajaran mesin, sementara JavaScript lebih baik dalam perpustakaan pembangunan dan kerangka pembangunan depan. 3) Kedua -duanya mempunyai sumber pembelajaran yang kaya, tetapi Python sesuai untuk memulakan dengan dokumen rasmi, sementara JavaScript lebih baik dengan MDNWebDocs. Pilihan harus berdasarkan keperluan projek dan kepentingan peribadi.

Penjelasan terperinci mengenai Prinsip Docker Penjelasan terperinci mengenai Prinsip Docker Apr 14, 2025 pm 11:57 PM

Docker menggunakan ciri -ciri kernel Linux untuk menyediakan persekitaran berjalan yang cekap dan terpencil. Prinsip kerjanya adalah seperti berikut: 1. Cermin digunakan sebagai templat baca sahaja, yang mengandungi semua yang anda perlukan untuk menjalankan aplikasi; 2. Sistem Fail Kesatuan (Unionfs) menyusun pelbagai sistem fail, hanya menyimpan perbezaan, menjimatkan ruang dan mempercepatkan; 3. Daemon menguruskan cermin dan bekas, dan pelanggan menggunakannya untuk interaksi; 4. Ruang nama dan cgroups melaksanakan pengasingan kontena dan batasan sumber; 5. Pelbagai mod rangkaian menyokong interkoneksi kontena. Hanya dengan memahami konsep -konsep teras ini, anda boleh menggunakan Docker dengan lebih baik.

Bolehkah kod studio visual digunakan dalam python Bolehkah kod studio visual digunakan dalam python Apr 15, 2025 pm 08:18 PM

Kod VS boleh digunakan untuk menulis Python dan menyediakan banyak ciri yang menjadikannya alat yang ideal untuk membangunkan aplikasi python. Ia membolehkan pengguna untuk: memasang sambungan python untuk mendapatkan fungsi seperti penyempurnaan kod, penonjolan sintaks, dan debugging. Gunakan debugger untuk mengesan kod langkah demi langkah, cari dan selesaikan kesilapan. Mengintegrasikan Git untuk Kawalan Versi. Gunakan alat pemformatan kod untuk mengekalkan konsistensi kod. Gunakan alat linting untuk melihat masalah yang berpotensi lebih awal.

Cara menjalankan program di terminal vscode Cara menjalankan program di terminal vscode Apr 15, 2025 pm 06:42 PM

Dalam kod VS, anda boleh menjalankan program di terminal melalui langkah -langkah berikut: Sediakan kod dan buka terminal bersepadu untuk memastikan bahawa direktori kod selaras dengan direktori kerja terminal. Pilih arahan Run mengikut bahasa pengaturcaraan (seperti python python your_file_name.py) untuk memeriksa sama ada ia berjalan dengan jayanya dan menyelesaikan kesilapan. Gunakan debugger untuk meningkatkan kecekapan debug.

Adakah sambungan vscode berniat jahat? Adakah sambungan vscode berniat jahat? Apr 15, 2025 pm 07:57 PM

Sambungan kod VS menimbulkan risiko yang berniat jahat, seperti menyembunyikan kod jahat, mengeksploitasi kelemahan, dan melancap sebagai sambungan yang sah. Kaedah untuk mengenal pasti sambungan yang berniat jahat termasuk: memeriksa penerbit, membaca komen, memeriksa kod, dan memasang dengan berhati -hati. Langkah -langkah keselamatan juga termasuk: kesedaran keselamatan, tabiat yang baik, kemas kini tetap dan perisian antivirus.

Python: Automasi, skrip, dan pengurusan tugas Python: Automasi, skrip, dan pengurusan tugas Apr 16, 2025 am 12:14 AM

Python cemerlang dalam automasi, skrip, dan pengurusan tugas. 1) Automasi: Sandaran fail direalisasikan melalui perpustakaan standard seperti OS dan Shutil. 2) Penulisan Skrip: Gunakan Perpustakaan Psutil untuk memantau sumber sistem. 3) Pengurusan Tugas: Gunakan perpustakaan jadual untuk menjadualkan tugas. Kemudahan penggunaan Python dan sokongan perpustakaan yang kaya menjadikannya alat pilihan di kawasan ini.

Boleh kod vs dijalankan di Windows 8 Boleh kod vs dijalankan di Windows 8 Apr 15, 2025 pm 07:24 PM

Kod VS boleh dijalankan pada Windows 8, tetapi pengalaman mungkin tidak hebat. Mula -mula pastikan sistem telah dikemas kini ke patch terkini, kemudian muat turun pakej pemasangan kod VS yang sepadan dengan seni bina sistem dan pasangnya seperti yang diminta. Selepas pemasangan, sedar bahawa beberapa sambungan mungkin tidak sesuai dengan Windows 8 dan perlu mencari sambungan alternatif atau menggunakan sistem Windows yang lebih baru dalam mesin maya. Pasang sambungan yang diperlukan untuk memeriksa sama ada ia berfungsi dengan betul. Walaupun kod VS boleh dilaksanakan pada Windows 8, disyorkan untuk menaik taraf ke sistem Windows yang lebih baru untuk pengalaman dan keselamatan pembangunan yang lebih baik.

See all articles