Python 使用smtp傳送郵件失敗 在Windows Server R2012上傳送失敗的問題
阿新 • • 發佈:2019-01-05
我使用Python編寫了一段使用stmp傳送郵件的例子,在本機上傳送能成功,但是在我的Windows Server R2012伺服器上一直髮送失敗,一直卡在連線SMTP伺服器那一步,經過一番折騰,終於可以了。接下來給出傳送失敗和傳送成功的程式碼。
一、失敗程式碼
# -*- coding: UTF-8 -*- import smtplib import email.mime.multipart import email.mime.text # 郵箱配置 my_email_config = {'host': 'smtp.163.com', # 設定伺服器,可換成其他伺服器'sender': '[email protected]', # 發件人 'password': 'auth_path', # 163郵箱的客戶端授權密碼,不是郵箱密碼,怎麼設定可自行百度 'receiver': '[email protected]', # 收件人 } def send_email(mail_subject, mail_content): """ 傳送郵件 :param mail_subject 郵件主題 :param mail_content: 郵件內容 :return: 空 """# 第三方 SMTP 服務,推薦163 host = my_email_config['host'] # 設定伺服器 sender = my_email_config['sender'] # 使用者名稱 password = my_email_config['password'] # 口令 receiver = my_email_config['receiver'] # 接收郵件,可設定為你的QQ郵箱或者其他郵箱 msg = email.mime.multipart.MIMEMultipart() ''' 郵件主題為‘test’的時候就會出現錯誤,換成其他詞就好了。。我也不知道這是什麼奇葩的原因''' msg['Subject'] = mail_subject msg['From'] = sender msg['To'] = receiver txt = email.mime.text.MIMEText(mail_content) msg.attach(txt) smtp_server = smtplib.SMTP_SSL() smtp_server.connect(host, 25) # 登入 smtp_server.login(sender, password) # 傳送郵件 smtp_server.sendmail(sender, receiver, msg.as_string()) # 退出 smtp_server.quit() print('郵件傳送成功,主題:%s' % mail_subject) if __name__ == "__main__": subject = "想你了" content = ''' 你好,小明 ''' send_email(subject, content)
二、成功程式碼
# -*- coding: UTF-8 -*- import smtplib import email.mime.multipart import email.mime.text # 這裡需要匯入自己的資訊 try: # from config import my_email_config from config_backup import my_email_config except ImportError: # from .config import my_email_config from .config_backup import my_email_config # 郵箱配置 my_email_config = {'host': 'smtp.163.com', # 設定伺服器,可換成其他伺服器 'sender': '[email protected]', # 發件人 'password': 'auth_path', # 163郵箱的客戶端授權密碼,不是郵箱密碼,怎麼設定可自行百度 'receiver': '[email protected]', # 收件人 } def send_email(mail_subject, mail_content): """ 傳送郵件 :param mail_subject 郵件主題 :param mail_content: 郵件內容 :return: 空 """ # 第三方 SMTP 服務,推薦163 host = my_email_config['host'] # 設定伺服器 sender = my_email_config['sender'] # 使用者名稱 password = my_email_config['password'] # 口令 receiver = my_email_config['receiver'] # 接收郵件,可設定為你的QQ郵箱或者其他郵箱 msg = email.mime.multipart.MIMEMultipart() ''' 郵件主題為‘test’的時候就會出現錯誤,換成其他詞就好了。。我也不知道這是什麼奇葩的原因 ''' msg['Subject'] = mail_subject msg['From'] = sender msg['To'] = receiver txt = email.mime.text.MIMEText(mail_content) msg.attach(txt) # 這裡要使用SSL,這樣就能在Windows Server R2012上傳送郵件了 smtp_server = smtplib.SMTP_SSL() smtp_server.connect(host, 465) # 登入 smtp_server.login(sender, password) # 傳送郵件 smtp_server.sendmail(sender, receiver, msg.as_string()) # 退出 smtp_server.quit() print('郵件傳送成功,主題:%s' % mail_subject) if __name__ == "__main__": subject = "想你了" content = ''' 你好,小明 ''' send_email(subject, content)