2016-09-26 3 views
0

Я делаю программу, которая автоматически отвечает на письма в моей учетной записи GMail. Я могу отправлять письма просто отлично, но я не могу ответить на них. Я использую smtplib.Я могу отправлять электронные письма, но не отвечает smtplib и GMail

Это код, который я использую для отправки простые письма (предположим, что [email protected] мой личный адрес электронной почты):

# params contains the header data of the original email. 
print smtpserver.sendmail(
    "Name Surname <[email protected]>", 
    str(params["From"]), 
    msg 
) 

Это то, что я использую для отправки ответов:

print smtpserver.sendmail(
    "Giul Mus <[email protected]>", 
    str(params["From"]), 
    msg, 
    { 
     "In-Reply-To": params["Message-ID"], 
     "Message-ID": email.utils.make_msgid(), 
     "References": params["Message-ID"], 
     "Subject": "Re: " + params["Subject"] 
    } 
) 

Прежние произведения правильно, и я вижу почту, отправленную в моем почтовом ящике; однако последний не работает с этой трассировкой:

Traceback (most recent call last): 
    File "imap.py", line 65, in <module> 
    imapprocess(imapdata[0].split(" ")) 
    File "imap.py", line 55, in imapprocess 
    raise e 
smtplib.SMTPSenderRefused: (555, '5.5.2 Syntax error. o2sm22774327wjo.3 - gsmtp', 'Name Surname <[email protected]>') 

Почему это происходит? Я видел this, вопрос, но это не помогло (я попробовал отправить его от "Foo Bar <[email protected]>", "<[email protected]>" или до "<[email protected]>", но ни один из них не работал).

+0

Согласно [док] (https://docs.python.org/2/library/smtplib.html#smtplib.SMTP.sendmail), четвертый аргумент "mail_options" , или «список параметров ESMTP (например, 8bitmime), которые будут использоваться в командах MAIL FROM». Это не то, что вы проходите. –

+0

@ Robᵩ Что я должен передать вместо 'mail_options', и где мне передать свои параметры? Извинения, у меня нет опыта работы с SMTP и почтовыми протоколами. –

+0

Вы, вероятно, ничего не должны пропускать в mail_options. Список возможных значений приведен здесь: https://en.wikipedia.org/wiki/Extended_SMTP#Extensions, но вы, вероятно, не нуждаетесь ни в одном из них. –

ответ

0

Параметры не должны передаваться в качестве аргумента, но по какой-либо причине они фактически принадлежат к сообщению. Ниже приведен пример:

msg = MIMEMultipart("mixed") 
body = MIMEMultipart("alternative") 
body.attach(MIMEText(text, "plain")) 
body.attach(MIMEText("<html>" + text + "</html>", "html")) 
msg.attach(body) 
msg["In-Reply-To"] = params["Message-ID"] 
msg["Message-ID"] = email.utils.make_msgid() 
msg["References"] = params["Message-ID"] 
msg["Subject"] = "Re: " + params["Subject"] 
destination = msg["To"] = params["Reply-To"] or params["From"] 
smtpserver.sendmail(
    "<[email protected]>", 
    destination, 
    msg.as_string() 
)