У меня есть следующий запрос:
cursor.execute("SELECT raddb.StockMinimo.Id, raddb.StockMinimo.Produto, Minimo, Quantidade FROM raddb.StockMinimo LEFT OUTER JOIN raddb.StockProdutos ON raddb.StockProdutos.Id = raddb.StockMinimo.Id WHERE raddb.StockMinimo.Identificacao = '3' AND raddb.StockMinimo.Ativo = '1' AND Quantidade < Minimo AND Minimo > '0'")
myresult = cursor.fetchall()
, который возвращает следующие данные:
Id Produto Minimo Quantidade
93 Fita Adesiva 15mm Transparente (Unid.) 6 3
112 Lápis De Carvão Nº2 (Caixa C/ 12 Unidades) 10 6
160 Saca Agrafes Para Secretária (Unid) 3 1
Затем я делаю for
, чтобы вернуть результаты:
for linha in myresult:
Produto = linha[1]
Minimo = linha[2]
Quantidade = linha[3]
Я отправляю электронное письмо следующим образом:
texto = 'Os seguinte produtos encontram-se com quantidade de stock igual ou inferior ao stock minimo. {} ({}) ({})'.format(
Produto.encode("utf-8"), Quantidade, Minimo)
Проблема в том, что он отправляет электронное письмо для каждой строки, возвращаемой из базы данных. Когда он возвращает 3 строки, он отправляет 3 письма. Я намеревался отправить все строки, возвращенные в запросе, в том же электронном письме.
полный код:
myresult = cursor.fetchall()
for linha in myresult:
Produto = linha[1]
Minimo = linha[2]
Quantidade = linha[3]
if Quantidade <= Minimo:
remetente = 'xxxxxxxxxxx@gmail.com'
senha = 'xxxxxxxxx'
destinatario = ['xxxxxxxx@123.pt']
assunto = 'Stock Papelaria'
texto = 'Os seguinte produtos encontram-se com quantidade de stock igual ou inferior ao stock minimo. Produto: {} Quantidade: {} Minimo: {}'.format(
Produto.encode("utf-8"), Quantidade, Minimo)
msg = '\r\n'.join([
'From: %s' % remetente,
'To: %s' % destinatario,
'Subject: %s' % assunto,
'',
'%s' % texto
])
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()
server.login(remetente,senha)
server.sendmail(remetente, destinatario, msg)
server.quit()