欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python開(kāi)發(fā)之SMTP連接與字符串處理錯(cuò)誤與解決方案

 更新時(shí)間:2025年05月16日 08:14:48   作者:碼農(nóng)阿豪@新空間  
在Python開(kāi)發(fā)過(guò)程中,開(kāi)發(fā)者經(jīng)常會(huì)遇到各種錯(cuò)誤和異常,本文將總結(jié)兩個(gè)典型的Python開(kāi)發(fā)問(wèn)題,SMTP服務(wù)器連接失敗和f-string字符串處理錯(cuò)誤,有需要的可以參考下

引言

在Python開(kāi)發(fā)過(guò)程中,開(kāi)發(fā)者經(jīng)常會(huì)遇到各種錯(cuò)誤和異常。有些錯(cuò)誤顯而易見(jiàn),例如語(yǔ)法錯(cuò)誤;而有些則較為隱蔽,例如網(wǎng)絡(luò)連接問(wèn)題或第三方API的限制。本文將總結(jié)兩個(gè)典型的Python開(kāi)發(fā)問(wèn)題:SMTP服務(wù)器連接失敗和f-string字符串處理錯(cuò)誤,分析其原因,并提供詳細(xì)的解決方案。文章還將包含代碼示例和最佳實(shí)踐建議,幫助開(kāi)發(fā)者避免類似問(wèn)題。

1. SMTP服務(wù)器連接失敗問(wèn)題

1.1 錯(cuò)誤現(xiàn)象

在嘗試使用Python的smtplib連接QQ郵箱SMTP服務(wù)器時(shí),出現(xiàn)以下錯(cuò)誤:

2025-05-15 23:34:58,808 - app - ERROR - SMTP服務(wù)器連接失敗: (-1, b'\x00\x00\x00')
Traceback (most recent call last):
  File "/doudian-phone-tool/doudian/send_qq_email.py", line 70, in send_email_with_attachment
    with smtplib.SMTP_SSL(smtp_server, smtp_port) as server:
  File "/usr/local/lib/python3.11/smtplib.py", line 284, in __exit__
    raise SMTPResponseException(code, message)
smtplib.SMTPResponseException: (-1, b'\x00\x00\x00')

1.2 可能的原因

1.SMTP服務(wù)未開(kāi)啟:QQ郵箱默認(rèn)關(guān)閉SMTP服務(wù),需手動(dòng)開(kāi)啟。

2.錯(cuò)誤的服務(wù)器配置:

錯(cuò)誤的SMTP服務(wù)器地址(如smtp.qq.com拼寫(xiě)錯(cuò)誤)

錯(cuò)誤的端口號(hào)(465或587)

3.授權(quán)問(wèn)題:

使用了郵箱密碼而非授權(quán)碼(QQ郵箱要求使用授權(quán)碼而非原始密碼)

授權(quán)碼已過(guò)期(修改QQ郵箱密碼后,授權(quán)碼會(huì)失效)

4.網(wǎng)絡(luò)或防火墻限制:

服務(wù)器無(wú)法訪問(wèn)SMTP服務(wù)(如云服務(wù)器未開(kāi)放465端口)

本地防火墻或安全組規(guī)則阻止連接

1.3 解決方案

(1) 檢查并開(kāi)啟QQ郵箱SMTP服務(wù)

登錄QQ郵箱網(wǎng)頁(yè)版 → 進(jìn)入設(shè)置 → 賬戶

找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務(wù)

開(kāi)啟IMAP/SMTP服務(wù),并生成新的授權(quán)碼(16位字符串)

(2) 驗(yàn)證SMTP配置

確保代碼中的SMTP配置正確:

smtp_server = "smtp.qq.com"  # 必須正確
smtp_port = 465  # SSL端口,或587(STARTTLS)
sender_email = "your_email@qq.com"
password = "your_authorization_code"  # 不是QQ郵箱密碼!

(3) 改進(jìn)錯(cuò)誤處理

優(yōu)化代碼,增加更詳細(xì)的錯(cuò)誤日志和重試機(jī)制:

import smtplib
import time
from socket import gaierror

???????def send_email_with_retry(sender, password, recipients, msg, max_retries=3):
    for attempt in range(max_retries):
        try:
            with smtplib.SMTP_SSL("smtp.qq.com", 465) as server:
                server.login(sender, password)
                server.sendmail(sender, recipients, msg.as_string())
                return True
        except smtplib.SMTPAuthenticationError:
            print("SMTP認(rèn)證失?。赫?qǐng)檢查郵箱和授權(quán)碼")
            return False
        except (smtplib.SMTPException, gaierror) as e:
            print(f"SMTP連接失敗(嘗試 {attempt + 1}/{max_retries}):{str(e)}")
            time.sleep(2)  # 延遲2秒后重試
    return False

2. f-string字符串引號(hào)嵌套錯(cuò)誤

2.1 錯(cuò)誤現(xiàn)象

在Python代碼中使用f-string時(shí),由于引號(hào)嵌套錯(cuò)誤導(dǎo)致語(yǔ)法錯(cuò)誤:

current_app.logger.info(f"【{item['waybillNum']}】運(yùn)單號(hào),【{record["手機(jī)號(hào)"]}】手機(jī)號(hào)處理成功,保存訂單到數(shù)據(jù)庫(kù)")
                                                                                ^^^^^^^^^
SyntaxError: f-string: unmatched '['

2.2 原因分析

引號(hào)沖突:f-string 的外層使用雙引號(hào) "...",而內(nèi)部字典鍵也使用了雙引號(hào) record["手機(jī)號(hào)"],導(dǎo)致Python解析器無(wú)法正確識(shí)別字符串邊界。

f-string的解析規(guī)則:Python的f-string要求引號(hào)必須正確配對(duì),否則會(huì)拋出SyntaxError。

2.3 解決方案

(1) 外層使用單引號(hào),內(nèi)層使用雙引號(hào)

current_app.logger.info(f'【{item["waybillNum"]}】運(yùn)單號(hào),【{record["手機(jī)號(hào)"]}】手機(jī)號(hào)處理成功,保存訂單到數(shù)據(jù)庫(kù)')

(2) 統(tǒng)一使用單引號(hào)

current_app.logger.info(f'【{item[\'waybillNum\']}】運(yùn)單號(hào),【{record[\'手機(jī)號(hào)\']}】手機(jī)號(hào)處理成功,保存訂單到數(shù)據(jù)庫(kù)')

(3) 使用轉(zhuǎn)義字符

current_app.logger.info(f"【{item['waybillNum']}】運(yùn)單號(hào),【{record['手機(jī)號(hào)']}】手機(jī)號(hào)處理成功,保存訂單到數(shù)據(jù)庫(kù)")

2.4 最佳實(shí)踐

優(yōu)先使用單引號(hào)作為字符串分隔符(Python社區(qū)推薦)。

避免混用引號(hào),如外層雙引號(hào) + 內(nèi)層雙引號(hào)。

使用格式化工具(如black或autopep8)自動(dòng)調(diào)整代碼風(fēng)格。

3. 總結(jié)與建議

3.1 如何避免類似錯(cuò)誤

問(wèn)題類型預(yù)防措施
SMTP連接失敗1. 檢查SMTP服務(wù)是否開(kāi)啟
2. 使用正確的授權(quán)碼
3. 增加錯(cuò)誤重試機(jī)制
f-string引號(hào)錯(cuò)誤1. 統(tǒng)一引號(hào)風(fēng)格
2. 使用代碼格式化工具
3. 避免多層嵌套

3.2 調(diào)試技巧

日志記錄:使用logging模塊記錄詳細(xì)錯(cuò)誤信息。

逐步測(cè)試:先測(cè)試SMTP連接(如telnet smtp.qq.com 465),再調(diào)試代碼。

靜態(tài)檢查:使用pylint或flake8檢查語(yǔ)法問(wèn)題。

到此這篇關(guān)于Python開(kāi)發(fā)之SMTP連接與字符串處理錯(cuò)誤與解決方案的文章就介紹到這了,更多相關(guān)Python常見(jiàn)錯(cuò)誤解決內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python 列表刪除所有指定元素的方法

    python 列表刪除所有指定元素的方法

    下面小編就為大家分享一篇python 列表刪除所有指定元素的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • python3操作mysql數(shù)據(jù)庫(kù)的方法

    python3操作mysql數(shù)據(jù)庫(kù)的方法

    這篇文章主要介紹了python3操作mysql數(shù)據(jù)庫(kù)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 詳解Python排序算法的實(shí)現(xiàn)(冒泡,選擇,插入,快速)

    詳解Python排序算法的實(shí)現(xiàn)(冒泡,選擇,插入,快速)

    這篇文章主要為大家介紹了Python中常見(jiàn)的四種排序算法的實(shí)現(xiàn):冒泡排序、選擇排序、插入排序和快速排序,文中通過(guò)圖片詳細(xì)講解了它們實(shí)現(xiàn)的原理與代碼,需要的可以參考一下
    2022-04-04
  • Pyhton模塊和包相關(guān)知識(shí)總結(jié)

    Pyhton模塊和包相關(guān)知識(shí)總結(jié)

    文中詳細(xì)整理了關(guān)于Python模塊和包的相關(guān)知識(shí)點(diǎn),剛?cè)腴T(mén)Python的小伙伴們可以學(xué)習(xí)一下,有助于加深Python基礎(chǔ)的理解.而且有詳細(xì)說(shuō)明及代碼示例,需要的朋友可以參考下
    2021-05-05
  • Effective Python bytes 與 str 的區(qū)別

    Effective Python bytes 與 str 的區(qū)別

    這篇文章主要介紹了Effective Python bytes 與 str 的區(qū)別,Python 有兩種類型可以表示字符序列,下面圍繞Python bytes 與 str 的相關(guān)資料展開(kāi)內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • Python讀寫(xiě)常用數(shù)據(jù)文件的示例詳解

    Python讀寫(xiě)常用數(shù)據(jù)文件的示例詳解

    Python?提供了多種強(qiáng)大的工具和庫(kù),可以輕松實(shí)現(xiàn)對(duì)各種類型文件的讀寫(xiě)操作,本文為大家整理了Python讀寫(xiě)常用的那些數(shù)據(jù)文件的方法,希望對(duì)大家有所幫助
    2025-01-01
  • Django 根據(jù)數(shù)據(jù)模型models創(chuàng)建數(shù)據(jù)表的實(shí)例

    Django 根據(jù)數(shù)據(jù)模型models創(chuàng)建數(shù)據(jù)表的實(shí)例

    今天小編就為大家分享一篇Django 根據(jù)數(shù)據(jù)模型models創(chuàng)建數(shù)據(jù)表的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Python api構(gòu)建tensorrt加速模型的步驟詳解

    Python api構(gòu)建tensorrt加速模型的步驟詳解

    小編個(gè)人認(rèn)為python比c++更容易讀并且已經(jīng)有很多包裝很好的科學(xué)運(yùn)算庫(kù)(numpy,scikit等),今天通過(guò)本文給大家分享Python api構(gòu)建tensorrt加速模型的步驟,感興趣的朋友一起看看吧
    2021-09-09
  • 淺析使用Python操作文件

    淺析使用Python操作文件

    文件操作對(duì)編程語(yǔ)言的重要性不用多說(shuō),如果數(shù)據(jù)不能持久保存,信息技術(shù)也就失去了意義。按照本人經(jīng)驗(yàn),IO也是蠻頭疼的一件事,因?yàn)椴粫?huì)用得太多,所以總是記不住API,每次都要重新google就會(huì)打斷思路,還不一定每次都快速得到正確的文章。
    2017-07-07
  • Python實(shí)現(xiàn)Const詳解

    Python實(shí)現(xiàn)Const詳解

    這篇文章主要介紹了Python實(shí)現(xiàn)Const的方法的相關(guān)資料,需要的朋友可以參考下
    2015-01-01

最新評(píng)論