簡體   English   中英

可以選擇SMTP服務器從Python向我發送電子郵件以進行日志記錄

[英]Choice of SMTP server to send e-mail to myself from Python for logging purposes

Python日志庫提供了一個名為“SMTPHandler”的類,它將讓我自己通過電子郵件發送日志記錄命令的輸出。 我在一些(可能是舊的)網站上找到的示例代碼下面粘貼了一些 我可以修改它以使其與gmail或我的ISP作為SMTP服務器一起使用,但兩種情況都需要我的密碼。 我目前知道兩種可能的解決方案:

  1. 我可以對我的密碼進行硬編碼,這是我不想做的,因為這段代碼可以找到雲修訂控制服務器。
  2. 我可以在我的機器上的文本文件中提交密碼並讓我的代碼讀取它,這看起來很難看。 通過更多的努力,我可以將密碼存儲為加密的,而不是明文。

我正在使用Mac,我可以通過在命令行上運行mail ,並收到電子郵件。 我不知道mail正在做什么,但它可以從Mac Mail從中讀取它的同一個地方獲取我的SMTP服務器詳細信息,然后使用外部SMTP服務器。 我嘗試在下面的Python代碼中設置MAILHOST =“localhost”,但這不起作用。

是否有比#1或#2更好的方式將這些電子郵件發送到我的Gmail地址?

import logging, logging.handlers

MAILHOST = 'beta'
FROM     = 'log_test5@yourdomain.com'
TO       = ['arkadi_renko']
SUBJECT  = 'Test Logging email from Python logging module (non-buffering)'

def main():
    log = logging.getLogger("")
    log.setLevel(logging.DEBUG)
    hdlr = logging.handlers.SMTPHandler(MAILHOST, FROM, TO, SUBJECT)
    hdlr.setFormatter(logging.Formatter("%(asctime)s %(levelname)-5s %(message)s"))
    log.addHandler(hdlr)
    log.info("Test email contents")
    log.removeHandler(hdlr)

if __name__ == "__main__":
    main()

我需要做同樣的事情。 你可以嘗試smtplib 就像是

import smtplib
from email.mime.text import MIMEText

msg = MIMEText('YOUR_MESSAGE_BODY')
me = 'YOUR_SOURCE@EMAIL.COM'
you = 'YOUR_TARGET@EMAIL.COM'
msg['Subject'] = 'YOUR_MESSAGE_SUBJECT'
msg['From'] = me
msg['To'] = you
s = smtplib.SMTP('localhost')
s.sendmail(me, [you], msg.as_string())
s.quit()

不涉及密碼。

如果遇到類似的錯誤

...    
error: [Errno 61] Connection refused

這可能意味着你沒有在你的mac上安裝或啟用smtp服務器,安裝postfix (比如來自macports)應該解決這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM