Script de mail em python

Iniciado por Anonymous, 05 de Abril , 2006, 06:08:39 AM

tópico anterior - próximo tópico

0 Membros e 1 Visitante estão vendo este tópico.

Anonymous

Heys! Escrevi este script em python para enviar uma determinada mensagem de email para uma lista de endereços de mail, mas penso que o script tem um problema a nivel de autentificação, penso que seja  na forma como eh enviado o login e a senha... Já agora alguem conheçe algum server smtp que nao seja preciso fazer login para enviar mail??

#!/usr/bin/python

import smtplib
import sys

def inicio():
print """
        **********************************************
        **********************************************
        ***********Crypthief@gmail.com****************
        **********************************************
        **********************************************
        """

lista()


def lista():

print ""
print "Coloque a lista de mails no mesmo directorio do script com nome de lista.txt"

        try:
        lista=open("lista.txt", 'r+w')
print "A lista e composta por:" + `lista`
servidorsmtp()

    except IOError:

print "O ficheiro nao foi encontrado..."
sys.exit()


def servidorsmtp():

print "Insira o endereco do servidor SMTP:"
        servidor=raw_input("--->")
        print "O servidor necessita de autentificacao?(y/n)?"
    autentificacao=raw_input("--->")
    if autentificacao=="y":

try:
    s=smtplib.SMTP(servidor)
    print "O servidor escolhido foi:" + `servidor`
    print "Conectando..."

    try:
                servidor.connect(servidor,25)
                print "Insira o utilizador"
                utilizador=raw_input("--->")
                print "Insira a senha:"
                senha=raw_input("--->")
                s.login(utilizador,senha)
                msg()

            except SMTPServerDisconnected:

                print "Erro na autentificacao"
sys.exit()

        except IOError:

    print "Servidor nao encontrado"
    inicio()

elif autentificacao=="n":

        try:
                print "O servidor escolhido foi:" + `servidor`
                servidor.connect(servidor,25)

        except SMTPServerDisconnected:

        print "Ocorreu um erro..."
        servidorsmtp()
    else:
print "Tem de escolher entre y/n"
        servidorsmtp()



def msg():

print "Coloque o mensagem.txt no mesmo directorio que este script"
print "Insira o remetente do mail:"
sender=raw_input("--->")
print "O remetente e:" + `remetente`

try:
mensagem=open('mensagem.txt', 'r').read()
print "Mensagem carregada..."
print ""

try:
s.sendmail(sender, lista, mensagem)

except SMTPException:

print "Problema no envio do mail."

except IOError:

print "File nao encontrado"

inicio()



Abraços,

Kratos

#1
Interessante sabem que vc coda em Python,

Ta ai um exemplo de envio de e-mail sem nenhum erro de autenticação:


# -*- coding: cp1252 -*-
# Send-mail - by Kratos
# Programador: Kratos
# Plataforma: Windows XP/ME/2000


import smtplib

try:
  msg = {}
  msg['From']="seuemail@servidor.com.br"
  msg['To']="destinatario@servidor.com.br"
  msg['Subject'] = "Assunto"
  msg['Mensagem'] = open('MsgMailTxt.txt', 'r').read() # No mesmo diretório/Pasta

  servidor = smtplib.SMTP()           # Cria um objeto SMTP

  smtpserver = "smtp.servidor.com.br"     # String com o nome do servidor
  print"Conectando..."

  servidor.connect(smtpserver,25)     # Conecta-se ao servidor
  print"Autenticando..."

  servidor.login("login","senha")  # login e senha
  print"Enviando..."

  texto = "From: %s\r\nTo: %s\r\nSubject: %s\r\n%s" % (msg['From'], msg['To'], msg['Subject'], msg['Mensagem'])

  servidor.sendmail(msg['From'], msg['To'], texto)
  print"Desconectando..."

  servidor.quit()                     # Desconecta-se do servidor
except Exception, e:
  print"Erro: %s" % e                 # Caso tenha ocorrido algum erro
else:
  print"Concluido!"                   # Caso não tenha ocorrido erro algum


Expero ter ajudado aew!!

Codei um send-mail com Interface Grafica,
Despois eu posto aqui o source pra vcs estudarem!!!

EDIT:

Para vc reutilizar o programa sem precisar inicialo novamente eu coloquei um loop nele:


# -*- coding: cp1252 -*-
# Send-mail - by Kratos
# Programador: Kratos
# Plataforma: Windows XP/ME/2000

import smtplib

def send():
try:
msg = {}
msg['From']="remetente@servidor.com.br"
msg['To']="destinatario@srvidorl.com"
msg['Subject'] = "Assunto"
msg['Mensagem'] = open('MsgMailTxt.txt', 'r').read() # Crie um

servidor = smtplib.SMTP()           # Cria um objeto SMTP

smtpserver = "smtp.servidor.com.br"     # nome do servidor
print"Conectando..."

servidor.connect(smtpserver,25)     # Conecta-se ao servidor
print"Autenticando..."

servidor.login("login","senha")  # login e senha
print"Enviando..."

texto = "From: %s\r\nTo: %s\r\nSubject: %s\r\n%s" % (msg['From'], msg['To'], msg['Subject'], msg['Mensagem'])

servidor.sendmail(msg['From'], msg['To'], texto)
print"Desconectando..."

servidor.quit()      # Desconecta-se do servidor
except Exception, e:
print"Erro: %s" % e   # Caso tenha ocorrido algum erro
else:
print"Concluido!\n"         # Caso não tenha ocorrido erro algum

def main():
reload = "S" # Variavel
while reload == "S": # Loop de repetiçao
send()
reload = raw_input("\nDeseja enviar outro email (S/N): ")

main()



Tipo, em python se vc não colocar um loop ele fecha a janela mesmo que tenha tido sucesso na operação!!

Vlw!
::: "A vida é bela pra quem sabe curtir" :::