使用SMTP协议发送邮件

这篇具有很好参考价值的文章主要介绍了使用SMTP协议发送邮件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

剧情介绍

今天心血来潮,学了一下Python3,里面有个章节是发送邮件,用示例里面的代码,运行后报错,然后记录一下问题是如何解决的,大家可以看一下,可以有效避坑。

SMTP简介

SMTP是一种提供可靠且有效的电子邮件传输的协议。SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知。SMTP独立于特定的传输子系统,且只需要可靠有序的数据流信道支持,SMTP的重要特性之一是其能跨越网络传输邮件,即“SMTP邮件中继”。使用SMTP,可实现相同网络处理进程之间的邮件传输,也可通过中继器或网关实现某处理进程与其他网络之间的邮件传输。

使用SMTP协议发送邮件

SMTP协议介绍

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。

python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。

Python创建 SMTP 对象语法如下:

import smtplib
smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )

参数说明:

  • host: SMTP 服务器主机。 你可以指定主机的ip地址或者域名如:runoob.com,这个是可选参数。
  • port: 如果你提供了 host 参数, 你需要指定 SMTP 服务使用的端口号,一般情况下SMTP端口号为25。
  • local_hostname: 如果SMTP在你的本机上,你只需要指定服务器地址为 localhost 即可。

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

SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options]

参数说明:

  • from_addr: 邮件发送者地址。
  • to_addrs: 字符串列表,邮件发送地址。
  • msg: 发送消息

这里要注意一下第三个参数,msg是字符串,表示邮件。我们知道邮件一般由标题、发信人、收件人、邮件内容、附件等构成,发送邮件时需要注意msg的格式,这个格式就是smtp协议中定义的格式。

使用腾讯SMTP协议发送邮件,注意事项列表

发送普通文本邮件

# SMTP发送邮件
import smtplib
from email.mime.text import MIMEText
from email.header import Header

sender = '923284735@qq.com'
password = 'hcwpwdbppbqhbg'
receiver = 'pgqybfq@163.com'

message = MIMEText('Python 邮件发送测试', 'plain', 'utf-8')
message['From'] = sender
message['To'] = receiver
message['Subject'] = Header('Python SMTP 邮件测试', 'utf-8')

try:
    smtpObj = smtplib.SMTP('smtp.qq.com')
    smtpObj.login(sender, password)
    smtpObj.sendmail(sender, ['2314728477@qq.com', 'pgqybfq@163.com'], message.as_string())
    print("邮件发送成功")

except smtplib.SMTPException as error:
    print("Error:无法发送邮件{0}", error)

登陆163邮箱查看是否成功发送,如下:
使用SMTP协议发送邮件
使用SMTP协议发送邮件

发送HTML格式邮件

# 发送HTML格式的邮件
import smtplib
from email.mime.text import MIMEText
from email.header import Header


sender = '923284735@qq.com'
password = 'hcwpwdbppbqhbg'
receiver = 'pgqybfq@163.com'

htmlContent = "<a href='https://www.baidu.com'>百度一下</a>"
messageHtml = MIMEText(htmlContent, 'html', 'utf-8')
messageHtml['From'] = sender
messageHtml['To'] = receiver
messageHtml['Subject'] = Header(htmlContent, 'utf-8')

try:
    smtpObj = smtplib.SMTP('smtp.qq.com')
    smtpObj.login(sender, password)
    smtpObj.sendmail(sender, receiver, messageHtml.as_string())
    print("HTML邮件发送成功")
except smtplib.SMTPException as err:
    print("HTML邮件发送出现了错误:{0}", err)

登陆163邮箱查看是否成功发送,如下:
使用SMTP协议发送邮件
使用SMTP协议发送邮件

发送带附件的邮件

# 发送带附件的邮件
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.header import Header

sender = '923284735@qq.com'
password = 'hcwpwdbppbqhbg'
receiver = 'pgqybfq@163.com'
fileName = 'wallhaven-1p8e3v.jpg'
fileName1 = 'wallhaven-yxgx6l.jpg'

message = MIMEMultipart()
message['From'] = sender
message['To'] = receiver
message['Subject'] = Header('Python 邮件测试', 'utf-8')

message.attach(MIMEText('Python 邮件发送测试', 'plain', 'utf-8'))
file = MIMEText(open('/Users/cainiao007/Downloads/' + fileName, 'rb').read(), 'base64', 'utf-8')
file['Content-Type'] = 'application/octet-stream'
file['Content-Disposition'] = 'attachment; filename=' + fileName
message.attach(file)

file1 = MIMEText(open('/Users/cainiao007/Downloads/' + fileName1, 'rb').read(), 'base64', 'utf-8')
file1['Content-Type'] = 'application/octet-stream'
file1['Content-Disposition'] = 'attachment; filename=' + fileName1
message.attach(file1)

try:
    smtpObj = smtplib.SMTP('smtp.qq.com')
    smtpObj.login(sender, password)
    smtpObj.sendmail(sender, receiver, message.as_string())
    print('附件邮件发送成功!')
except smtplib.SMTPException as err:
    print('带附件邮件发送失败:{0}', err)

登陆163邮箱查看是否成功发送,如下:
使用SMTP协议发送邮件
使用SMTP协议发送邮件
使用SMTP协议发送邮件文章来源地址https://www.toymoban.com/news/detail-454919.html

到了这里,关于使用SMTP协议发送邮件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C# SMTP 邮件发送傻瓜操作

      /// summary  /// 发送邮件的方法  /// /summary  public OperateResultint SendMail(MailModel mails)  {      var resultData = new OperateResultint();      if (mails.to == null || !mails.to.Any())      {          resultData.Status = OperateStatus.Failure;          resultData.Description = \\\"收件人地址不能为空\\\";        

    2024年01月19日
    浏览(44)
  • smtp 通过465端口发送邮件失败

    注意:此处因为服务器配置smtps端口是465,方才有上述结论,若是手动配置了其他端口作smtps的安全端口,同理需要 properties.put(\\\"mail.smtp.ssl.enable\\\", \\\"true\\\");

    2024年02月09日
    浏览(42)
  • Python SMTP发送邮件和线程

    SMTP(Simple Mail Transfer Protocol)即 简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式 。 python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。 Python创建 SMTP 对象语法如下: 参数说明: host: SMTP 服

    2023年04月11日
    浏览(43)
  • QQ 邮箱使用 SMTP 发送邮件报错:550 The From header is missing or invalid

    QQ 邮箱使用 SMTP 发送邮件报错: 550 The From header is missing or invalid : 源码( pthon 3.12 ) 看到 QQ 邮箱对 header 中的 from 有合法性校验,我们的字段格式符合要求,怀疑是字符编码问题。 通过打印封装的 message 查看我们的 From 字段乱码,去掉 utf-8 编码。 再次测试,正常发送邮件

    2024年04月16日
    浏览(85)
  • 使用SpringBoot + JavaMailSender 发送邮件报错 Mail server connection failed;Could not connect to SMTP host

    在 application.yml 中将邮件配置为 SSL 连接 yml 如果你使用的是 properties 文件,应该修改为: properties 推荐一个 yml、properties 文件在线转换的网站  在线yaml转properties-在线properties转yaml-ToYaml.com   来源:https://www.cnblogs.com/songjilong/p/12577010.html

    2024年02月04日
    浏览(55)
  • SMTP邮件发送图片-如何在github中存储图片并访问

    之前写了一篇文章 Go:实现SMTP邮件发送订阅功能(包含163邮箱、163企业邮箱、谷歌gmail邮箱),实现了通过邮箱服务来发送邮件,但都是文字内容,要是想实现邮件发送图片,就需要将图片放到公网可访问的服务器,这里用了骚操作。 实现邮件群发功能,来发送项目的周报及

    2024年02月06日
    浏览(46)
  • java SMTP邮件发送,修复SSL下465端口Could not connect to SMTP

    起因:开发邮件发送系统时,使用25端口能够正常发送邮件,启用SSL使用465端口时,发送邮件报Could not connect to SMTP host: smtp.qiye.aliyun.com, port: 465的错误。 由于25端口可以正常发送邮件,所以可以保证账号和网络是通的,那么可能就出在465出站权限或者服务器环境问题。 经运维

    2024年02月02日
    浏览(45)
  • TCP/IP协议:最流行的电子邮件协议SMTP(简单邮件传输协议)详解

    SMTP 是一种电子邮件协议,用于通过互联网从一个电子邮件帐户向另一个电子邮件帐户发送电子邮件。它是TCP/IP协议应用层的一部分。作为一种电子邮件协议,它建立了不同电子邮件客户端和帐户之间轻松信息交换的规则。这样,简单邮件传输协议就可以实现广泛的电子邮件

    2024年02月20日
    浏览(44)
  • c++实现smtp发送邮件,支持ssl的465端口发送,支持附件、一次发送多人、抄送等

    c++实现smtp发送邮件,支持ssl的465端口发送,支持附件、一次发送多人、抄送等。 这里只使用了openssl库(用来支持ssl的465端口),其他部分是原生c++,支持在win/linux运行。 网上很多都是原始的支持25端口,明文发送,这里介绍一下ssl思路 使用sockect编程和ssl,使用SMTP协议。 使

    2024年02月08日
    浏览(99)
  • 基于 ESP32 通过 SMTP 服务器 来发送电子邮件信息

    电子邮件在全球范围内被用作数字通信的重要组成部分。电子邮件主要用于官方通信目的,因为它最方便、成本效益高、保存记录、覆盖全球且环保。电子邮件是一种非常快捷的通信方式,只是您需要稳定的互联网连接。 在这个项目中,我们将使用ESP32开发板发送电子邮件(

    2024年02月07日
    浏览(85)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包