python学习之smtp邮件发送

python学习之smtp邮件发送

在学习这个部分的过程中遇到了很烦的事情,看起来代码并不是很烦,但是邮件就是发送不出去,一开始是超时10060错误,后来又是500错误,都给我搞崩溃了。先前都是用的网易163邮箱发送的,qq邮箱接收的,经过加入断点调试,发现在login这一步怎么也过不去,所以就没办法,重新注册了一个新浪邮箱,竟然成功了,竟然成功了,老泪纵横。下面把整个步骤梳理一下,也是按照教程来的,所以。。。只是为了做个记录。
首先就是发送smtp邮件,需要使用第三方的服务器,这里使用了新浪邮箱的服务器(也就只有这个尝试成功了),需要在邮箱的设置中开启smtp服务,这样才可以使用python脚本发送邮件,新浪邮箱的stmp服务器地址是smtp.sina.cn。这个需要在py脚本中指定的。接下来就是编写代码的模块了,参考例程的代码,具体代码如下:

#!D:\software\Microsoft Visual Studio\Shared\Python36_64\python.exe
# -*- coding: utf-8 -*-

import smtplib
from email.mime.text import MIMEText

# 第三方 SMTP 服务
mail_host = "smtp.sina.cn"  # SMTP服务器
mail_user = "XXXXXXXXXX@sina.cn"  # 用户名
mail_pass = "XXXXXXXXXX"  # 密码

sender = 'XXXXXXXXXX@sina.cn'  # 发件人邮箱(最好写全, 不然会失败)
receivers = ['XXXXXXXXXX@qq.com']  # 接收邮件,可设置为你的QQ邮箱或者其他邮箱


content = 'This is a test email!'
title = 'Python SMTP Mail Test'  # 邮件主题
message = MIMEText(content, 'plain', 'utf-8')  # 内容, 格式, 编码
message['From'] = "{}".format(sender)
message['To'] = ",".join(receivers)
message['Subject'] = title

try:
    smtpObj = smtplib.SMTP(mail_host, 25)  # 如果启用SSL发信, 端口一般是465,启用后的格式为smtpObj = smtplib.SMTP_SSL(mail_host, 465) 
    smtpObj.login(mail_user, mail_pass)  # 登录验证
    smtpObj.sendmail(sender, receivers, message.as_string())  # 发送
    print("mail has been send successfully.")
except smtplib.SMTPException as e:
    print(e)

对这个代码进行解释一下:
第一行是python3解释器的位置,这个是必须指定的,因为我是在win环境下的,所以地址如上所示,用的时候,需要将此地址更换成自己的解释器额地址。
第二行是指定编码格式。
第三行是代入smtplib模块。
第四行是导入文本函数,这里发送的是文本形式的邮件,还可以发送html形式,以及带附件形式的邮件,需要导入不同的函数。html以及附件需要导入的函数分别如下所示:

from email.header import Header #html
from email.mime.multipart import MIMEMultipart #附件

接下来三行是关于发送邮件的服务器,发送者,以及密码。
然后是发送者的名称以及接收者的邮箱。
接下来是对邮件主题,内容的编写
然后就是尝试发送的模块。
最后成功发送后,会在调试窗口显示
结果

这就是使用python脚本发送smtp邮件的过程。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值