Python基础-SMTP发送邮件

环境准备

本人注册了163注册了2个小号,便于邮件的相互发送和接收测试

开启 POP3/SMTP/IMAP

  1. 具体在网易邮箱的设置->POP3/SMTP/IMAP
  2. 复制下对于的SMTP 服务器地址,例如163是smtp.163.com,待会代码需要使用

这里写图片描述

发送邮件

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Python基础 SMTP发送邮件

from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr

import smtplib

def _format_addr(s):
    name, addr = parseaddr(s)
    return formataddr((Header(name, 'utf-8').encode(), addr))

# 输入寄件人邮件地址和口令
from_addr = "寄件人@163.com"
password = "寄件人的密码"

# 输入收件人地址
to_addr = "收件人@163.com"

# plain 表示纯文本
msg = MIMEText("hello, 法迪大人,我在学习Python...", "plain", "utf-8")
# 填写完整点,不然会被判断为垃圾邮件
msg['From'] = _format_addr('法迪的测试小号 <%s>' % from_addr)
msg['To'] = _format_addr('苏法迪大人 <%s>' % to_addr)
msg['Subject'] = Header('来自SMTP的问候……', 'utf-8').encode()

# 输入SMTP 服务器地址
smtp_server = 'smtp.163.com'

import smtplib

# SMTP协议默认端口是25
server = smtplib.SMTP(smtp_server, 25)
# 打印出和SMTP服务器交互的所有信息
server.set_debuglevel(1)
# 输入登陆信息
server.login(from_addr, password)
# 发送邮件
server.sendmail(from_addr, [to_addr], msg.as_string())
server.quit()

运行过程

D:\PythonProject>python main.py
send: 'ehlo [192.168.31.162]\r\n'
reply: b'250-mail\r\n'
reply: b'250-PIPELINING\r\n'
reply: b'250-AUTH LOGIN PLAIN\r\n'
reply: b'250-AUTH=LOGIN PLAIN\r\n'
reply: b'250-coremail 1Uxr2xKj7kG0xkI17xfsdsfGrU7I0s8FYsdssf2U3Uj8Cz28x1UUUUU7Ic2I0Y2UFERUV-UCa0xDrUUUUj\r\n'
reply: b'250-STASGDRTTLS\r\n'
reply: b'250 8BIDGFGTMIME\r\n'
reply: retcode (250); Msg: b'mail\nPIPELINING\nAUTH LOGIN PLAIN\nAUTH=LOGIN PLAIN\ncoremail 1Uxr2xKj7kG0xkI17xGrU7I0s8FY2U3Ujdssdsd8Cz28x1UUUDSFGUU7Ic2I0Y2UFERUV-UCa0xDrUUUUj\nSTARDSFGTTLS\n8BITMIME'
send: 'AUTH PLAIN AHN1cHl0aG9uZGVtb0AxNjMuY29sdstAHFDSGhendzeDEyMw==\r\n'
reply: b'235 Authentication successful\r\n'
reply: retcode (235); Msg: b'Authentication successful'
send: 'mail FROM:<xxxxx@163.com>\r\n'
reply: b'250 Mail OK\r\n'
reply: retcode (250); Msg: b'Mail OK'
send: 'rcpt TO:<xxxxxxxx@163.com>\r\n'
reply: b'250 Mail OK\r\n'
reply: retcode (250); Msg: b'Mail OK'
send: 'data\r\n'
reply: b'354 End data with <CR><LF>.<CR><LF>\r\n'
reply: retcode (354); Msg: b'End data with <CR><LF>.<CR><LF>'
data: (354, b'End data with <CR><LF>.<CR><LF>')
send: b'Content-Type: text/plain; charset="utf-8"\r\nMIME-Version: 1.0\r\nContent-Transfer-Encoding: base64\r\nFrom: =?utf-8?b?5rOV6L+q55qE5rWL6K+V5bCP5Y+3?= <supythondemo@163.com>\r\nTo: =?utf-8?b?6IuP5rOV6L+q5aSn5Lq6?= <sufadi@163.com>\r\nSubject: =?utf-8?b?5p2l6IeqU01UUOeahOmXDFGruWAmeKApuKApg==?=\r\n\r\naGVsbG8sIOazlei/quWkp+S6uu+8jOaIkeWcqSDFGOWtpuS5oFB5dGhvbi4uLg==\r\n.\r\n'
reply: b'250 Mail OK queued as smtp8,DMCowABHFkeR+T5ahlMwFA--.14106S2 1514076562\r\n'
reply: retcode (250); Msg: b'Mail OK queued as smtp8,DMCowABHFkeR+T5ahlMwFA--.14106S2 1514076562'
data: (250, b'Mail OK queued as smtp8,DMCowABHFkeR+T5ahlMwFA--.14106S2 1514076562')
send: 'quit\r\n'
reply: b'221 Bye\r\n'
reply: retcode (221); Msg: b'Bye'

收到邮件

这里写图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

法迪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值