【问题标题】:How to send email with smtplib and MIMEText?如何使用 smtplib 和 MIMEText 发送电子邮件?
【发布时间】:2011-09-17 06:30:00
【问题描述】:

我一直在寻找答案,直到现在我还没有解决我的问题。 如果发生错误,我只想从我的程序中发送一封简单的电子邮件。 我正在使用 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()

电子邮件进入正确的收件箱,但没有消息,什么都没有。 我搜索了很多,我阅读了文档,我尝试了很多,我什至不知道我在做什么。看来我快要了。 有人可以帮我吗?

【问题讨论】:

    标签: python email gmail mime smtplib


    【解决方案1】:

    这是我在进行系统维护时使用的代码修改的工作版本。

    
    #!/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
    

    【讨论】:

    • 好的,我刚刚解决了。谢谢@jlargent。看起来问题出在字符串的编码上。这是我所做和工作的更改: corpo = MIMEText(textos.encode('utf-8'), _charset='utf-8') 我试过了,效果很好。
    猜你喜欢
    • 1970-01-01
    • 2015-09-07
    • 2018-01-12
    • 2018-12-09
    • 2021-04-26
    • 1970-01-01
    • 2014-01-31
    • 1970-01-01
    • 2015-03-06
    相关资源
    最近更新 更多