Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > Sendmail with many attach and recipients

Reply
Thread Tools

Sendmail with many attach and recipients

 
 
fernandestb@gmail.com
Guest
Posts: n/a
 
      02-03-2005
Here, my code of sendmail
If Somebody had a doubt please contact me?


# -*- coding: cp1252 -*-
## Faz o import das bibliotecas necessarias.
import mimetypes
import os.path
import smtplib
import sys

from email.Encoders import encode_base64
from email.MIMEAudio import MIMEAudio
from email.MIMEBase import MIMEBase
from email.MIMEImage import MIMEImage
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText

## Funcao para criar lista baseada nos argumentos
## Isto vai ser utilizado para os destinatarios
## como para os arquivos anexados.
def cria_lista(arg):
lista=[]
for elemento in arg.split():
lista.append(elemento)

return lista


##Faz o anexo dos arquivos a mensagem
##os parametros é o caminho completo do arquivo e o nome do arquivo
##para fazer o anexo.
def getAttachment(path, filename):
ctype, encoding = mimetypes.guess_type(path)
if ctype is None or encoding is not None:
ctype = 'application/octet-stream'
maintype, subtype = ctype.split('/', 1)
fp = open(path, 'rb')
if maintype == 'text':
attach = MIMEText(fp.read(),_subtype=subtype,
_charset="iso-8859-15")
elif maintype == 'message':
attach = email.message_from_file(fp)
elif maintype == 'image':
attach = MIMEImage(fp.read(),_subtype=subtype)
elif maintype == 'audio':
attach = MIMEAudio(fp.read(),_subtype=subtype)
else:
print maintype, subtype
attach = MIMEBase(maintype, subtype)
attach.set_payload(fp.read())
encode_base64(attach)
fp.close
attach.add_header('Content-Disposition',
'attachment',filename=filename)
return attach

## Verifica se o primeiro parametro passado para o programa e --h
## chama o help.
if sys.argv[1] == '--h' :
print 'sendmail <servidor de email> <From> <To> [Assunto]
[Mensagem] [Anexos] [Arquivo de log]\n'
print '<servidor>: Servidor SMTP de email.\n'
print '<From>: Quem esta enviando o email. (Ex.: "")
\n '
print '<To>: lista de destinatarios do email. (Ex.:
" ") \n'
print '[Assunto]: Assunto do email \n'
print '[Mensagem]: Mesangem do corpo do email \n'
print '[Anexos]: Lista de arquivos anexos
(Ex:"C:\\relatorios\\rel1.pdf C:\\relatorios\\rel2.pdf") \n'
print '[Arquivo de log] Diretório onde será gerado o log da
aplicação ex: "C:\\temp\\sendmail.log"'
print 'Ex: sendmail "smtp.fx.com.br" ""
" " "teste de email"
"isto e apenas um teste" "C:\\temp\\rel2.pdf C:\\temp\\rel1.pdf"
"C:\\temp\\sendmail.log" \n'
print 'Parâmetros entre chaves[] são opcionais, os outros
parâmetros são obrigatórios'

else:
msg = MIMEMultipart()
## o 1º parametro e o servidor SMTP.
servidor_smtp=sys.argv[1]
## o 2º parametro e quem esta enviando o anexo.
msg['From']=sys.argv[2]
## o 3º parametro e a lista de destinatários.
toaddrs=cria_lista(sys.argv[3])
## o 4º parametro e o assunto da mensagem.
msg['Subject'] = sys.argv[4]
## o 5º parametro e a mensagem do corpo do email.
mensagem=sys.argv[5]
## o 6º parametro cria a lista de arquivos.
arquivos=cria_lista(sys.argv[6])
## o 7º parametro especifica onde será gerado o arquivo de log
dir_log=sys.argv[7]
##Verifica se é vazio o arquivo
if dir_log == "":
dir_log="C:\\temp\\sendmail.log"

## executa um loop na lista de arquivos
## e chama a funcao que anexa os arquivos.
for arq in arquivos:
path = arq
filename = os.path.basename(arq)
attach = getAttachment(path, filename)
msg.attach(attach)

## texto do corpo do email que sera anexado.
text=MIMEText(mensagem,_charset="iso-8859-15")
msg.attach(text)

## Busca o servidor de SMTP e faz a conexao.
try:
server = smtplib.SMTP(servidor_smtp)
## Faz o envio do email.
server.sendmail(msg['From'],toaddrs,msg.as_string())
## Fecha a conexão com o servidor.
server.quit()

except Exception, e:
arq=open(dir_log,'a')
print >> arq, "Falha no envio da mensagem de email, não foi
possivel a conexão ao servidor %s" % servidor_smtp
arq.close
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Re: [sendmail,perl] How to catch a mailer error [perl script as sendmail.cf mailer] Andrzej Adam Filip Perl 0 03-31-2008 09:24 PM
Unable to load tag handler class "com.cj.smtp.Sendmail" for tag "send:Sendmail" sugapablo Java 0 09-21-2007 01:41 PM
attach agent to applet running in firefox (attach api) craiget@gmail.com Java 0 06-14-2007 12:28 AM
Sendmail with many attach and recipients Tim Williams Python 0 02-03-2005 05:22 PM
Sendmail BCC with multiple recipients Erica Coffin Perl Misc 4 10-07-2003 01:31 AM



Advertisments
 



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57