1. 程式人生 > >python3 通過excel傳送郵件報錯解決辦法

python3 通過excel傳送郵件報錯解決辦法

前段時間使用python批量發郵件,通過excel獲取收件人資訊,結果發完後報錯如下:

Traceback (most recent call last):

  File "D:\python practice\傳送郵件  帶附件.py", line 46, in <module>
    smtpObj.sendmail(sender, receivers, message.as_string())
  File "C:\Users\lenovo\AppData\Local\Programs\Python\Python36\lib\smtplib.py", line 871, in sendmail
    (code, resp) = self.rcpt(each, rcpt_options)
  File "C:\Users\lenovo\AppData\Local\Programs\Python\Python36\lib\smtplib.py", line 541, in rcpt
    self.putcmd("rcpt", "TO:%s%s" % (quoteaddr(recip), optionlist))
  File "C:\Users\lenovo\AppData\Local\Programs\Python\Python36\lib\smtplib.py", line 153, in quoteaddr
    if addrstring.strip().startswith('<'):

AttributeError: 'NoneType' object has no attribute 'strip'

當時百思不得其解啊,為什麼發完了報錯......

今天終於靜下心來看了一下錯誤內容, NoneType object, 空型別物件,是不是表示什麼都沒有啊?

難道是excel多出來了空行?

於是用ws.max_row獲取了一下最大行號,果然比郵件聯絡人行多很多

選中那些空行,刪除整行,點選儲存(必須點選儲存啊)

再次執行程式,沒有報錯。

至此,問題解決~

使用excel的時候得養成一個好習慣,刪除內容的時候,直接刪除整行,不留下操作過的空行,否則各種程式極易認為那不是空行。