1

My email is: sarahconnor@gmail.com

I would like to send an email from johnconnor@skynet.com to mine.

I don't want to login remotely to my gmail account to send an email.

This is what I need:

I'm Sarah Connor, and I want to receive in my mailbox ( sarahconnor@gmail.com ), an e-mail from johnconnor@skynet.com ...

So I've use this script to do so:

import requests
import smtplib

from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart

COMMASPACE = ', '

msg = MIMEMultipart()
msg['Subject'] = 'Our family reunion'
fromm = "johnconnor@skynet.com"
to = "sarahconnor@gmail.com"
msg['From'] = fromm
msg['To'] = COMMASPACE.join(to)
msg.preamble = 'Our family reunion'

requests.get("http://smtp.gmail.com", verify=False)
s = smtplib.SMTP_SSL("smtp.gmail.com", 587)
s.starttls()
s.login('sarahconnor@gmail.com', 'mypassword12345') #here I login to the SMTP server from Google to be able to send emails...
s.sendmail(fromm, to, msg.as_string())
s.close()

I have the following error:

raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', error(10054, 'An existing connection was forcibly closed by the remote host'))

And as seen from here, it doesn't seem that I'm having any of that issues.

Does anyone knows how can I fix this?

Thanks

Community
  • 1
  • 1
waas1919
  • 2,365
  • 7
  • 44
  • 76

2 Answers2

3

this sends a mail from a gmail account to any other account

import smtplib
from email.mime.text import MIMEText


class GmailHandler():
    """
    IMPORTANT NOTE:
    in order to access a gmail account with this handler,
    your account needs 'foreign-access' enabled (follow these steps):
    login to the account
    go here--> https://accounts.google.com/b/0/DisplayUnlockCaptcha
    press 'Continue'
    Done.
    """

    def __init__(self, gmail, password):
        self.gmail = gmail
        self.password = password

    def send_mail(self, receivers, subject, text):

        if not isinstance(receivers, list):
            receivers = [receivers]

        # Send the message via our own SMTP server, but don't include the envelope header
        smtp = smtplib.SMTP("smtp.gmail.com", 587)
        smtp.ehlo()
        smtp.starttls()
        smtp.ehlo()
        smtp.login(self.gmail, self.password)

        for receiver in receivers:

            msg = MIMEText(text)
            msg['Subject'] = subject
            msg['From'] = self.gmail
            msg['To'] = receiver
            smtp.sendmail(self.gmail, receiver, str(msg))

        smtp.quit()
Jonathan
  • 486
  • 3
  • 12
  • ok thanks, but that's not what I need:( I need to send an email from another email, to my email...not from a gmail account. As I said: "I don't want to login remotely to my gmail account to send an email." – waas1919 Apr 21 '16 at 21:29
1

Use smtplib.SMTP instead of smtplib.SMTP_SSL.

apely
  • 11
  • 2