2011-06-17 100 views
2

我正在尋找一些答案,直到現在我只是沒有解決我的問題。 我只想從我的程序發送簡單的電子郵件消息,如果發生錯誤。 我使用Gmail服務器來做到這一點,它實際上發送的電子郵件,但電子郵件的消息不會出現。 下面的代碼:如何使用smtplib和MIMEText發送電子郵件?

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() 

電子郵件來正確的收件箱中,但它沒有消息,沒有什麼。 我搜查了很多,我讀了文檔,我試了很多,我甚至不知道我在做什麼。它看起來像我差不多了。 有人可以幫我嗎?

回答

3

這是一個工作版本,它修改了我們在進行系統維護時使用的代碼。


#!/usr/bin/env python 

import smtplib 

host = 'smtp.gmail.com' 
port = '587' 
user = '[email protected]' 
passw = 'password' 

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

notice = "Completed" 
tolist = ["[email protected]"] 
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("[email protected]", tolist, hdr+message) 
server.quit 
+0

好的,我現在就解決了。 謝謝@jlargent。 看起來問題是字符串的編碼。 下面是我做的和工作的變化: corpo = MIMEText(textos.encode('utf-8'),_charset ='utf-8') 我試過了,它工作正常。 –

相關問題