1. 程式人生 > >python的smtp郵件傳送

python的smtp郵件傳送

python內建了許多庫來讓我們來實現郵箱的傳送:

直接上程式碼,上了在解釋:

from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.utils import parseaddr, formataddr
import smtplib
def _format_addr(s):
    name, addr = parseaddr(s)
    return formataddr((Header(name, 'utf-8').encode(), addr))
msg=MIMEText('hello, send by Python...', 'plain', 'utf-8')
from_addr = 'xxxxx'
password = 'xxxxx'
to_addr = 'xxxxx'

smtp_server = 'xxxxx'
msg['From'] = _format_addr('Python 愛好者 <%s>' % from_addr)
msg['To'] = _format_addr('from <%s>' % to_addr)
msg['Subject'] = Header('開心', 'utf-8').encode()

server = smtplib.SMTP_SSL(smtp_server, 465)
server.set_debuglevel(1)
server.login(from_addr, password)
server.sendmail(from_addr, [to_addr], msg.as_string())
server.quit()
第一次寫,有點激動,基於我自己的理解,如有錯誤,希望你們幫我糾正。

python的郵件是基於我們登陸一個目標郵箱後,通過一系列的傳遞,最後到達目標郵箱。

msg=MIMEText() 傳輸的內容,plain是文字,還有html等等。。。

然後是我們傳送message的主題,來源,等一切header,寫好才不會被當做是垃圾郵件。

smtp.SMTP_SSL ()          #這個是將郵件通過SSL協議加密

server.set_debuglevel(1)         #這個是將郵件傳送的過程顯示到我們的結果當中

然後是將我們寫好的密碼賬號登陸伺服器,這些相信大家都懂,最近多出來一個授權碼,所以寫登陸密碼的時候,需要注意一下這個授權碼不是郵箱密碼。

提供一下網易和qq的smtp伺服器地址和埠:
網易:  smtp.163.com  埠:465

 q q:      smtp.qq.com   埠:465

這裡有個問題需要注意,網易的郵箱不支援附件傳輸,所以實驗的話用qq的郵箱就好了