Как отправить электронное письмо с помощью smtplib и MIMEText? - PullRequest
3 голосов
/ 17 июня 2011

Я ищу ответ в течение нескольких дней, и до сих пор я просто не решил свою проблему. Все, что я хочу, это отправить простое сообщение электронной почты из моей программы в случае возникновения ошибки. Я использую сервер Gmail, чтобы сделать это, и он на самом деле отправляет электронную почту, но сообщение электронной почты не появляется. Вот код:

def accept(self):                    
    HOST = 'smtp.gmail.com'
    PORT = '587'
    user = '***********@gmail.com'
    senha = '***********'
    servidor = smtplib.SMTP()
    servidor.connect(HOST, PORT)
    servidor.ehlo()
    servidor.starttls()
    servidor.ehlo()
    servidor.login(user, senha)
    assunto = 'Relatorio de Erro'
    para = '**************@hotmail.com'
    endereco = self.nemail.text()
    de = str(endereco)
    texto = self.message.toPlainText()
    textos = Message(texto)
    corpo = MIMEText(textos)
    corpo['From'] = de
    corpo['To'] = user
    corpo['Subject'] = assunto        
    servidor.set_debuglevel(1)
    servidor.sendmail(user, para, corpo.as_string())        
    servidor.quit

Это вызывает ошибку в MIMEText. Говорит, что не может конвертировать MIMEText в str. Я попробовал другую версию, просто для теста. Отправка простой строки:

def accept(self):                    
    HOST = 'smtp.gmail.com'
    PORT = '587'
    user = '*************@gmail.com'
    senha = '************'
    servidor = smtplib.SMTP()
    servidor.connect(HOST, PORT)
    servidor.ehlo()
    servidor.starttls()
    servidor.ehlo()
    servidor.login(user, senha)
    assunto = 'Relatorio de Erro'
    para = '*********@hotmail.com'        
    servidor.set_debuglevel(1)
    servidor.sendmail(user, para, assunto)        
    servidor.quit()

Письмо приходит в нужный почтовый ящик, но в нем нет ни сообщения, ни ничего. Я много искал, я читал документы, я так старался, что даже не знаю, что делаю. Похоже, я почти получаю. Кто-нибудь может мне помочь?

1 Ответ

3 голосов
/ 17 июня 2011

Вот рабочая версия, модифицированная из кода, который я использую при обслуживании системы.


#!/usr/bin/env python

import smtplib

host = 'smtp.gmail.com'
port = '587'
user = 'user@gmail.com'
passw = 'password'

server = smtplib.SMTP()
server.connect(host, port)
server.ehlo()
server.starttls()
server.login(user, passw)

notice = "Completed"
tolist = ["user@somewhere.com"]
fromaddr = '"IT Staff" '
subject = 'Oracle server maintenance notice'
message = '''

The Oracle database server maintenance is

%s

''' % notice

hdr = "From: %s\r\nTo: %s\r\nSubject: %s\r\nX-Mailer: My-Mail\r\n\r\n" % (fromaddr, tolist, subject)
server.sendmail("it@vlsmaps.com", tolist, hdr+message)
server.quit
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...