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

时间:2016-04-21 15:01:14

标签: python email smtp mail-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可以看出,我似乎没有任何问题。

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

由于

2 个答案:

答案 0 :(得分:1)

这会将邮件帐户发送到任何其他帐户

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

答案 1 :(得分:1)

使用smtplib.SMTP代替smtplib.SMTP_SSL