使用python發送QQ郵件,以及添加附件


這里以QQ郵箱為例子,顯示步驟

打開郵箱依次點擊--設置--賬戶,往下翻找到SMTP服務,點擊打開即可,之后你會獲得一串授權碼,將它保存記錄好,之后會用到

 

 

 

 

首先我們發一條簡單郵件

import smtplib
from email.mime.text import MIMEText
sender = '#########@qq.com'
receiver ='##########@qq.com'
psw = '############'#你的授權碼

content = "hey what's up man"#你的郵件內容
msg = MIMEText(content)#內容
msg['From'] = 'who knows'#發件人,真實發件人還是可以看到
msg['Subject'] = 'just a test'#郵件主體,標題
msg['To'] = receiver#接受人

try:
    server = smtplib.SMTP_SSL('smtp.qq.com',465)#連接QQ郵箱的smtp服務器,和對應端口
    server.login(sender,psw)#登入你的賬號
    server.sendmail(sender,receiver,msg.as_string())#從誰發送給誰,內容是什么
    server.quit()
    print("send already")
except:
    print("fail")

你不寫發件人就會顯示出真實發送郵箱,寫了就不會在預覽中顯示,但是點進去依舊看的到

 

同時也可以編寫發送HTTP郵件

import smtplib
from email.mime.text import MIMEText
sender = '######@qq.com'
receiver1 ='#########@qq.com'
psw = '##########'
content = '<html><body><h1>Hello World</h1></body></html>'
msg = MIMEText(content,'html','utf-8')
msg['From'] = 'who knows'
msg['To'] = receiver1
msg['Subject'] = 'whatever'

try:
    s = smtplib.SMTP_SSL('smtp.qq.com',465)
    s.login(sender,psw)
    s.sendmail(sender,receiver1,msg.as_string())#以string發送
except:
    pass

 

將一個TXT內容發送給多個郵箱

import smtplib
from email.mime.text import MIMEText
sender = '########@qq.com'
receiver1 ='#########@qq.com'
receiver2 = '########@qq.com'
psw = '##########'

with open('TXT.txt','r' ,encoding='utf-8') as f:
    content = f.read()
    print(content)
msg = MIMEText(content)
msg['From'] = 'who knows'
msg['Subject'] = 'just a test'
try:
    server = smtplib.SMTP_SSL('smtp.qq.com',465)
    server.login(sender,psw)
    server.sendmail(sender,[receiver1,receiver2],msg.as_string())#我們將receiver變為一個列表即可實現向多個對象發送
    server.quit()
    print("send already")
except:
    print("fail")

 發送帶附件的郵件

 

 

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.application import MIMEApplication

sender = '######@qq.com'
receiver1 ='#######@qq.com'
psw = '#########'
content = 'this is a email with multipart'
msg = MIMEText(content,'html','utf-8')
msg['From'] = 'who knows'
msg['To'] = receiver1
msg['Subject'] = 'whatever'


#發送圖片附件
img = MIMEImage(open('dog.jpg','rb').read())
img.add_header('Content-Disposition', 'attachment', filename='dog.jpg')
#發送word附件
word = MIMEApplication(open('計算機網絡.rtf','rb').read())
word.add_header('Content-Disposition', 'attachment', filename='計算機網絡.rtf')
#發送一個TXT
TXT = MIMEApplication(open('TXT.txt','rb').read())
TXT.add_header('Content-Disposition', 'attachment', filename='TXT.txt')
#添加一個video
#但是接受到的時候文件是.bin后綴名,需要手動改成MP4后綴
# VIDEO = MIMEApplication(open('video.mp4','rb').read())
# VIDEO.add_header("Conten-Disposition",'attachment',filename = 'video.mp4')

multipart = MIMEMultipart()
multipart.attach(msg)
multipart.attach(img)
multipart.attach(word)
multipart.attach(TXT)
# multipart.attach(VIDEO)
try:
    s = smtplib.SMTP_SSL('smtp.qq.com',465)
    s.login(sender,psw)
    s.sendmail(sender,receiver1,multipart.as_bytes())
    print('succeed')
except:
    print('erro')

 

 將圖片放到正文中

#圖片嵌入
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
import smtplib

subject = 'A test with img'
sender = '#######@qq.com'
receiver = '#######@qq.com'
psw = '#########'
msg = MIMEMultipart()
msg['Subject'] = subject
msg['From'] = sender
msg['To'] = receiver
content = MIMEText('<html><body><img src="cid:img"  /></body></html>','html')#這里的cid:img代表引用那個ID為img的圖片,當你有多張圖片時命名多張
msg.attach(content)
img = MIMEImage(open('dog.jpg','rb').read())
img.add_header('Content-ID','img')#將ID命名為img
msg.attach(img)
try:
    s = smtplib.SMTP_SSL('smtp.qq.com',465)
    s.login(sender,psw)
    s.sendmail(sender,receiver,msg.as_string())#我測試的as_string和as_bytes結果是一樣的
    print('succeed')
except:
    print('erro')

 

 

 

 

 

優秀博客:https://blog.csdn.net/qq_20417499/article/details/80566265?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-7.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-7.nonecase 和 廖雪峰pytho教程SMTP篇

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM