5

我想使用 Python 3 发送一封电子邮件。我还无法理解我所看到的示例。这是一个参考:使用 Python 发送电子邮件

我已经提取了上述参考资料中的第一个简单示例。我发现这个示例很好地代表了我在互联网上看到的示例组合。这似乎是做我想做的事情的基本形式。

当我尝试下面的代码时,我收到错误:

File "C:\Python33\Lib\email.py", line 595, in login
    raise SMTPException("SMTP AUTH extension not supported by server.")
smtplib.SMTPException: SMTP AUTH extension not supported by server.

这是代码:

# Send Mail

import smtplib
server = smtplib.SMTP('smtp.gmail.com', 587)

# Log in to the server
server.login("myEmail@gmail.com","myPassword")

# Send mail
msg = "\nHello!"
server.sendmail("myEmail@gmail.com","recipient@gmail.com", msg)
4

4 回答 4

18

我在 YouTube 上找到了解决方案。

这是视频链接

# smtplib module send mail

import smtplib

TO = 'recipient@mailservice.com'
SUBJECT = 'TEST MAIL'
TEXT = 'Here is a message from python.'

# Gmail Sign In
gmail_sender = 'sender@gmail.com'
gmail_passwd = 'password'

server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
server.login(gmail_sender, gmail_passwd)

BODY = '\r\n'.join(['To: %s' % TO,
                    'From: %s' % gmail_sender,
                    'Subject: %s' % SUBJECT,
                    '', TEXT])

try:
    server.sendmail(gmail_sender, [TO], BODY)
    print ('email sent')
except:
    print ('error sending mail')

server.quit()
于 2013-07-10T00:45:12.350 回答
6

截至 2017 年 10 月中旬,gmail 不接受通过smtplib.SMTP()on port 的连接587,但需要smtplib.SMTP_SSL()和 port 465。这会TLS立即开始,并且ehlo不需要。试试这个片段:

# Gmail Sign In
gmail_sender = 'sender@gmail.com'
gmail_passwd = 'password'

server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
server.login(gmail_sender, gmail_passwd)

# build and send the email body.
于 2017-10-15T11:47:19.730 回答
3

这就是我使用 Google 发送电子邮件的方式。大写字母代表需要编辑的个人信息

try:
    import RUNNING_SCRIPT
except:
    print("threw exception")
    # smtplib module send mail

    import smtplib

    TO = ‘EXAMPLE_RECIPIENT@gmail.com'
    SUBJECT = 'SERVER DOWN'
    TEXT = 'Here is a message from python. Your server is down, please check.'

    # Gmail Sign In
    gmail_sender = ‘YOUR_GMAIL_ACCOUNT@gmail.com'
    gmail_passwd = ‘APPLICATION SPECIFIC PASSWORD’

    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.ehlo()
    server.starttls()
    server.login(gmail_sender, gmail_passwd)

    BODY = '\r\n'.join(['To: %s' % TO, 'From: %s' % gmail_sender,'Subject: %s' % SUBJECT,'', TEXT])

    try:
        server.sendmail(gmail_sender, [TO], BODY)
        print ('email sent')
    except:
        print ('error sending mail')
        server.quit()
于 2019-03-12T15:59:31.083 回答
1

这个功能对我有用:

`def server_connect(帐户,密码,服务器,端口= 587):
    if int(port) == 465: # gmail 服务器
        email_server = smtplib.SMTP_SSL(服务器,str(端口))
    别的:
        email_server = smtplib.SMTP(服务器,端口)
        email_server.ehlo()
        email_server.starttls()
    email_server.login(帐户,密码)
    返回 email_server
#--------
`

我希望这有帮助。

于 2018-05-23T18:40:13.513 回答