acho que da para entender, se tiver alguma duvida é so perguntar.
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
print('Robo iniciado...')
# email de envio e lista de contatos
from_address = ''
pass_user = ''
to_address = ''
# iniciando a mensagem
msg = MIMEMultipart()
print('Criando mensagem...')
msg['From'] = from_address
msg['To'] = to_address
msg['Subject'] = 'Teste com Python'
# criando corpo da mensagem
body = 'Teste de automação com python.....:'
msg.attach(MIMEText(body, 'plain'))
# configurando anexo
filename = 'arquivo.pdf'
attach = open('arquivo.pdf', 'rb')
# criando arquivo e setando o carregamento
file = MIMEBase('application', 'octet-stream')
file.set_payload((attach).read())
# codificando com base64
encoders.encode_base64(file)
# corpo de anexo exigido pelo email
file.add_header('Content-Disposition', f'attachment; filename={filename}')
# coloando o anexo na mensagem
msg.attach(file)
# servidor SMTP
data_smtp = smtplib.SMTP('
smtp.gmail.com', 587)
print('Conectando para envio...')
# iniciando conexão segura via ttls
data_smtp.starttls()
# realizando login no email de envio
data_smtp.login(from_address, pass_user)
# convertendo a mensagem para string
message = msg.as_string()
# enviando email
data_smtp.sendmail(from_address, to_address, message)
data_smtp.quit()
print('Mensagem enviada!')