GUI приложение должно посылать мейл с прикреплённым файлом, но у меня выходит ошибка
import os
import smtplib
import tkinter as tk
from tkinter import *
from tkinter.filedialog import askopenfilename
from tkinter import filedialog
os.path.commonpath
windows = tk.Tk()
windows.title("Automatic Send E-mail with pdf file") # program title
windows.geometry('500x400') # size of program
windows.sourceFile = ''
lbl = Label(windows, text="Enter Your E-Mail address : ")
lbl.grid(column=0, row=1)
def enter_login(): #Enter login by mail here
l = password.get() #get login from entry
print(l)
mail_login = StringVar() #Login variable
loginEntry = Entry(windows, textvariable=mail_login)
loginEntry.grid(column=0, row=2)
lbl = Label(windows, text="Enter Your password : ")
lbl.grid(column=0, row=3)
def enter_password(): #Enter password by mail here
p = password.get() #get password from entry
print(p)
mail_password = StringVar() #Password variable
passEntry = Entry(windows, textvariable=mail_password, show='*')
passEntry.grid(column=0, row=4)
lbl = Label(windows, text="Enter Recipient E-Mail : ")
lbl.grid(column=0, row=7)
def enter_recipient_login(): #Enter login by mail here
r_l = password.get() #get login from entry
print(r_l)
recipient_login = StringVar() #Login variable
loginEntry = Entry(windows, textvariable=recipient_login)
loginEntry.grid(column=0, row=8)
lbl = Label(windows, text="Subject : ")
lbl.grid(column=0, row=9)
def enter_subject(): #Enter Subject of mail
subject = password.get() #get subject from entry
print(subject)
subject_theme = StringVar() #Login variable
loginEntry = Entry(windows, textvariable=subject_theme)
loginEntry.grid(column=0, row=10)
lbl = Label(windows, text="Body of mail : ")
lbl.grid(column=0, row=11)
def enter_body(): #Enter Subject of mail
body = password.get() #get subject from entry
print(body)
body_text = StringVar() #Login variable
loginEntry = Entry(windows, textvariable=body_text)
loginEntry.grid(column=0, row=12)
def chooseFile():
windows.sourceFile = filedialog.askopenfilename(parent=windows, initialdir= "/", title='Please select a file')
b_chooseFile = tk.Button(windows, text = "Choose File", width = 20, height = 3, command = chooseFile)
b_chooseFile.place(x = 80,y = 120)
# b_chooseFile.grid(padx=170, pady=170)
b_chooseFile.grid(column=0, row=15)
pathfile = print(windows.sourceFile)
def send_attachment(pathfile):
filename = ''
attachment = open(pathfile)
p = MIMEBase('application', 'octet-stream')
p.set_payload((attachment).read())
encoders.encode_base64(p)
p.add_header('Content-Disposition', "attachment; filename= %s" % filename)
msg.attach(p)
b_sendattachment = Button(windows, text="Send attachment", width = 20, height = 3, command = send_attachment)
b_sendattachment.place(x = 100,y = 115)
# b_sendattachement.grid(padx=100, pady=100)
b_sendattachment.grid(column=0, row=18)
windows.mainloop()
send_attachment(pathfile)
# windows.columnconfigure(0, weight=1) # Центрирует поля ввода
# windows.rowconfigure(0, weight=1) # Центрирует поля ввода
# Добавляем необходимые подклассы - MIME-типы
from email.mime.multipart import MIMEMultipart # Многокомпонентный объект
from email.mime.base import MIMEBase
from email.mime.text import MIMEText # Текст/HTML
from email.mime.image import MIMEImage # Изображения
from email import encoders
addr_from = mail_login # Destination
addr_to = recipient_login # Recipient
password = mail_password # Пароль
msg = MIMEMultipart() # Создаем сообщение
msg['From'] = addr_from # Адресат
msg['To'] = addr_to # Получатель
msg['Subject'] = subject_theme # Тема сообщения
body = body_text # Добавляем в сообщение текст
msg.attach(MIMEText(body, 'plain'))
server = smtplib.SMTP_SSL('smtp.yandex.ru', 465) # Создаем объект SMTP
#server.starttls() # Начинаем шифрованный обмен по TLS
server.login(addr_from, password) # Получаем доступ
server.send_message(msg) # Отправляем сообщение server.quit()
windows.mainloop()
Выдаёт ошибку когда нажимаю на "Send attachment"
"TypeError: send_attachment() missing 1 required positional argument: 'pathfile'"
Далее выходит вторая ошибка -
"File "D:\My_Files\Python_Projects\autosend_mail\send1.py", line 96, in <module>
send_attachment(pathfile)
File "D:\My_Files\Python_Projects\autosend_mail\send1.py", line 82, in send_attachment
attachment = open(pathfile)
TypeError: expected str, bytes or os.PathLike object, not NoneType".