Python smtplib, время ожидания на старте

1

Я пытаюсь настроить некоторые основные функции электронной почты для небольшого мониторинга script Я работаю в нашей офисной сети. Запуск script (см. Ниже) на моем сервере Ubuntu 10.10 отлично работает, но когда я запускаю его на своем настольном компьютере Windows, он отключается на send: 'STARTTLS\r\n' с помощью reply: '451 4.7.0 Timeout waiting for client input\r\n'.

Хотя я все равно буду запускать это на сервере Linux, мне любопытно, почему он не работает под Windows. Разве это разные версии Python, которые вызывают проблему?

Настройка:

SMTP-сервер: Exchange 2010, Windows Server 2008 R2 x64

Python machine # 1: Windows 7 SP1 x64, Python 2.7.1 --- (сбой)

Машина Python # 2: сервер Ubuntu 10.10 x86, Python 2.6.6 --- (работает)

Script:

# -*- coding: utf-8 -*-
import smtplib


def main():
    SERVER="exchange-serv"
    FROM = "[email protected]"
    TO = ["[email protected]"]
    TEXT = '''\
    From: [email protected]
    Subject: testin'

    Test message
    '''

    server = smtplib.SMTP(SERVER)
    server.set_debuglevel(1)
    server.starttls()
    server.login('user', 'pass')
    server.sendmail(FROM, TO, TEXT)
    server.quit()


if __name__ == "__main__":
    main()
Теги:
smtplib

1 ответ

1

Первое, что приходит в голову, это то, что брандмауэр Windows блокирует исходящие соединения сокета из исполняемого файла Python.exe. Вы пытались использовать Python для установления любых других типов соединений, например, используя urllib2? Если да, каковы результаты?

Предполагая, что вы не можете подключиться с помощью Python, обязательно добавьте Python.exe в качестве исключения в брандмауэр Windows.

  • 0
    Здравствуйте и спасибо за ваш ответ. К сожалению, похоже, что это не решение. Другой сценарий, который я использую для веб-скребинга, работает нормально, поэтому я не думаю, что это проблема. В любом случае я добавил python.exe как исключение брандмауэра Windows - проблема все та же.
  • 0
    Хорошо, если вы используете SMTP через TLS (SMTPS), я предполагаю, что вы подключаетесь к TCP-порту 465? Если вы откроете командную строку и введете «telnet exchange-serv 465», что произойдет? Нам нужно проверить, можете ли вы вручную подключиться к порту SMTPS, чтобы убедиться, что у вас есть базовое подключение на уровне ОС.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню