python程序通過STMP發送郵件出現 TimeoutError: [WinError 10060]解決方法

 經過測試發現,在windows server 2012 服務器上的程序發送smtp郵件必須通過SSL協議端口發送

相關代碼如下

# 創建SMTP對象

stp = smtplib.SMTP()

stp = smtplib.SMTP_SSL(mail_host)#此段代碼表示使用ssl協議,163郵箱用465或994端口,否則用25端口

# 設置發件人郵箱的域名和端口,端口地址爲25

stp.connect(mail_host, 465)

 以下爲完整代碼,代碼來源於網絡

import smtplib
import email
# 負責構造文本
from email.mime.text import MIMEText
# 負責構造圖片
from email.mime.image import MIMEImage
# 負責將多個對象集合起來
from email.mime.multipart import MIMEMultipart
from email.header import Header

# SMTP服務器,這裏使用163郵箱
mail_host = "smtp.163.com"
# 發件人郵箱
mail_sender = "***@163.com"
# 郵箱授權碼,注意這裏不是郵箱密碼,如何獲取郵箱授權碼,請看本文最後教程
mail_license = "***"
# 收件人郵箱,可以爲多個收件人
mail_receivers = ["***@qq.com"]

mm = MIMEMultipart('related')

# 郵件主題
subject_content = """Python郵件測試"""
# 設置發送者,注意嚴格遵守格式,裏面郵箱爲發件人郵箱
mm["From"] = "sender_name<***@163.com>"
# 設置接受者,注意嚴格遵守格式,裏面郵箱爲接受者郵箱
mm["To"] = "receiver_1_name<***@qq.com,receiver_2_name<***@qq.com>"
# 設置郵件主題
mm["Subject"] = Header(subject_content,'utf-8')

# 郵件正文內容
body_content = """你好,這是一個測試郵件!"""
# 構造文本,參數1:正文內容,參數2:文本格式,參數3:編碼方式
message_text = MIMEText(body_content,"plain","utf-8")
# 向MIMEMultipart對象中添加文本對象
mm.attach(message_text)

''' 添加圖片
    # 二進制讀取圖片
    image_data = open('a.jpg','rb')
    # 設置讀取獲取的二進制數據
    message_image = MIMEImage(image_data.read())
    # 關閉剛纔打開的文件
    image_data.close()
    # 添加圖片文件到郵件信息當中去
    mm.attach(message_image)
'''

''' 添加附件
    # 構造附件
    atta = MIMEText(open('sample.xlsx', 'rb').read(), 'base64', 'utf-8')
    # 設置附件信息
    atta["Content-Disposition"] = 'attachment; filename="sample.xlsx"'
    # 添加附件到郵件信息當中去
    mm.attach(atta)
'''

# 創建SMTP對象
stp = smtplib.SMTP()
stp = smtplib.SMTP_SSL(mail_host)#不加此段代碼則用25的端口,否則要用465端口
# 設置發件人郵箱的域名和端口,端口地址爲25
stp.connect(mail_host, 25)  
# set_debuglevel(1)可以打印出和SMTP服務器交互的所有信息
stp.set_debuglevel(1)
# 登錄郵箱,傳遞參數1:郵箱地址,參數2:郵箱授權碼
stp.login(mail_sender,mail_license)
# 發送郵件,傳遞參數1:發件人郵箱地址,參數2:收件人郵箱地址,參數3:把郵件內容格式改爲str
stp.sendmail(mail_sender, mail_receivers, mm.as_string())
print("郵件發送成功")
# 關閉SMTP對象
stp.quit()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章