Почему при отправке письма через smtp при вызове sendmail сервер выдает ошибку 501, хотя адрес отправителя я указываю в верном формате?
При отправке письма из скрипта на python через smtp при вызове
sendmail сервер выдает ошибку 501, хотя адрес отправителя я указываю в верном формате:
def send_email(self):
tema = self.lineEdit_tema_letter.text()
sender_name = self.lineEdit_name_sender.text()
sender_pass = self.lineEdit_pass_sender.text()
server = self.lineEdit_email_sender.text()
mail_server = 'smtp.' + server
mail_server_port = 465
addr_from = sender_name + '@' + server # !!!! этот адрес я подставляю в sendmail!!!!
s = smtplib.SMTP_SSL(mail_server, mail_server_port)
s.set_debuglevel(1)
s.ehlo(addr_from)
s.login(sender_name, sender_pass) # здесь судя по ответам сервера все нормально
for row in self.r_list:
message = MIMEMultipart()
message['From'] = Header(addr_from, 'utf-8')
message['To'] = Header(row["email"], 'utf-8')
subject = tema
message['Subject'] = Header(subject, 'utf-8')
text_to_send = 'login: '+row["username"]+' '+'password: '+row["password"]
#print(text_to_send)
messageText = MIMEText(text_to_send, 'plain', 'utf-8')
message.attach(messageText)
try:
with open(self.att_file_name, "rb") as fh:
data = fh.read()
attachment = MIMEBase('application', "octet-stream")
attachment.set_payload(data)
encoders.encode_base64(attachment)
attachment.add_header('Content-Disposition', "attachment; filename= %s" % os.path.basename(self.att_file_name))
message.attach(attachment)
except IOError:
print("Error opening attachment file %s" % self.att_file_name)
s.sendmail(addr_from, row["email"], message.as_string()) # вот тут выдает 501
s.quit()
Вот вывод debug отправки сообщений:
send: 'ehlo xx.xx.xxx.xxx.in-addr.arpa\r\n'
reply: b'250-mail.rambler.ru\r\n'
reply: b'250-SIZE 104857600\r\n'
reply: b'250-ENHANCEDSTATUSCODES\r\n'
reply: b'250-8BITMIME\r\n'
reply: b'250 AUTH PLAIN LOGIN\r\n'
reply: retcode (250); Msg: b'mail.rambler.ru\nSIZE 104857600\nENHANCEDSTATUSCODES\n8BITMIME\nAUTH PLAIN LOGIN'
send: 'ehlo [email protected]\r\n'
reply: b'250-mail.rambler.ru\r\n'
reply: b'250-SIZE 104857600\r\n'
reply: b'250-ENHANCEDSTATUSCODES\r\n'
reply: b'250-8BITMIME\r\n'
reply: b'250 AUTH PLAIN LOGIN\r\n'
reply: retcode (250); Msg: b'mail.rambler.ru\nSIZE 104857600\nENHANCEDSTATUSCODES\n8BITMIME\nAUTH PLAIN LOGIN'
send: 'AUTH PLAIN AHZzaS5tdmQuY291cnNlAEVnaGZka3R5YnQwMQ==\r\n'
reply: b'235 2.0.0 OK\r\n'
reply: retcode (235); Msg: b'2.0.0 OK'
send: 'mail FROM:<[email protected]> size=10920\r\n'
reply: b'250 2.1.0 Ok\r\n'
reply: retcode (250); Msg: b'2.1.0 Ok'
send: 'rcpt TO:<[email protected]>\r\n'
reply: b'501 5.5.2 <xxxx.xxx.xxxxxx?rambler.ru>: Helo command rejected: Invalid name\r\n'
reply: retcode (501); Msg: b'5.5.2 <xxx.xxx.xxxxxx?rambler.ru>: Helo command rejected: Invalid name'
send: 'rset\r\n'
reply: b'250 2.0.0 Ok\r\n'
reply: retcode (250); Msg: b'2.0.0 Ok'
Traceback (most recent call last):
File "/xxxx/xxxxxxxxxxxx/PycharmProjects/send_mail/main.py", line 68, in send_email
s.sendmail('[email protected]', row["email"], message.as_string())
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/smtplib.py", line 901, in sendmail
raise SMTPRecipientsRefused(senderrs)
smtplib.SMTPRecipientsRefused: {'[email protected]': (501, b'5.5.2 <xxx.xxx.xxxxxx?rambler.ru>: Helo command rejected: Invalid name')}
sendmail в адрес отправителя вставляет ? , хотя я в функцию передаю правильный адрес отправителя.
В чем может быть дело?