一、發送純文本郵件 import smtplib from email.mime.text import MIMEText subject = "標題" # 郵件的主題 content = "測試" # 郵件的內容 sender = "[email protected]" # 發件人 passwor ...
一、發送純文本郵件
import smtplib from email.mime.text import MIMEText from email.header import Header subject = "郵件標題" # 郵件的主題 content = "郵件內容" # 郵件的內容 sender = "[email protected]" # 發件人 password = "qnrwndesjxmmijce" # 剛纔我們在QQ郵箱里設置的授權密碼 receiver = "[email protected]" # 收件人 message = MIMEText(content, "plain", "utf-8") # 發送的內容,內容的格式類型(plain與html),內容的編碼方式 message["From"] = sender # 發送郵箱 message["To"] = receiver # 接收郵箱 message["Subject"] = subject # 郵件標題 # message['Subject'] = Header(subject, 'utf-8') # subject # message = '\n'.join(['From: {}'.format(sender), 'To: {}'.format(receiver), 'Subject: {}'.format(subject), '', content]) # smtp = smtplib.SMTP("smtp.qq.com", 25) # SMTP:普通的郵件發送形式 smtp = smtplib.SMTP_SSL("smtp.qq.com", 465) # SMTP_SSL:QQ郵箱的SMTP伺服器(埠465或587) smtp.set_debuglevel(1) # 用set_debuglevel(1)就可以列印出和SMTP伺服器交互的所有信息 smtp.login(sender, password) # 登錄SMTP伺服器,輸入發送郵箱和密碼 smtp.sendmail(sender, receiver, message.as_string()) smtp.quit() smtp.close()
二、發送HTML格式的郵件
Python發送HTML格式的郵件與發送純文本消息的郵件不同之處就是將MIMEText中_subtype設置為html。
content = '<h1>Hello</h1>' + '<p>send by <a href="http://www.python.org">Python</a>...</p>' message = MIMEText(content, "html", "utf-8")
三、發送文本中帶圖片的郵件
import smtplib from email.mime.text import MIMEText from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart subject = "圖片郵件測試" content = """<p>Python 郵件發送測試...</p><p><img src="cid:image1"></p>""" sender = "[email protected]" # 發送人,換成自己的! password = "qnrwndesjxmmijce" # 授權碼,換成自己的! receiver = "[email protected]" # 收件人 message = MIMEMultipart("related") # 構造一個MIMEMultipart對象代表郵件本身。related 表示使用內嵌資源的形式 將郵件發送給對方 message["From"] = sender message["To"] = receiver message["Subject"] = subject # msgAlternative = MIMEMultipart('alternative') # 接收者的別名 # msgAlternative.attach(MIMEText(content, 'html', 'utf-8')) # 添加文本 # message.attach(msgAlternative) message.attach(MIMEText(content, 'html', 'utf-8')) # 一步到位,不用上面三行代碼 # ---------------發送圖片的第一種方式----------------------- with open(r'C:\Users\bt.cn\Desktop\004.jpg', 'rb') as fp: # 二進位模式讀取圖片 msgImage = MIMEImage(fp.read()) msgImage.add_header("Content-ID", "<image1>") # 定義圖片ID,在HTML文本中引用 message.attach(msgImage) # 添加圖片到郵箱信息中去 # ---------------發送圖片的第二種方式----------------------- # msgImage = MIMEText(open(r'C:\Users\bt.cn\Desktop\004.jpg', 'rb').read(), 'base64', 'utf-8') # msgImage['Content-disposition'] = 'attachment;filename="happy.png"' # message.attach(msgImage) smtp = smtplib.SMTP_SSL("smtp.qq.com", 465) smtp.set_debuglevel(1) smtp.login(sender, password) try: smtp.sendmail(sender, receiver, message.as_string()) smtp.quit() smtp.close() except Exception as e: print("郵件發送失敗,錯誤原因[{0}]".format(str(e))) print("郵件發送成功")
四、發送帶附件的郵件
import smtplib from email.header import Header from email.mime.text import MIMEText from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart subject = "附件郵件測試" content = "Python 郵件發送測試..." sender = "[email protected]" # 發送人,換成自己的! password = "qnrwndesjxmmijce" # 授權碼,換成自己的! receiver = "[email protected]" # 收件人 message = MIMEMultipart("related") # 構造一個MIMEMultipart對象代表郵件本身。related 表示使用內嵌資源的形式 將郵件發送給對方 message["From"] = sender message["To"] = receiver message["Subject"] = Header(subject, 'utf-8') message.attach(MIMEText(content, 'html', 'utf-8')) # 發送文本內容 # ---------------構造附件(文本或圖片都行,文本用MIMEText,圖片用MIMEText與MIMEImage都行)----------------------- # att1 = MIMEImage(open(r'C:\Users\bt.cn\Desktop\004.jpg', 'rb').read()) att1 = MIMEText(open(r'C:\Users\bt.cn\Desktop\004.jpg', 'rb').read(), 'base64', 'utf-8') att1["Content-Type"] = 'application/octet-stream' att1['Content-disposition'] = 'attachment; filename="happy.png"' # 這裡的filename可以任意寫,寫什麼名字,郵件中顯示什麼名字 message.attach(att1) smtp = smtplib.SMTP_SSL("smtp.qq.com", 465) smtp.set_debuglevel(1) smtp.login(sender, password) try: smtp.sendmail(sender, receiver, message.as_string()) smtp.quit() smtp.close() except Exception as e: print("郵件發送失敗,錯誤原因[{0}]".format(str(e))) print("郵件發送成功")
五、補充MIMEMultipart的可選類型
MIMEMultipart(‘mixed’) # 如果一封郵件中含有附件 MIMEMultipart(‘alternative’) # 可以傳送超文本內容,但出於相容性的考慮,一般在發送超文本格式內容的同時會同時發送一個純文本內容的副本 MIMEMultipart(‘related’) # 除了可以攜帶各種附件外,還可以將其它內容以內嵌資源的方式存儲在郵件中
https://www.jianshu.com/p/66ef0ee329bd
https://www.cnblogs.com/pythonywy/p/11861090.html
https://blog.mimvp.com/article/27043.html
https://blog.csdn.net/qq_32252957/article/details/82593927
https://blog.csdn.net/zhangpan19910604/article/details/45065629