Python 通过 STMP 发送邮件(云服务器可用)

Python 通过 STMP 发送邮件(云服务器可用),第1张

 今天在服务器上后台跑包,需要很长时间,为了能第一时间知道,所以通过查资料写了一个发邮件的脚本,在跑完包后会调用这个脚本给我发邮件  。以后可能还会用到这个脚本,所以记录一下。

遇到的问题:

云服务器一般会禁用出方向的25号端口,所以需要用465端口 

由于编码的问题需要在开头加上 #coding=utf-8

代码1.0: 
#coding=utf-8
import smtplib
from email.mime.text import MIMEText
from email.header import Header



# --------------------------------------------配置信息开始

mail_host = "smtp.163.com"             # 设置服务器(如果是qq邮箱,将163换成qq)
mail_user = '[email protected]'   # 用户名
mail_pass = '################'         # 口令

username = '[email protected]'   # 发件人名称

getusername = '[email protected]'        # 收件人名称
getmail =['[email protected]']            # 收件人邮箱

context = '这里填正文'                # 内容
title = '这里填标题'                  # 标题


# ---------------------------------------------配置信息结束


def email():
    sender = True
    try:
        massage= MIMEText(context, 'plain', 'utf-8')     # 加入正文内容
        massage['From'] = Header(username, 'utf-8')      # 加入发件人名称
        massage['To'] = Header(getusername, 'utf-8')      # 加入收件人名称
        massage['Subject'] = Header(title, 'utf-8')     # 加入标题

        server = smtplib.SMTP_SSL()                         # 获取服务 25端口不需要加 _SSL
        server.connect(mail_host, 465)                   # 链接服务  25和465都为SMTP端口号
        server.login(mail_user, mail_pass)              # 登录服务
        server.sendmail(mail_user, getmail, massage.as_string())      # 开始发送

        server.close()                                  #关闭服务

    except smtplib.SMTPException :
        sender = False
    return sender


sender = email()
if sender:
    print("邮件发送成功 ...")
else:
    print("邮件发送失败 ...")

下面的版本对上面的版本做出了优化,虽然在第一个版本中把需要配置的参数放在了前面,方便了配置,但是如果每次需要发送的内容不一样,那都要进行配置一遍,很麻烦。

比如说我编写这个脚本的初衷,为了在跑完包的时候能提醒我是否成功,我只能创建两个发邮件的脚本,一个发的内容是成功,一个发的内容是失败。在很不人性化,所以我优化了带参数运行的机制。通过引入 sys 库调用  然后用sys.argv[]  获取参数,其实就做了一点点改动

 运行的时候在后面加上内容:

代码2.0:
#coding=utf-8
import smtplib
import sys
from email.mime.text import MIMEText
from email.header import Header



# --------------------------------------------配置信息开始

mail_host = "smtp.163.com"             # 设置服务器(如果是qq邮箱,将163换成qq)
mail_user = '[email protected]'   # 用户名
mail_pass = '################'         # 口令

username = '[email protected]'   # 发件人名称

getusername = '[email protected]'        # 收件人名称
getmail =['[email protected]']            # 收件人邮箱

context = sys.argv[1]                # 内容
title = '这里填标题'                  # 标题


# ---------------------------------------------配置信息结束


def email():
    sender = True
    try:
        massage= MIMEText(context, 'plain', 'utf-8')     # 加入正文内容
        massage['From'] = Header(username, 'utf-8')      # 加入发件人名称
        massage['To'] = Header(getusername, 'utf-8')      # 加入收件人名称
        massage['Subject'] = Header(title, 'utf-8')     # 加入标题

        server = smtplib.SMTP_SSL()                         # 获取服务 25端口不需要加 _SSL
        server.connect(mail_host, 465)                   # 链接服务  25和465都为SMTP端口号
        server.login(mail_user, mail_pass)              # 登录服务
        server.sendmail(mail_user, getmail, massage.as_string())      # 开始发送

        server.close()                                  #关闭服务

    except smtplib.SMTPException :
        sender = False
    return sender


sender = email()
if sender:
    print("邮件发送成功 ...")
else:
    print("邮件发送失败 ...")

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/794616.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-06
下一篇 2022-05-06

发表评论

登录后才能评论

评论列表(0条)

保存