簡體   English   中英

為了使用Django開發網站,如何使用“本地主機”作為運行中的SMTP服務器?

[英]For developing a website with Django, how can I use 'localhost' as a functioning SMTP server?

我正在使用Django開發一個網站,目前正在進行整個身份驗證設置,特別是用戶可以使用密碼重置表單發送一次帶有鏈接的電子郵件的鏈接的部分,該鏈接用於重置密碼。 但是,如果我嘗試使用“ localhost”(當前是我自己的個人計算機)發送電子郵件,則Django隨附的Web服務器將崩潰,並顯示以下消息:

ConnectionRefusedError:[WinError 10061]無法建立連接,因為目標計算機主動拒絕了它

我做了一些研究,發現要發送電子郵件,我需要連接SMTP服務器,而我的計算機顯然不是SMTP服務器。 至少,不是通常。 現在,我要注意兩件事:

  1. 我知道我可以使用Gmail的SMTP服務器,實際上,我在另一個可以做到這一點的程序中有代碼。 但是,如果可能的話,我寧願使用“ localhost”。 如果不能,那么我將創建另一個Gmail帳戶並使用它。

  2. 我知道Django提供了多個電子郵件后端,實際上,我目前已經實現了基於文件的后端。 這是夠好,以測試所提供的鏈接,並確認他們的工作,但我想看看有什么電子郵件實際上樣子,與包含在電子郵件模板中的任何格式。

那么, 如何將“ localhost”轉換為SMTP服務器,而Django將接受該服務器? 或者,如果不能,請告訴我,我將采用另一種設置方式來使用Gmail帳戶。

為了潛在地幫助遇到相同問題並遇到此問題的任何人,我將分享我選擇的道路。

根據Tiago的評論

您可以在sendgrid或mailgun上創建一個免費帳戶,然后從那里發送測試電子郵件。

我看了sendgrid,但是它們需要一個網站,而且由於我是在機器上本地運行該網站的,所以我還沒有一個。 mailgun更加有用,它們甚至提供了可用於多種語言的代碼段。 但是,由於我當前使用的是Django的內置視圖,因此我沒有使用它們提供的摘錄。 而是在我的settings.py文件中設置以下內容:

EMAIL_HOST = 'smtp.mailgun.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'postmaster@sandbox[sandboxID].mailgun.org'
EMAIL_HOST_PASSWORD = '[Default Password]'

可以通過轉到https://mailgun.com/cp/domains/ ,然后sandboxID指向已分配給您的沙箱的頁面的鏈接來找到sandboxIDDefault Password

我測試了這段代碼,效果很好!

重要說明:顯然,您似乎必須在瀏覽器頁面中打開mailgun控制面板,才能從沙箱發送郵件。 關閉該標簽后,我沒有收到任何郵件,當我重新打開該郵件時,該郵件就會在我的Gmail收件箱中彈出。

暫無
暫無

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

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