通过 Python 和 Google SMTP 服务器发送电子邮件

Sending email via Python and Google SMTP server

我的邮箱是:sarahconnor@gmail.com

我想从 johnconnor@skynet.com 发送一封电子邮件给我。

我不想远程登录到我的 gmail 帐户来发送电子邮件。

这是我需要的:

我是 Sarah Connor,我想在我的邮箱 ( sarahconnor@gmail.com ) 中收到一封来自 johnconnor@skynet.com ...

的电子邮件

所以我使用这个脚本来做到这一点:

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

我有以下错误:

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

here 看来,我似乎没有遇到任何问题。

有谁知道我该如何解决这个问题?

谢谢

这会将一封邮件从一个gmail帐户发送到任何其他帐户

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

使用 smtplib.SMTP 代替 smtplib.SMTP_SSL