45

出力されたテキストを電子メールに送信するようにアプリケーションを取得しようとしています。簡単にするために、スクリプトを分離しました:

import smtplib
import sys
import os

SERVER = "localhost"

FROM = os.getlogin()
TO = [raw_input("To : ")]

SUBJECT = "Message From " + os.getlogin()

print "Message : (End with ^D)"
TEXT = ''
while 1:
    line = sys.stdin.readline()
    if not line:
        break
    TEXT = TEXT + line

# Prepare actual message

message = """\
From: %s
To: %s
Subject: %s

%s
""" % (FROM, ", ".join(TO), SUBJECT, TEXT)

# Send the mail

server = smtplib.SMTP(SERVER)
server.sendmail(FROM, TO, message)
server.quit()

このスクリプトの出力:

    Traceback (most recent call last):
  File "/Users/christianlaustsen/Dropbox/Apps - Python/mail/smtplib_mail.py", line 32, in <module>
    server = smtplib.SMTP(SERVER)
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/smtplib.py", line 239, in __init__
    (code, msg) = self.connect(host, port)
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/smtplib.py", line 295, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/smtplib.py", line 273, in _get_socket
    return socket.create_connection((port, host), timeout)
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/socket.py", line 512, in create_connection
    raise error, msg
error: [Errno 61] Connection refused

ご覧のとおり、接続は拒否されています。Mac OS X Snow Leopard で Python 2.6 を実行しています (関連する場合)。

いろいろと調べてみましたが、解決策を見つけることができませんでした。どんな助けでも大歓迎です。

4

7 に答える 7

60

次のようにローカル サーバーを起動する場合:

python -m smtpd -n -c DebuggingServer localhost:1025

非標準のポート番号を使用するように、メール送信コードを変更してください。

server = smtplib.SMTP(SERVER, 1025)
server.sendmail(FROM, TO, message)
server.quit()
于 2011-09-14T20:53:37.403 に答える
16

私の推測では、ローカル マシンに SMTP サーバーがインストールされていません。

電子メールが機密でない場合は、Gmail アカウントを開き、Python でそれを使用して電子メールを送信します

于 2011-04-11T10:27:34.070 に答える
16

次のように Python で単純な SMTP サーバーを起動します。

python -m smtpd -n -c DebuggingServer localhost:1025
于 2011-08-26T00:58:37.013 に答える
0

何らかの理由で、サーバーとポートをコンストラクターに渡すのに苦労しましたが、接続機能には渡しませんでした。これは私のために働いた:

    s = smtplib.SMTP(timeout=30) #seconds
    s.connect(EMAIL_HOST, EMAIL_PORT)
    m = MIMEText('see subject')
    m['subject'] = 'sweet subject'
    m['from'] = EMAIL_FROM
    m['to'] = to_list  # comma-separated list of emails
    s.sendmail(m['from'], m['to'].split(','), m.as_string())
    s.quit()
于 2016-08-24T15:31:46.760 に答える