Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用python为从数据库获取的值发送电子邮件_Python_Mysql_Smtplib - Fatal编程技术网

如何用python为从数据库获取的值发送电子邮件

如何用python为从数据库获取的值发送电子邮件,python,mysql,smtplib,Python,Mysql,Smtplib,我正在尝试使用smtplib发送一封电子邮件,以获取从mysql数据库获取的值。以下是代码: db = pymysql.connect('localhost', 'root', 'Gandharv@4me', 'ashmita') cursor = db.cursor() sql_query = "SELECT * FROM employees1 WHERE fname = 'gandharv' " cursor.execute(sql_query) result = cursor.fetch

我正在尝试使用smtplib发送一封电子邮件,以获取从mysql数据库获取的值。以下是代码:

db = pymysql.connect('localhost', 'root', 'Gandharv@4me', 'ashmita')
cursor = db.cursor()

sql_query = "SELECT * FROM employees1 WHERE fname = 'gandharv' "
cursor.execute(sql_query)
result = cursor.fetchall()
for row in result:
        firstname = row[0]
        lastname = row[1]
        role = row[2]
response = """ First Name : {}, Last Name: {}, Role : {} """.format(
        firstname, lastname, role)
mail = smtplib.SMTP('smtp.gmail.com', '587')
content="FirstName: "+firstname+" Lastname: " +lastname + "Role: ",role
mail.ehlo()
mail.starttls()
mail.login('abc@gmail.com', 'myPassword')
mail.sendmail('abc@gmail.com',
                  'bcd@gmail.com', content)
mail.close()
print(response)
如果我使用content=“knsdlkds”,它可以正常工作,但如果我使用content=response或content=“FirstName:”+FirstName+“Lastname:”+Lastname+“Role:”,Role: 它给了我TypeError:应该是字符串或字节之类的对象。
这可以通过强制转换来解决吗?

您在内容变量上有一个输入错误。你能检查一下这对你是否有效吗

HOST="localhost"
USER="root"
USER_PW="Gandharv@4me"
HOST_DB="ashmita"

gandharv = "VALUE_HERE"
sender = 'from@fromdomain.com'
debuglevel = 0

try:
    db = pymysql.connect(HOST, USER, USER_PW, HOST_DB)
    cursor = db.cursor()
    sql_query = "SELECT * FROM employees1 WHERE fname = '{0}' ".format(gandharv)
    cursor.execute(sql_query)
    result = cursor.fetchone()

    # Send Email
    firstname = result[0]
    lastname = result[1]
    role = result[2]
    receivers = ['to@todomain.com']

    response = " First Name : {0}, Last Name: {1}, Role : {2} ".format(firstname, lastname, role)

    try:
        smtp = SMTP()
        smtp.set_debuglevel(debuglevel)
        smtp.connect('YOUR.MAIL.SERVER', 26)
        smtp.login('USERNAME@DOMAIN', 'PASSWORD')
        smtp.sendmail(sender, receivers, response)
        smtp.quit()
        print(response)

    except SMTPException:
        print "Error: unable to send email"

except Exception as e:
    print "Error: {0}".format(e)

您在内容变量上有一个输入错误。你能检查一下这对你是否有效吗

HOST="localhost"
USER="root"
USER_PW="Gandharv@4me"
HOST_DB="ashmita"

gandharv = "VALUE_HERE"
sender = 'from@fromdomain.com'
debuglevel = 0

try:
    db = pymysql.connect(HOST, USER, USER_PW, HOST_DB)
    cursor = db.cursor()
    sql_query = "SELECT * FROM employees1 WHERE fname = '{0}' ".format(gandharv)
    cursor.execute(sql_query)
    result = cursor.fetchone()

    # Send Email
    firstname = result[0]
    lastname = result[1]
    role = result[2]
    receivers = ['to@todomain.com']

    response = " First Name : {0}, Last Name: {1}, Role : {2} ".format(firstname, lastname, role)

    try:
        smtp = SMTP()
        smtp.set_debuglevel(debuglevel)
        smtp.connect('YOUR.MAIL.SERVER', 26)
        smtp.login('USERNAME@DOMAIN', 'PASSWORD')
        smtp.sendmail(sender, receivers, response)
        smtp.quit()
        print(response)

    except SMTPException:
        print "Error: unable to send email"

except Exception as e:
    print "Error: {0}".format(e)

顺便问一下,为什么要使用循环来解析3个字段?你可以使用fetchoneWell,代码运行良好,我可以看到值,但电子邮件部分不起作用;但是您需要更改凭据。等等…顺便问一下,为什么要使用循环来解析3个字段?你可以使用fetchoneWell,代码运行良好,我可以看到值,但电子邮件部分不起作用;但是您需要更改凭据。等等