welan

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)

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

更多

分类:

技术点:

相关文章: