2011-06-04 80 views
3

該項目將能夠從Python內發送電子郵件。例如,我可以成功發送到「smtp.gmail.com」,但使用本地主機或127.0.0.1會返回「errno 111,連接被拒絕」。該聲明是如何在python中設置本地主機?

server = smtplib.SMTP('127.0.0.1', 8025) 

注: 我運行Ubuntu,Python的3.2或Python 2.7根據什麼這裏的精彩的人最清楚,我的編程知識,可以寬容地描述爲有限。

+1

您需要在本地計算機上安裝SMTP服務器。 – 2011-06-04 20:54:14

+0

從你的主機發送郵件並不重要。您需要安裝和配置郵件網關(例如sendmail,exim,courier)。另外,他們默認監聽端口25,而不是8025。您必須將其配置爲發送給「更智能」的主機。推測你,你的公司或你的ISP已經有一個郵件網關,你可以使用它。這不是一個Python編程問題,而是一個電子郵件管理問題。 – Keith 2011-06-04 23:24:58

+0

您是否真的想從本地機器發送郵件或只是調試您的郵件格式化併發送到SMTP服務器? – 2011-06-05 00:49:26

回答

1

首先,test your local SMTP connection using Telnet。 (備用指令here)這將告訴您是否可以以您認爲可以的方式連接到本地SMTP服務器。

,你可能會有一些問題之一:

  1. 你的機器上沒有SMTP服務器或;
  2. 你有SMTP,但它需要密碼和/或;
  3. 您的本地計算機上有SMTP,但未正確配置或配置爲本地支持SMTP - > Internet或;
  4. 機器當前的IP或DNS設置或;
  5. 您從Python調用本地SMTP服務器的方式。

的Python支持的smtplib使用LMTP的問題2.

使用25端口的問題5.

對於其他問題,嘗試授權的連接,你需要找到或setup合作SMTP服務器。

BTW:正確配置和保護SMTP服務器是不平凡的...

+0

如何在Ubuntu中測試本地SMTP連接?對不起,沒有在原來的文章中包括,我已經編輯它。 – Celer 2011-06-04 21:14:45

+0

使用'$ telnet 127.0.0.1 8025'如果它說「連接被拒絕」或其他錯誤 - 那是你的問題。如果您進入有效的SMTP服務器,請按照我鏈接的分步說明進行操作。如果您可以通過使用telnet連接SMTP主機來成功發送電子郵件 - 您應該很好。 – 2011-06-04 21:21:59

+0

連接被拒絕。感謝您的時間。 注意:我沒有試圖製作一個可以接收電子郵件的安全服務器。我希望發送電子郵件將是相對微不足道的。 – Celer 2011-06-04 21:35:15

1

你試圖做的,是使用本地機作爲SMTP服務器是什麼。在Ubuntu中實現這一點最簡單的方法是在apt/synaptic中安裝exim4或postfix-packages之一...

確保在出現提示時確保不允許你不信任的機器將您的主機用作郵件中繼。默認值應該足以避免這種情況 - 但仍然允許從您的機器發送郵件。

另請注意,smtp的默認端口號是端口25,而不是您的代碼示例中的8025。