如何发送包含数组内部电子邮件的电子邮件?在 python 上使用 smptlib
How can I send an email with the email inside of an array? with smptlib on python
我是 Whosebug 的新手,中级 python 学生,我编写了一个脚本来自动发送我的作业 90%,但是 它不会进入尝试函数来发送电子邮件 ,我认为代码不理解数组,我使用了一些 mime/email lib 和 smptlib,我最大的困难是用数组中的电子邮件发送电子邮件,我想数组 [subject] 中的电子邮件,但它没有用(我的不和谐是 > gOld#3140):
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
import mimetypes
class web():
def __init__(self):
# Criando as vars necessárias
from_email = input('Write your email: ')
password = input('Write your email password: ')
subject_matter = input('Write the email subject matter: ')
filedir = input('Write the dir of the archive to attach: ')
# Setting up the email layout
msg = MIMEMultipart()
msg['From'] = from_email
msg['Subject'] = subject_matter
message = (f"""
Hello, here are the drive homeworks:
""") # Edit this ^
# i
msg.attach(MIMEText(message))
attachment = open(filedir, "rb")
mime_attach = mimetypes.guess_type(filedir)[0].split('/')
part = MIMEBase(mime_attach[0], mime_attach[1])
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', "attachment; filename= %s" % filedir)
msg_text = MIMEText(message, 'html')
msg.attach(part)
# Trying to send:
filename2 = filedir.split("/")[-1].split(".")[0]
subjects_mails = {
'sociology': '@gmail.com',
'biology': '@gmail.com',
'geography': '@gmail.com',
'mathematics': '@gmail.com',
'science': '@gmail.com',
'philosophy': '@gmail.com',
'physical_education': '@gmail.com',
'history': '@gmail.com',
'portuguese': '@gmail.com',
'informatic': '@gmail.com',
'physics': '@gmail.com',
'chemical': '@gmail.com',
'life_project': '@gmail.com',
}
subject = input('Write your subject that you wanna to send an email: ')
subject_recmail = ''
for subject in subjects_mails.keys():
if subject == subjects_mails and filename2 == subject:
try:
subject_recmail = subjects_mails.get(subject)
server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
server.ehlo()
server.login(from_email, password)
server.sendmail(from_email, subject_recmail, msg.as_string())
print("Email has been sent to ", subject_recmail)
server.quit()
except Exception as err:
print(err)
if __name__ == '__main__':
works = web()
Code ran > image link
线路有一个问题
if subject == subjects_mails and filename2 == subject:
您正在比较主题(键)和 subjects_mails(字典),因此在“==”运算符下这些东西永远不会相等。
问题出在for函数和if里面,我改成:
for key in subjects_mail.keys():
if key == subject:
try:
subject_recmail = subjects_mails.get(subject)
server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
server.ehlo()
server.login(from_email, password)
server.sendmail(from_email, subject_recmail, msg.as_string())
print("Email has been sent to ", subject_recmail)
server.quit()
except Exception as err:
print(err)
我是 Whosebug 的新手,中级 python 学生,我编写了一个脚本来自动发送我的作业 90%,但是 它不会进入尝试函数来发送电子邮件 ,我认为代码不理解数组,我使用了一些 mime/email lib 和 smptlib,我最大的困难是用数组中的电子邮件发送电子邮件,我想数组 [subject] 中的电子邮件,但它没有用(我的不和谐是 > gOld#3140):
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
import mimetypes
class web():
def __init__(self):
# Criando as vars necessárias
from_email = input('Write your email: ')
password = input('Write your email password: ')
subject_matter = input('Write the email subject matter: ')
filedir = input('Write the dir of the archive to attach: ')
# Setting up the email layout
msg = MIMEMultipart()
msg['From'] = from_email
msg['Subject'] = subject_matter
message = (f"""
Hello, here are the drive homeworks:
""") # Edit this ^
# i
msg.attach(MIMEText(message))
attachment = open(filedir, "rb")
mime_attach = mimetypes.guess_type(filedir)[0].split('/')
part = MIMEBase(mime_attach[0], mime_attach[1])
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', "attachment; filename= %s" % filedir)
msg_text = MIMEText(message, 'html')
msg.attach(part)
# Trying to send:
filename2 = filedir.split("/")[-1].split(".")[0]
subjects_mails = {
'sociology': '@gmail.com',
'biology': '@gmail.com',
'geography': '@gmail.com',
'mathematics': '@gmail.com',
'science': '@gmail.com',
'philosophy': '@gmail.com',
'physical_education': '@gmail.com',
'history': '@gmail.com',
'portuguese': '@gmail.com',
'informatic': '@gmail.com',
'physics': '@gmail.com',
'chemical': '@gmail.com',
'life_project': '@gmail.com',
}
subject = input('Write your subject that you wanna to send an email: ')
subject_recmail = ''
for subject in subjects_mails.keys():
if subject == subjects_mails and filename2 == subject:
try:
subject_recmail = subjects_mails.get(subject)
server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
server.ehlo()
server.login(from_email, password)
server.sendmail(from_email, subject_recmail, msg.as_string())
print("Email has been sent to ", subject_recmail)
server.quit()
except Exception as err:
print(err)
if __name__ == '__main__':
works = web()
Code ran > image link
线路有一个问题
if subject == subjects_mails and filename2 == subject:
您正在比较主题(键)和 subjects_mails(字典),因此在“==”运算符下这些东西永远不会相等。
问题出在for函数和if里面,我改成:
for key in subjects_mail.keys():
if key == subject:
try:
subject_recmail = subjects_mails.get(subject)
server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
server.ehlo()
server.login(from_email, password)
server.sendmail(from_email, subject_recmail, msg.as_string())
print("Email has been sent to ", subject_recmail)
server.quit()
except Exception as err:
print(err)