如何使用smtplib和MIMEText发送邮件?
我已经找了几天的答案,但到现在为止还是没能解决我的问题。
我想做的就是在程序出错时发送一封简单的邮件。
我使用的是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转换为字符串。
于是我尝试了另一个版本,纯粹是为了测试。
发送一个简单的字符串:
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
这是我在进行系统维护时使用的代码修改版,已经可以正常工作。
#!/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