首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用Python编写自动发送邮件程序

首先到网上找到一段基础的代码:

#coding:utf-8

import sys

reload(sys)

sys.setdefaultencoding('utf8')

import smtplib

from smtplib import SMTP

from email.mime.text import MIMEText

from email.header import Header

#构造纯文本邮件内容

msg = MIMEText('hello world,send by Python.....',

'plain','utf-8')

#发送者邮箱

sender = 'xxxxx@XXXXX.com.cn'

#发送者的登陆用户名和密码

user = 'xxxxx@XXXX.com.cn'

password = 'xxxxxx'

#发送者邮箱的SMTP服务器地址

smtpserver = 'xxxx'

#接收者的邮箱地址

receiver = ['xxxxxx@qq.com','xxxxxx@outlook.com'] #receiver 可以是一个list

server = smtplib.SMTP() #实例化SMTP对象

server.connect(smtpserver,25)

#(缺省)默认端口是25 也可以根据服务器进行设定

server.login(user,password) #登陆smtp服务器

server.sendmail(sender,receiver,msg.as_string())

#发送邮件,这里有三个参数:发件人、收件人、内容

smtpserver从qq邮箱的帮助中获得

运行后发现有这个报错:

网上查询了一下,应该是用户身份认证或者端口的问题。

仔细检查前面的报错信息,发现login的时候报

smtplib.SMTPAuthenticationError: (535, 'Error: \xc7\xeb\xca\xb9\xd3\xc3\xca\xda\xc8\xa8\xc2\xeb\xb5\xc7\xc2\xbc\xa1\xa3\xcf\xea\xc7\xe9\xc7\xeb\xbf\xb4: http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256')

输入报错提示中的http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256这个地址,跳转到下面的页面。

原因查明,原来QQ邮箱在调用SMTP服务时,用的不是用户名和密码,而是用户名和授权码,需要通过密保手机获取授权码。

生成授权码后,将password调整为授权码:

password = 'ihijovpquvtubiga'

继续运行,仍然报错:

smtplib.SMTPAuthenticationError: (530, 'Must issue a STARTTLS command first.')

再到网上查一下,这个报错一般是因为没有采用SSL加密传输。

我们看到使用foxmail等软件调用QQ SMTP服务时,必须采用SSL加密传输。

于是采用SSL方式登录邮箱,当然注意要把端口号调整为465(见上图)。

>>> server = smtplib.SMTP_SSL(smtpserver,465,timeout=30)

>>> server.login(user,password)

(235, 'Authentication successful')

铛铛,成功!

下面激动人心的时刻来到了,send a email!

>>> server.sendmail(sender,receiver,msg.as_string())

{}

舒服了!

参考:

https://www.jb51.net/article/130411.htm

https://ask.csdn.net/questions/370896

(to be continued)

保护原创,未经许可禁止通过自媒体刊载,已委托“维权骑士”(http://rightknights.com)为文章进行维权行动~分享到您的朋友圈才是义举哦~

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180820G1V81J00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券