5

Pythonを使用してメールにファイルを添付しようとしました。コード:

import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from smtplib import SMTPException


def send_Email():
    file1="abc.txt"
    message = "Test mail"
    msg = MIMEMultipart()

    msg.attach(MIMEText(file(file1).read()))

    try:
        smtpObj = smtplib.SMTP('smtp server name',port)
        smtpObj.sendmail(sender, EmailId, message, msg.as_string() )
        print "Successfully sent email"
    except SMTPException:
        print "Error: unable to send email"

エラーが発生しました: socket.gaierror: [Errno 11001] getaddrinfo failed

完全なエラー メッセージ:

 File "C:\Python27\lib\smtplib.py", line 249, in __init__
    (code, msg) = self.connect(host, port)
  File "C:\Python27\lib\smtplib.py", line 309, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "C:\Python27\lib\smtplib.py", line 284, in _get_socket
    return socket.create_connection((port, host), timeout)
  File "C:\Python27\lib\socket.py", line 553, in create_connection
    for res in getaddrinfo(host, port, 0, SOCK_STREAM):
socket.gaierror: [Errno 11001] getaddrinfo failed
4

9 に答える 9

11

プロキシの背後から作業しているときに gaierror が発生することは確かです。

于 2015-09-21T15:34:23.837 に答える
5

問題は、「smtp サーバー名」の DNS ルックアップが失敗していることです。これが正確なコードである場合、その理由がわかります。そうでない場合、SMTP サーバーの有効な修飾名がある場合は、ファイアウォールに問題がある可能性があります。また、サーバーの SMTP 構成と一致するように、ポートを有効な値に設定する必要があります (通常はポート 25ですが、常にではありません)。

于 2013-08-23T10:58:43.540 に答える
-1

資格情報を使用してログインする必要があります。試す:

 smtpObj = smtplib.SMTP('smtp server name',port)

 smtpObj .starttls() 
 smtpObj .login(email, password)
 smtpObj.sendmail(sender, EmailId, message, msg.as_string() )
 print "Successfully sent email"
于 2018-08-06T07:23:19.913 に答える