2012-06-01 27 views
3

我想用Python的smtplib連接到達夫科特服務器。兩者似乎都很有能力,但我必須錯過一些根本性的東西。找不到任何文檔中的任何內容。Python的smtplib與達夫科特/ SSL

非SSL連接被拒絕的時候了......

Python 2.7.2 (default, Jun 12 2011, 14:24:46) [MSC v.1500 64 bit (AMD64)] on win32 
>>> import smtplib 
>>> x = smtplib.SMTP() 
>>> x.set_debuglevel(True) 
>>> x.connect('mail.jc-bell.com', 995) 
connect: ('mail.jc-bell.com', 995) 
connect: (995, 'mail.jc-bell.com') 

SSL連接似乎接近,但預計達夫科特除了EHLO/HELO

>>> import smtplib 
>>> x = smtplib.SMTP_SSL() 
>>> x.set_debuglevel(True) 
>>> x.connect('mail.TheMailServer.com', 995) 
connect: ('mail.TheMailServer.com', 995) 
connect: ('mail.TheMailServer.com', 995) 
reply: '+OK Dovecot ready.\r\n' 
reply: retcode (-1); Msg: Dovecot ready. 
connect: Dovecot ready. 
(-1, 'Dovecot ready.') 
>>> x.login('[email protected]', '...') 
send: 'ehlo my.host\r\n' 
reply: '-ERR Unknown command.\r\n' 
reply: retcode (-1); Msg: Unknown command. 
send: 'helo my.host\r\n' 
reply: '-ERR Unknown command.\r\n' 
reply: retcode (-1); Msg: Unknown command. 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "C:\Software\Python27\lib\smtplib.py", line 564, in login 
    self.ehlo_or_helo_if_needed() 
    File "C:\Software\Python27\lib\smtplib.py", line 527, in ehlo_or_helo_if_needed 
    raise SMTPHeloError(code, resp) 
smtplib.SMTPHeloError: (-1, 'Unknown command.') 

我缺少的是什麼?

服務器的證書是自簽名的,但我不認爲這是一個CA問題,因爲我得到了'+ OK ...'。

回答

3

Dovecot是一個POP3/IMAP服務器(用於檢查郵件)。 smtplib是一個SMTP客戶端(用於發送郵件)。要連接到達夫科特,你想要使用類似imaplibpoplib

+0

謝謝!我剛剛發現我連接到錯誤的端口(和軟件包)!我的SMTP服務器是Postfix和Python/smtplib的作品。 – JimB

+0

這是一個有趣的錯誤,(幸運的是,你不是唯一一個:) – joar