2011-06-17 14 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

[OK]を今すぐに解決しました。 ありがとう@jlargent。 文字列のエンコーディングが問題のようです。 私がやった変更は次のとおりです。 corpo = MIMEText(textos.encode( 'utf-8')、_charset = 'utf-8') 私は試してみましたが、うまくいきました。 –

関連する問題