阿里雲Linix上 python腳本 發郵件發送不出去問題

腳本在本地發送沒問題,但是同樣的系統環境,在阿里雲上就是發送不出去
報錯信息只能看出 是連接的問題
在這裏插入圖片描述

原因
可能是阿里雲 把 你使用的那個端口封了

網上找到的解決辦法
修改連接部分代碼

  • 換端口號
  • 換成ssl方式連接(這個不知到是不是原因)
smtplib.SMTP_SSL(mail_host, 465) 
# _*_coding:utf-8 _*_
#郵件服務封裝

import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr


# 郵件預警系統相關信息
MAIL_CONFIG = {
    'sender_email':'***', #發送預警郵件的郵箱賬號
    'sender_password':'***',  #郵箱授權碼
    'receive_email':'*******@qq.com',  #要接收郵件的地址
    'mail_title':'salve端-異常預警',  #郵件標題
}


class EmailHandler(object):

    def __init__(self,sender_email,sender_password, type = 0):
        """
        :param sender_email:str 發送人郵箱地址(用戶名)
        :param sender_password:str 發送人在QQ或163申請的授權碼
        :param type:int 1 爲QQ郵箱 0 爲163郵箱
        """
        self.__163 = {'smtp': 'smtp.163.com', 'port': 465}
        self.__QQ = {'smtp':'smtp.qq.com','port':465}  # 阿里雲把 25 端口屏蔽了
        self.sender_email = sender_email
        self.sender_password = sender_password

        if type == 0:
           self.server=smtplib.SMTP_SSL(self.__163['smtp'],self.__163['port'])
           self.server.login (self.sender_email,self.sender_password)
        elif type == 1:
           self.server=smtplib.SMTP_SSL(self.__QQ['smtp'],self.__QQ['port'])
           self.server.login (self.sender_email,self.sender_password)


    def send_mail(self,To,subject,content):
        """
        :param To:str 接收人郵箱地址
        :param subject:str 郵件標題
        :param content:str 郵件內容
        :return:bool True 成功 False 失敗
        """
        try:
            msg = MIMEText(content,'plain','utf-8')
            msg['From'] = formataddr(['淘寶爬蟲異常報警系統',self.sender_email])
            msg['To'] = formataddr(['',To])
            msg['Subject'] = subject

            self.server.sendmail(self.sender_email,To,msg.as_string())
            print("【%s】郵件發送成功"%subject)
            return True
        except Exception as e:
            print("【%s】郵件發送失敗,請檢查信息:%s"%(subject,e))
            return False


emailer = EmailHandler(MAIL_CONFIG['sender_email'], MAIL_CONFIG['sender_password'])



if __name__ == '__main__':
    emailer.send_mail(MAIL_CONFIG['receive_email'],MAIL_CONFIG['mail_title'], "恭喜你被阿里巴巴錄取了,hhh")
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章