Câu hỏi Khởi chạy một kịch bản python trong IDLE hoạt động nhưng trong terminal tôi nhận được một cá thể SMTP không có lỗi 'send_message' thuộc tính


Tôi có một kịch bản dẫn đến một email được gửi đi với smtplib.SMTP mô-đun python.

Khi tôi chạy nó từ bên trong IDLE sẽ được gửi tốt mà không có thông báo lỗi. Tôi đang thử nhiều cách để tự động hóa nó với crontab để đi hàng ngày lúc 10 giờ sáng.

Nếu tôi chạy nó từ thiết bị đầu cuối, tôi nhận được một lỗi:

$ python endofmonth.py
Traceback (most recent call last):
  File "endofmonth.py", line 74, in <module>
    s.send_message(msg)
AttributeError: SMTP instance has no attribute 'send_message'

Tại sao nó sẽ làm việc trong IDLE nhưng không phải khi được gọi từ thiết bị đầu cuối?


2
2018-05-07 15:38


gốc




Các câu trả lời:


Các send_message phương pháp để SMTP lớp đã được thêm vào trong Python 3.2. Bạn đang gọi kịch bản để chạy bằng python đó là một liên kết tượng trưng cho Python 2. Vì send_message phương thức không được định nghĩa trong Python 2, bạn sẽ nhận được AttributeError.

Để vượt qua điều này, bạn cần gọi kịch bản của mình bằng Python 3.2 hoặc mới hơn. Chạy nó như:

python3 endofmonth.py

và nó sẽ hoạt động.

Có lẽ bạn đang sử dụng phiên bản Python 3 của IDLE, đó là lý do nó hoạt động ở đó.


2
2018-05-07 15:51