python - 如何使用 Python 以 Gmail 作为提供商发送电子邮件?

标签 python email smtp gmail smtp-auth

我正在尝试使用 python 发送电子邮件 (Gmail),但出现以下错误。

Traceback (most recent call last):  
File "emailSend.py", line 14, in <module>  
server.login(username,password)  
File "/usr/lib/python2.5/smtplib.py", line 554, in login  
raise SMTPException("SMTP AUTH extension not supported by server.")  
smtplib.SMTPException: SMTP AUTH extension not supported by server.

Python脚本如下。

import smtplib

fromaddr = 'user_me@gmail.com'
toaddrs  = 'user_you@gmail.com'
msg = 'Why,Oh why!'
username = 'user_me@gmail.com'
password = 'pwd'
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()
server.login(username,password)
server.sendmail(fromaddr, toaddrs, msg)
server.quit()

最佳答案

def send_email(user, pwd, recipient, subject, body):
    import smtplib

    FROM = user
    TO = recipient if isinstance(recipient, list) else [recipient]
    SUBJECT = subject
    TEXT = body

    # Prepare actual message
    message = """From: %s\nTo: %s\nSubject: %s\n\n%s
    """ % (FROM, ", ".join(TO), SUBJECT, TEXT)
    try:
        server = smtplib.SMTP("smtp.gmail.com", 587)
        server.ehlo()
        server.starttls()
        server.login(user, pwd)
        server.sendmail(FROM, TO, message)
        server.close()
        print 'successfully sent the mail'
    except:
        print "failed to send mail"

如果你想使用端口 465,你必须创建一个 SMTP_SSL 对象:

# SMTP_SSL Example
server_ssl = smtplib.SMTP_SSL("smtp.gmail.com", 465)
server_ssl.ehlo() # optional, called by login()
server_ssl.login(gmail_user, gmail_pwd)  
# ssl server doesn't support or need tls, so don't call server_ssl.starttls() 
server_ssl.sendmail(FROM, TO, message)
#server_ssl.quit()
server_ssl.close()
print 'successfully sent the mail'

关于python - 如何使用 Python 以 Gmail 作为提供商发送电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49840045/

相关文章:

python - 何时在 django 中使用 pre_save、save、post_save?

python - 为什么我不能使用 'django-admin.py makemessages -l cn'

email - Grails Mail MessagingException : Could not connect to SMTP host: xxx, 端口 : 25, 响应:421

php - 维护良好的 PHP SMTP 身份验证类,无需发送电子邮件(登录测试)?

python - 邮件未发送给 CC 中的人员

python - 在设置项目时充当 defaultdict 但在获取项目时不充当 defaultdict 的嵌套字典

python - OpenCV2 : grayscaled video displays fine, 但不保存

java - 乘法运算在速度模板中不起作用

ios - 将图像保存到文档目录并检索电子邮件附件

node.js - 如何使用nodemailer接收邮件