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

2023-11-23

我正在尝试使用 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 = '[email protected]'
toaddrs  = '[email protected]'
msg = 'Why,Oh why!'
username = '[email protected]'
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 object:

# 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'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Python 以 Gmail 作为提供商发送电子邮件? 的相关文章

随机推荐

  • 如何从java调用C#函数[重复]

    这个问题在这里已经有答案了 我需要从 java 调用 C 函数 为此我创建了以下内容 我创建了一个java头文件Authenticator h 代码如下 include
  • 循环遍历数组并成对输出(每个第二个元素的分隔符)

    我有一个包含匿名元素的数组 元素通过 php 添加到数组中 如下所示 playlist array while databaseloop playlist a title playlist a length echo json encode
  • 通用集合中的记录相等性

    假设您有一条带有重载相等运算符的记录 TSomeRecord record Value String class operator Equal Left Right TSomeRecord Boolean end 实现比较字符串值 如果根据
  • Linux中每个进程的最大线程数

    我编写了一个简单的程序来计算Linux Centos 5 中一个进程可以拥有的最大线程数 这是代码 int main pthread t thrd 400 for int i 0 i lt 400 i int err pthread cre
  • NuGet 包引用复制 dll 本地

    我需要将 NuGet dll 的 Copy Local 设置为 false 在此之前 我使用了包配置格式 一切正常 迁移到后封装参考格式 我找不到如何做到这一点的方法 有人可以帮助我吗 您可以使用私有资产 从文档复制
  • 使用 Hibernate API 进行 Java 字符串日期验证

    我正在尝试验证字符串日期 using javax validation 休眠验证 我需要检查给定的字符串日期应该是过去的并且它应该是正确的yyyyMMdd具有所有限制的格式 例如闰年 30th 31st day public class U
  • 如何捕获鼠标移动事件

    我想在我的主窗体中捕获鼠标移动事件 虽然我能够连接MouseEventHandler对于主窗体 当光标位于 UserControl 或任何其他控件上时 该事件不再触发 如何确保我始终掌握鼠标位置 您可以使用低级鼠标钩 看this示例并检查
  • 使用 ctypes 传递数组

    我有一个C函数 void read FIFO AI0 int16 t input size t size NiFpga Session session NiFpga Status status input int16 t malloc si
  • 如何使用 SWIG 扩展 python 中的模板化 C++ 类以允许 [] 运算符

    我有一个模板化的 C 数组类 它使用标准向量类 include
  • 向量点积计算的时间和空间复杂度

    计算两个长度为 n 的向量之间的点积的算法的时间和空间复杂度是多少 如果这 2 个向量是a a1 a2 an and b b1 b2 bn then 点积由下式给出a b a1 b1 a2 b2 an bn 为了计算这个 我们必须执行n乘法
  • 设置 tk.Frame 宽度和高度

    所以我正在创建一个 GUI 并尝试使其一切都适合屏幕 我已经画出了我希望 GUI 的每个部分的外观及其大小的粗略草图 因此我知道所有内容的粗略尺寸 然而 我遇到的第一个问题是设置屏幕的左半部分 所以左半部分由一个框架组成 我们称之为Main
  • 如何替换已弃用的 ggplot2 函数 aes_string:接受任意数量的命名字符串来指定美学映射?

    aes string我在使用 ggplot2 编程时使用了一些方便的行为 但aes string已被弃用 我相信是从 ggplot2 版本 3 4 0 开始 我正在努力思考如何很好地替换它 具体来说 我之前创建了通过省略号接受任意字符串参数
  • 错误 403:scrapy 中未处理或不允许 HTTP 状态代码

    这是我为抓取 justdial 网站而编写的代码 import scrapy from scrapy http request import Request class JustdialSpider scrapy Spider name j
  • WebRTC - 在通信过程中更改视频流

    我的目标是使用 webrtc Web 应用程序在视频或音频通话中启用屏幕共享 好吧 我发现我可以使用MediaStreamTrack applyConstraints 更改视频属性 但是否可以更改视频源 进一步说明如何将视频添加到现有音频流
  • 从 C++ 调用 C# 方法而不使用 COM

    有没有办法创建 C 对象并从非托管 C 调用方法 但不使用 COM Iterop 我正在寻找类似 JNI 但适用于 Net 的东西 您可以在其中手动创建 VM 创建对象等 如果您使用 C CLI 那么您可以直接与托管世界和非托管代码交互 因
  • Python Selenium“WebDriver”对象没有属性错误

    我正在尝试从中文网站上抓取一些由 javascript 生成的内容 我正在使用 Selenium 和 Python 因为我无法直接抓取 javascript 内容 coding utf 8 from selenium import webd
  • Pandas:按满足条件的列进行分组

    我有一个包含三列的数据集 评级 品种和狗 import pandas as pd dogs breed Chihuahua Chihuahua Dalmatian Sphynx dog True True True False rating
  • 获取 Chrome 浏览器的最新发布版本号

    我正在尝试找出一种相当稳定的方法来以编程方式确定 chrome 浏览器的最新发行版本号 它不必是万无一失的 因为它只是一个很好的功能 每当结果看起来 可疑 时我就可以混合出来 似乎没有 API 有吗 我不想依赖第三方手动处理这些事情 我不想
  • “按 NULL 排序”是什么意思

    我使用 oracle 11g 下面的 line order by null 意味着什么 select f value row number over order by null as id from tableName The OVER 条
  • 如何使用 Python 以 Gmail 作为提供商发送电子邮件?

    我正在尝试使用 python 发送电子邮件 Gmail 但出现以下错误 Traceback most recent call last File emailSend py line 14 in