iblazevic
iblazevic

Reputation: 2733

Sending mail with python using gmail

I've tried sending mail with python from gmail and it works fine. But the problem is when I created the Mail class with one method to whom I send specific string from my code, it can't be send.

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

      fromaddr = '[email protected]'  
      toaddrs  = '[email protected]' 
      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()  

This way it sends mail but the only thing in mail is "something" that I added to string, and print msg outputs the whole string plus "something". What could be the problem?

This is the whole class for now, and it's called

     mail = Mail()
     mail.send_mail(message)

Upvotes: 3

Views: 2303

Answers (2)

Nerdfest
Nerdfest

Reputation: 1685

The problem is most likely that the content of the message seems to requite an extra line break between the addresses and the body of the message. The solution given by iblazevic is a much more readable way of doing it anyway though.

Upvotes: 0

iblazevic
iblazevic

Reputation: 2733

I don't know what was the problem, but I managed to send it using MIME that's already in python

So here is the code that works:

def send_mail(self, message):

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

    gmailUser = '[email protected]'
    gmailPassword = 'something'
    recipient = '[email protected]'

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

Upvotes: 4

Related Questions