1. 程式人生 > 實用技巧 >使用python自動發郵件(163、QQ、outlook郵箱)

使用python自動發郵件(163、QQ、outlook郵箱)

import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
from datetime import datetime
 
# 發件人郵箱賬號
my_sender = '[email protected]'
# my_sender = '[email protected]'
# 收件人郵箱賬號
my_user = ['[email protected]']
# my_user = ['[email protected]']
# 授權碼,不是賬號的密碼
authorization_code = '********'
# authorization_code = '****************'
# 傳送人姓名
sender_name = 'After__today'
# 接收人姓名
user_name = ['天晴的時候會下雨']
# 發件伺服器
smtp = 'smtp.163.com'   #網易163
# smtp='smtp.qq.com'    #qq郵箱
 
def mail(text):
    now_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    ret = True
    for i in range(len(my_user)):
        text1 = '您好 '+user_name[i]+'\n現在時間為'+str(now_time)+'\n很抱歉打擾您!\n'+text
        try:
            msg = MIMEText(text1,'plain','utf-8')
            # 括號裡的對應發件人郵箱暱稱、發件人郵箱賬號
            msg['From'] = formataddr([sender_name,my_sender])
            # 括號裡的對應收件人郵箱暱稱、收件人郵箱賬號
            msg['To'] = formataddr([user_name[i],my_user[i]])
            # 郵件的主題,也可以說是標題
            msg['Subject'] = "系統提示資訊"
            # 發件人郵箱中的SMTP伺服器,埠是25
            server = smtplib.SMTP(smtp,25)
            # 發件人郵箱賬號、郵箱密碼
            server.login(my_sender, authorization_code)
            # 發件人郵箱賬號、收件人郵箱賬號、傳送郵件
            server.sendmail(my_sender, [my_user[i],], msg.as_string())
            # 關閉連線
            server.quit()
        except Exception:
            ret = False
        finally:
            next
    return ret
 
text = '傳送成功'
mail(text)

很多人學習python,不知道從何學起。
很多人學習python,掌握了基本語法過後,不知道在哪裡尋找案例上手。
很多已經做案例的人,卻不知道如何去學習更加高深的知識。
那麼針對這三類人,我給大家提供一個好的學習平臺,免費領取視訊教程,電子書籍,以及課程的原始碼!??¤
QQ群:623406465

這裡使用的是163郵箱,需要注意要在 “郵箱中心” 設定客戶端授權密碼,否則會報錯(550, b'User has no permission'),authorization_code就是設定的授權碼,如果使用郵箱密碼,會報錯(535, b'Error: authentication failed')。

如果是使用QQ郵箱傳送郵件,同樣需要設定授權碼,QQ郵箱——>設定——>賬戶,然後找到如下:

按步驟開啟POP3/SMTP服務,authorization_code改為生成的16位授權碼即可。

使用outlook傳送郵件使用的是POP3服務,程式碼稍有改動

import win32com.client as win32
from datetime import datetime
 
now_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
sub = 'statistic_result'
body = '現在時間為' + now_time
outlook = win32.Dispatch('outlook.application')
receivers = ['[email protected]']
mail = outlook.CreateItem(0)
mail.To = receivers[0]
mail.Subject = sub
# mail.Attachimage.Add('C:/Users/Administrator/Desktop/work.jpg')
mail.Body = body
mail.Attachments.Add('C:/Users/Administrator/Desktop/work.jpg')
mail.Send()

新增賬戶資訊的過程見https://jingyan.baidu.com/article/e3c78d6496f6d73c4c85f5a2.html。

(想往正文中新增圖片資訊我試了很久都不行,Attachimage方法用不了,希望會的同學能在評論區告知,謝謝(/鞠躬)。)

傳送的時候可能會提示安全警告,關掉的方法為在outlook的選項中信任中心的設定中,把程式設計訪問中的從不傳送警告勾選上,如果和我截圖一樣是灰白色無法勾選,應該是電腦安全級別過高,在控制面板中可以更改。