从Python选项卡发送每个记录的Python

2024-04-23 08:36:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我可以使用MYSQL数据库从python发送电子邮件。在MYSQL数据库中可以找到from地址、to地址等

它不允许我在数据库中有多行。我想实现的是,能够向每一行的每个人发送一封邮件,每一行都有自己的pdf路径等等

如何遍历表并逐行发送电子邮件?在

Code Below:

    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 mysql.connector
    mydb = mysql.connector.connect(
      host="localhost",
      user="root",
      passwd="password",      database="maindb"    )
    mycursor = mydb.cursor()
    mycursor.execute("SELECT Email FROM Email")
    emailaddr = str(mycursor.fetchone()[0])
    mycursor.execute("SELECT Subject FROM Email")
    subject = str(mycursor.fetchone()[0])
    mycursor.execute("SELECT Message FROM Email")
    message = str(mycursor.fetchone()[0])
    mycursor.execute("SELECT LinkToPdf FROM Email")
    linktopdf = str(mycursor.fetchone()[0])
    mycursor.execute("SELECT AttachName FROM Email")
    attachname = str(mycursor.fetchone()[0])
    mycursor.execute("SELECT FromAddr FROM Email")
    fromaddr = str(mycursor.fetchone()[0])
    mycursor.execute("SELECT UserName FROM Email")
    username = str(mycursor.fetchone()[0])    
    mycursor.execute("SELECT PassWord FROM Email")
    password = str(mycursor.fetchone()[0])
    mycursor.execute("SELECT Port FROM Email")
    port = str(mycursor.fetchone()[0])
    mycursor.execute("SELECT HostName FROM Email")
    hostname = str(mycursor.fetchone()[0])
    print(hostname)
    toaddr = "%s"% emailaddr
    msg = MIMEMultipart()
    msg['From'] = fromaddr
    msg['To'] = "%s"%emailaddr
    msg['Subject'] = "%s"%subject
    body = "%s"%message
    msg.attach(MIMEText(body, 'plain'))
    filename = "%s"%attachname
    attachment = open("%s"%linktopdf + "%s"%attachname , "rb")
    part = MIMEBase('application', 'octet-stream')
    part.set_payload((attachment).read())
    encoders.encode_base64(part)
    part.add_header('Content-Disposition', "attachment; filename= %s" % filename)
    msg.attach(part)
    server = smtplib.SMTP('%s'%hostname, port)
    server.starttls()
    server.login("%s"%username, "%s"%password)
    text = msg.as_string()
    server.sendmail(fromaddr, toaddr, text)
    server.quit()

Tags: fromimport数据库executeserveremailmsgselect
1条回答
网友
1楼 · 发布于 2024-04-23 08:36:51

一次可以选择多个字段。示例:选择AttachName、FromAddr、UserName、PassWord、Port FROM Email。在

也可以通过检查结果来循环。在

# other code
result = mycursor.fetchone()
while result:
    # your code to
    # process the result
    result = mycursor.fetchone()

相关问题 更多 >