maralc Postado Março 26, 2009 Denunciar Share Postado Março 26, 2009 Pessoal,eu tenho o seguinte código:#! /usr/bin/env python# coding: latin-1import sys,datetime,time,os#########################################import smtplibfrom email.MIMEMultipart import MIMEMultipartfrom email.MIMEBase import MIMEBasefrom email.MIMEText import MIMETextfrom email.Utils import COMMASPACE, formatdatefrom email import Encoders########################################Função emaildef sendMail(to,subject, text, files=[],Cc=[],server=smtp.embratel.com.br"): assert type(to)==list assert type(Cc)==list assert type(files)==list COMMASPACE = ', ' fro = "Teste <teste@teste.com.br>" msgRoot = MIMEMultipart() msgRoot['From] = fro msgRoot['To'] = COMMASPACE.join(to) msgRoot['Cc'] = COMMASPACE.join(Cc) msgRoot['Date'] = formatdate(localtime=True) msgRoot['Subject'] = subject msgRoot.preamble = 'Esta mensagem é Multi-partes no formato MIME.' msgAlternative = MIMEMultipart('alternative') msgRoot.attach(msgAlternative) #msgRoot.attach( MIMEText(text) ) msgText = MIMEText('Essa é uma mensagem alternativa de texto comum.') msgAlternative.attach(msgText) msgText = MIMEText(text, 'html') msgAlternative.attach(msgText) for file in files: part = MIMEBase('application', "octet-stream") part.set_payload( open(file,"rb").read() ) Encoders.encode_base64(part) part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(file)) msgRoot.attach(part) smtp = smtplib.SMTP(server) smtp.sendmail(fro, to, msgRoot.as_string() ) smtp.close()#inicio do programatoaddrs = sys.argv[1] #Destinosubject = sys.argv[2] #Assuntomsg = sys.argv[3]sendMail([toaddrs],subject,msg)print "Email enviado"Funciona bem, porém quando eu coloco mais de um email ele só envia pro primeiro. como resolvo isso?eu digito no shel desse jeito: ./mail 'para@teste.com.br, para2@teste.com.br' 'teste' 'texto' Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Francisco Rodrigues Postado Março 27, 2009 Denunciar Share Postado Março 27, 2009 Acredito que para você enviar para vários destinatários, você tenha q colocar cada email entre <>Ao invés de 'para@teste.com.br, para2@teste.com.br', tente '<para@teste.com.br>, <para2@teste.com.br>'Outra sugestão: você também poderia enviar um email por vez, criando uma lista de emails (com um comando "split", rachando por vírgulas) e iterando em cada email.AT+ :rolleyes: Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
maralc
Pessoal,
eu tenho o seguinte código:
#! /usr/bin/env python
# coding: latin-1
import sys,datetime,time,os
#########################################
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.Utils import COMMASPACE, formatdate
from email import Encoders
#######################################
#Função email
def sendMail(to,subject, text, files=[],Cc=[],server=smtp.embratel.com.br"):
assert type(to)==list
assert type(Cc)==list
assert type(files)==list
COMMASPACE = ', '
fro = "Teste <teste@teste.com.br>"
msgRoot = MIMEMultipart()
msgRoot['From] = fro
msgRoot['To'] = COMMASPACE.join(to)
msgRoot['Cc'] = COMMASPACE.join(Cc)
msgRoot['Date'] = formatdate(localtime=True)
msgRoot['Subject'] = subject
msgRoot.preamble = 'Esta mensagem é Multi-partes no formato MIME.'
msgAlternative = MIMEMultipart('alternative')
msgRoot.attach(msgAlternative)
#msgRoot.attach( MIMEText(text) )
msgText = MIMEText('Essa é uma mensagem alternativa de texto comum.')
msgAlternative.attach(msgText)
msgText = MIMEText(text, 'html')
msgAlternative.attach(msgText)
for file in files:
part = MIMEBase('application', "octet-stream")
part.set_payload( open(file,"rb").read() )
Encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="%s"'
% os.path.basename(file))
msgRoot.attach(part)
smtp = smtplib.SMTP(server)
smtp.sendmail(fro, to, msgRoot.as_string() )
smtp.close()
#inicio do programa
toaddrs = sys.argv[1] #Destino
subject = sys.argv[2] #Assunto
msg = sys.argv[3]
sendMail([toaddrs],subject,msg)
print "Email enviado"
Funciona bem, porém quando eu coloco mais de um email ele só envia pro primeiro. como resolvo isso?
eu digito no shel desse jeito: ./mail 'para@teste.com.br, para2@teste.com.br' 'teste' 'texto'
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.