使用gmail使用python发送邮件

时间:2012-02-07 09:46:43

标签: python email gmail

我已经尝试从gmail发送带有python的邮件,但它运行正常。但问题是当我用一个方法创建Mail类时,我从我的代码中发送特定的字符串,它无法发送。

class Mail:
   def send_mail(self, msg):
      import smtplib  

      fromaddr = 'something@something.com'  
      toaddrs  = 'something@gmail.com' 
      msg = msg + "something"

      print msg

      username = 'something'  
      password = 'something'  


      server = smtplib.SMTP('smtp.gmail.com:587')  
      server.starttls()  
      server.login(username,password)  
      server.sendmail(fromaddr, toaddrs, msg)  
      server.quit()  

这样它会发送邮件,但邮件中唯一的东西是我添加到字符串中的“东西”,而打印msg则输出整个字符串加上“something”。可能是什么问题呢?

这是现在的全班,它叫做

     mail = Mail()
     mail.send_mail(message)

2 个答案:

答案 0 :(得分:4)

我不知道是什么问题,但我设法使用已经在python中的MIME发送它

所以这是有效的代码:

def send_mail(self, message):

    import smtplib
    from email.MIMEMultipart import MIMEMultipart
    from email.MIMEText import MIMEText

    gmailUser = 'something@gmail.com'
    gmailPassword = 'something'
    recipient = 'something@something.com'

    msg = MIMEMultipart()
    msg['From'] = gmailUser
    msg['To'] = recipient
    msg['Subject'] = "Subject"
    msg.attach(MIMEText(message))

    mailServer = smtplib.SMTP('smtp.gmail.com', 587)
    mailServer.ehlo()
    mailServer.starttls()
    mailServer.ehlo()
    mailServer.login(gmailUser, gmailPassword)
    mailServer.sendmail(gmailUser, recipient, msg.as_string())
    mailServer.close()

答案 1 :(得分:0)

问题很可能是消息的内容似乎要求地址和消息正文之间有额外的换行符。尽管如此,iblazevic给出的解决方案更容易理解。