Ошибка «Отказано в доступе» при отправке почты с использованием Python smtplib - PullRequest
0 голосов
/ 15 июня 2011

Я пытаюсь отправить почту, используя Python 3.2. Мой код выглядит следующим образом:

#from email import Encoders
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.utils import COMMASPACE, formatdate
import os
import smtplib
from base64 import encode
from email import encoders

def sendMail(to, subject, text, files=[],server="smtp.mydomain.com"):
    assert type(to)==list
    assert type(files)==list
    fro = "From <myemail@mydomain.com>"

    msg = MIMEMultipart()
    msg['From'] = fro
    msg['To'] = COMMASPACE.join(to)
    msg['Date'] = formatdate(localtime=True)
    msg['Subject'] = subject

    msg.attach( MIMEText(text) )

    for file in files:
        part = MIMEBase('application', "octet-stream")
        part.set_payload( open(file,"rb").read() )
        encoders.encode_base64(part)
        part.add_header('Content-Disposition', 'attachment; filename="%s"'
                       % os.path.basename(file))
        msg.attach(part)

    smtp = smtplib.SMTP_SSL(server, 465)
    smtp.ehlo()
    smtp.set_debuglevel(1)
    smtp.ehlo()
    smtp.login("myemail@mydomain.com", "mypassword")
    smtp.ehlo()
    smtp.sendmail(fro, to, msg.as_string() )
    smtp.close()
    print("Email send successfully.")

sendMail(
        ["recipient"],
        "hello","cheers",
        []
    )

Это дает мне следующую ошибку:

raise SMTPSenderRefused(code, resp, from_addr)
smtplib.SMTPSenderRefused: (501, b'5.7.1 <myemail@mydomain.com>... Permission denied', 'myemail@mydomain.com')

Кто-нибудь знает, как решить эту проблему?

Заранее спасибо.

1 Ответ

1 голос
/ 15 июня 2011

Как говорит ошибка: вам нужно вызвать метод connect в экземпляре smtplib.SMTP_SSL, прежде чем пытаться его использовать.smtplib.SMTP_SSL не подключается автоматически (и не smtplib.SMTP.)

...