Попытка отправить электронное письмо с вложением через Gmail API с помощью Python.
При отправке электронного письма без вложения все работает нормально, но как только я добавляю файл PDF, Google возвращает меня "[WinError 10054]Существующее соединение было принудительно закрыто удаленным хостом ".
Кто-нибудь знает, почему это происходит?
Мой код:
import base64
from email.mime.multipart import MIMEMultipart
from oauth2client import file, client, tools
from googleapiclient.discovery import build
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from httplib2 import Http
def auth(scopes):
store = file.Storage('token.json')
creds = store.get()
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('credentials.json', scopes)
creds = tools.run_flow(flow, store)
service = build('gmail', 'v1', http=creds.authorize(Http()))
return service
def create_mess():
message = MIMEText('Message text')
message['to'] = 'to@gmail.com'
message['from'] = 'from@domain.com'
message['subject'] = 'Subject'
return {'raw': base64.urlsafe_b64encode(message.as_string().encode()).decode()}
def create_mess_att():
message = MIMEMultipart()
message['to'] = 'to@gmail.com'
message['from'] = 'from@domain.com'
message['subject'] = 'Subject'
msg = MIMEText('Message text')
message.attach(msg)
fp = open('TestFile.pdf', 'rb')
msg = MIMEBase('application', 'octet-stream')
msg.set_payload(fp.read())
fp.close()
filename = 'TestFile.pdf'
msg.add_header('Content-Disposition', 'attachment', filename=filename)
message.attach(msg)
return {'raw': base64.urlsafe_b64encode(message.as_string().encode()).decode()}
def send_mess(message):
service.users().messages().send(userId='me', body=message).execute()
Эта часть работает:
service = auth('https://www.googleapis.com/auth/gmail.modify')
message = create_mess()
send_mess(message)
Эта часть не:
service = auth('https://www.googleapis.com/auth/gmail.modify')
message = create_mess_att()
send_mess(message)
ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host
Заранее спасибо!