返回列表 发帖

Python3发送带网址链接和附件的邮件(Linux)

操作系统的版本:
[root@localhost ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@localhost ~]#
[root@localhost ~]# uname -r
2.6.32-696.el6.x86_64



发送一个带网址链接的邮件:(使用126邮箱的465端口)
[root@localhost ~]# cat xx.py
#coding=utf-8

import smtplib #以下模块都是内置的,不用额外安装
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.utils import formataddr

my_sender='j13680432xxx@126.com'    # 发件人邮箱账号
my_pass = 'Jackxxx'                # 发件人邮箱密码
my_name='zhuohua'                     # 发件人邮箱昵称

receiver='2270168xxx@qq.com'        # 收件人邮箱账号
receiver_name='收件人昵称'          # 收件人昵称

mail_msg = """

<p>...发送HTML格式的邮件...</p>

<p><a href="http://blog.zhuohua.store">这是一个网址链接</a></p>

"""


msg=MIMEText(mail_msg,'html','utf-8')#邮件正文内容使用网址链接
#msg=MIMEText('邮件正文内容', 'plain', 'utf-8')#邮件正文内容不使用网址链接

msg['From']=formataddr([my_name,my_sender])
msg['To']=formataddr([receiver_name,receiver])
msg['Subject']="邮件主题-测试网址链接"       # 邮件的主题


def mail():

        try:

                server=smtplib.SMTP_SSL("smtp.126.com", 465)  # 发件人邮箱中的SMTP服务器,端口是465
                server.login(my_sender, my_pass)
                server.sendmail(my_sender,[receiver,],msg.as_string())
                server.quit()# 关闭连接
                print("邮件发送成功")

        except smtplib.SMTPException as e:
               
                print ("Error: 无法发送邮件.Case:%s" % e)
               

if __name__ == '__main__':

        mail() # 调用函数过程


设置脚本的权限:
[root@localhost ~]# chmod a+x xx.py


运行脚本:
[root@localhost ~]# python3 xx.py
邮件发送成功


QQ邮箱收到的测试邮件:
图片1.png
2020-11-7 15:06














######
######

发送一个带网址链接和附件的邮件:(使用126邮箱的465端口)
[root@localhost ~]# cat yy.py
#coding=utf-8

import smtplib #以下模块都是内置的,不用额外安装
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.utils import formataddr

my_sender='j13680432xxx@126.com'    # 发件人邮箱账号
my_pass = 'Jackxxx'                # 发件人邮箱密码
my_name='zhuohua'                     # 发件人邮箱昵称

receiver='2270168xxx@qq.com'        # 收件人邮箱账号
receiver_name='收件人昵称'          # 收件人昵称

mail_msg = """

<p>发送HTML格式的邮件+附件</p>

<p><a href="http://blog.zhuohua.store">这是一个网址链接</a></p>

"""


#创建一个带附件的实例
msg = MIMEMultipart()

#构造附件1
att1 = MIMEText(open('/test1.txt', 'rb').read(), 'base64', 'gb2312')
att1["Content-Type"] = 'application/octet-stream'
att1["Content-Disposition"] = 'attachment; filename="test1.txt"' #filename的值可以任意写,写什么名字,对应附件就显示什么名字;但不支持中文。
msg.attach(att1)

#构造附件2
att2 = MIMEText(open('/test2.txt', 'rb').read(), 'base64', 'gb2312')
att2["Content-Type"] = 'application/octet-stream'
att2["Content-Disposition"] = 'attachment; filename="My_test2.txt"'
msg.attach(att2)


msg.attach(MIMEText(mail_msg,'html', 'utf-8')) #邮件正文内容使用网址链接
#msg.attach(MIMEText('邮件正文内容', 'plain', 'utf-8')) #邮件正文内容不使用网址链接

msg['From']=formataddr([my_name,my_sender])
msg['To']=formataddr([receiver_name,receiver])
msg['Subject']="邮件主题-测试网址链接+附件"       # 邮件的主题

def mail():

        try:

                server=smtplib.SMTP_SSL("smtp.126.com", 465)  # 发件人邮箱中的SMTP服务器,端口是465
                server.login(my_sender, my_pass)
                server.sendmail(my_sender,[receiver,],msg.as_string())
                server.quit()# 关闭连接
                print("邮件发送成功")

        except smtplib.SMTPException as e:
               
                print ("Error: 无法发送邮件.Case:%s" % e)
               

if __name__ == '__main__':

        mail() # 调用函数过程


设置脚本的权限:
[root@localhost ~]# chmod a+x yy.py


附件要先创建:
[root@localhost ~]# ll /*.txt
-rw-r--r--. 1 root root  9 11月  6 09:20 /test1.txt
-rw-r--r--. 1 root root 12 11月  6 09:20 /test2.txt


运行脚本:
[root@localhost ~]# python3 yy.py
邮件发送成功


QQ邮箱收到的测试邮件:
图片2.png
2020-11-7 15:06

注释:附加的内容支持中文、英文。





相关文章:
Python3发送带网址链接和附件的邮件(Windows)
Python3中126邮箱使用465端口发告警邮件
CentOS6/7安装Python3

返回列表