返回顶部

SMTP发送邮件

简介

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。邮件传送代理程序使用SMTP协议来发送电邮到接收者的邮件服务器。SMTP协议只能用来发送邮件,不能用来接收邮件,而大多数的邮件发送服务器都是使用SMTP协议。SMTP协议的默认TCP端口号是25。python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。

import smtplib

smtp = smtplib.SMTP()
smtp.connect(smtpserver, port)

参数说明:

  • host: SMTP 服务器主机。 你可以指定主机的ip地址或者域名如:网易163邮箱'smtp.163.com',这个是可选参数。
  • port: 如果你提供了 host 参数, 你需要指定 SMTP 服务使用的端口号,一般情况下SMTP端口号为25。

Python SMTP对象使用sendmail方法发送邮件,语法如下:

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

参数说明:

  • sender 邮件发送人
  • receiver 邮件接收人
  • msg 邮件信息

实例一

python中的类库中,python自带email模块。
email模块中,我们也可以email类库实现对邮件的读取,和邮件的发送等功能

import smtplib
from email.mime.text import MIMEText
from email.header import Header

sender = '邮件发送邮箱'
receiver = '邮件接收邮箱'
# receiver = ['xxx@163.com', 'xxx@qq.com']  ## 多个邮件接收人
subject = '邮件主题' 
smtpserver = 'smtp.163.com'  # 服务器地址
username = '邮箱用户'  # 邮箱用户
password = 'xxx'  # 这里是邮箱授权码不是密码
message = '邮件内容'

msg = MIMEText(message, 'plain', 'utf-8')  # 邮件内容
msg['Subject'] = Header(subject, 'utf-8')
msg['From'] = ‘邮件发送人’
msg['To'] = 'xxx@qq.com'  # 邮件接收人
# msg['To'] = 'xxx@163.com, xxx@qq.com'

try:
    smtp = smtplib.SMTP()
    smtp.connect(smtpserver, port=25)
    smtp.login(username, password)
    smtp.sendmail(sender, receiver, msg.as_string())
    smtp.quit()
    print('success')
except Exception as e:
    print(e)

如何获取授权码?进入邮箱主页,然后进入设置主页,左下角客户端授权,即可开启授权功能,并获取授权码

实例二

发送带有链接的邮件

import smtplib
from email.mime.text import MIMEText
from email.header import Header

sender = '邮件发送邮箱'
receiver = '邮件接收邮箱'
# receiver = ['xxx@163.com', 'xxx@qq.com']  ## 多个邮件接收人
subject = '邮件主题' 
smtpserver = 'smtp.163.com'  # 服务器地址
username = '邮箱用户'  # 邮箱用户
password = 'xxx'  # 这里是邮箱授权码不是密码
message = """
<p>Python 邮件发送测试...</p>
<p><a href="http://www.baidu.com">这是一个baidu链接</a></p>
"""

msg = MIMEText(message, 'plain', 'utf-8')  # 邮件内容
msg['Subject'] = Header(subject, 'utf-8')
msg['From'] = ‘邮件发送人’
msg['To'] = 'xxx@qq.com'  # 邮件接收人
# msg['To'] = 'xxx@163.com, xxx@qq.com'

try:
    smtp = smtplib.SMTP()
    smtp.connect(smtpserver, port=25)
    smtp.login(username, password)
    smtp.sendmail(sender, receiver, msg.as_string())
    smtp.quit()
    print('success')
except Exception as e:
    print(e)

注意:这里如果你短时间内重复发送邮件,或者邮件内带有敏感信息如链接或者关键词,邮件可能不会发送

更多

posted on 2018-08-14 11:12  weilanhanf  阅读(1628)  评论(0编辑  收藏  举报

导航