php 邮件发送是html 没样式_使用python发送邮件
發送郵件這個功能非常實用,比如你寫了一個爬蟲,可以通過郵件來接收程序異常或者任務完成的通知,再比如你搭了一個網站,別人只需留下他的郵箱,你就可以自動給他發送郵件。
總之我覺得郵件通知非常適合那些處理批量、大量任務,你可以不用守在電腦前等待處理結果,在程序里配置好郵件通知后,只需留意郵箱通知就好了。
下面我們一起來看看如何使用 python 來實現郵件發送,郵件一般分為純文本郵件、html 郵件、以及帶附件郵件,今天我們使用 python 來分別實現這三種郵件的發送。
在 python 實現發送郵件需要兩個模塊,分別是 smtplib 和 email,這兩個模塊都是內置的,不需要自己安裝,直接 import 導入即可。
email 主要是用來構建郵件的,比如郵件收發人、郵件標題、郵件正文以及附件啥的,smtplib 則是用來發送郵件的。
這里我們使用 qq 郵箱來作為發件郵箱,在使用前,需要簡單的配置下 qq 郵箱。
打開 qq 郵箱,依次找到 設置 -> 賬戶,然后檢查 POP3/SMTP 服 務是否開啟。
如果沒開啟則開啟,根據提示開啟之后我們需要獲取授權碼,這個授權碼下面我們會要用到的,這一步只要獲取到授權碼就行了。
我們先來實現一個簡單的純文本郵件發送,我這里只把一些關鍵的代碼解釋一下,文章最后面再附上完整的源碼。
- 純文本郵件
首先就是使用 email 模塊構建郵件,plain 即代表文本郵件,郵件構建完后,再使用 smtplib 發送郵件。
#構建純文本郵件 from email.mime.text import MIMEText from email.header import Header msg = MIMEText('我是郵件正文...', 'plain', 'utf-8') # plain 表示純文本郵件 msg['From'] = "這里是發件者郵箱" msg['To'] = "這里是收件者郵箱" msg['Subject'] = Header("我是郵件的標題", 'utf-8') #郵件標題#使用smtplib模塊發送郵件 email_client = smtplib.SMTP("smtp.qq.com") email_client.login("這里是發件者郵箱", "這里就是上面提到獲取到的授權碼") email_client.sendmail("這里是發件者郵箱", "這里是收件件者郵箱", msg.as_string()) email_client.quit()發送郵件的時候有兩個需要注意的地方,一個是 smtplib.SMTP 的郵件服務器設置。
這里我們用的 qq 郵箱作為發件郵箱,所以設置為 http://smtp.qq.com,如果是其他郵箱如網易郵箱,則需要設置為 http://smtp.163.com。
再一個需要注意的就是 login 方法了,這個登錄方法里的第二個參數是指上面提到的授權碼,并不是你發件郵箱的登錄密碼。
- html 郵件
html 郵件主要是可以給郵件內容定義更豐富的樣式,而且可以很方便的插入鏈接。html 郵件和純文本郵件大同小異,把完整的 html 內容作為文本內容就行,再把 plain 改為 html 類型即可。
#構建html郵件 content = '<html><body><h3>Hello,這是一封 html 郵件,點擊鏈接可以去看我的博客哈。</h3>' + '<p><a href="www.weatherfood.com">譚某人的博客</a></p>' + '</body></html>' puretext = MIMEText(content, 'html', 'utf-8')- 附件郵件
附件郵件稍微麻煩一些,在構建郵件對象的時候,就需要聲明構建一個附件郵件對象,msg = MIMEMultipart(),然后再添加 MIMEText 作為郵件正文,最后再把 MIMEApplication 作為附件加入即可。
- 完整源碼
最后我再附上一份完整的帶圖片附件且正文為 html 的郵件發送源碼,注意把源碼中的發件郵箱改成你自己的郵箱,并獲取發件郵箱的授權碼。
# coding=utf-8import smtplib from email.mime.text import MIMEText from email.header import Header from email.mime.application import MIMEApplication from email.mime.multipart import MIMEMultipart #郵件發送函數 #SMTPHost 郵件服務器 #fromAccount 發件郵箱 #fromPasswd 發件郵件授權碼,注意并不是郵箱登錄密碼 #toAccount 收件郵箱 #subject 郵件標題 #content 郵件正文def sendMail(SMTPHost, fromAccount, fromPasswd, toAccount, subject, content): #構建郵件msg = MIMEMultipart()msg['Subject'] = Header(subject, 'utf-8')msg['From'] = fromAccountmsg['To'] = toAccountcontent = '<html><body><h3>Hello,這是一封 html 郵件,點擊鏈接可以去看我的博客哈。</h3>' + '<p><a href="www.weatherfood.com">譚某人的博客</a></p>' + '</body></html>'puretext = MIMEText(content, 'html', 'utf-8')msg.attach(puretext)# 附件xlsxpart = MIMEApplication(open('tim.jpg', 'rb').read()) #這里填寫你自己目錄下的附件文件xlsxpart.add_header('Content-Disposition', 'attachment', filename='tim.jpg')msg.attach(xlsxpart)#使用smtplib模塊發送郵件email_client = smtplib.SMTP(SMTPHost)email_client.login(fromAccount, fromPasswd)email_client.sendmail(fromAccount, toAccount, msg.as_string())email_client.quit()#主函數 if __name__ == '__main__':sendMail('smtp.qq.com','********@qq.com',#你的郵箱'**********',#授權碼'playactors@163.com','很開心你來看我的文章了,歡迎關注哦。','文章中有疑問的地方,歡迎留言與我聯系哈,感謝你的支持!')有問題歡迎在下面留言交流,也歡迎關注,如果覺得對你有幫助就點個贊吧,感謝支持。
總結
以上是生活随笔為你收集整理的php 邮件发送是html 没样式_使用python发送邮件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为服务器sn号查询网站,linux 查
- 下一篇: think python 2ed_Thi