专栏首页python3python3 发送电子邮件

python3 发送电子邮件

使用python3发送电子邮件,我之前在网上找了好几篇文章不论是都不行,最后在网上找到这篇文章了!

首先在163邮箱开启授权码

记住这个授权密码,我们在python代码里面用的就是这个密码

不然会出现这个报错

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# File  : send1.py
# Author: HuXianyong
# Date  : 2018/11/29

import smtplib
from email.header import Header
from email.mime.text import MIMEText



# 第三方 SMTP 服务
host = "smtp.163.com"      # SMTP服务器
port = 465
user = "ghxy123@163.com"                  # 用户名
passWD = "mghxy123"               # 授权密码,非登录密码

sender = 'ghxy123@163.com' #发邮件人
receivers = 'ghxy123@163.com,ghuxy123@163.com' #收邮件人

content = '''
    这个是邮件内容,
    你想写些什么就写些什么!
''' #邮件内容

subject = '邮件主题'  # 邮件主题


# meg['Subject'] = subject #这个方法和下面的一样可以发送邮件


def send_email1():
    meg = MIMEText(content+' \n send_email1', 'plain', 'utf-8')  # 内容, 格式, 编码
    meg['From'] = user  # 这两种方法都一样的
    # meg['From'] = "{}".format(user)
    meg['To'] = receivers
    meg['Subject'] = subject+' send_email1'
    # msg['Subject'] = Header(subject, 'utf-8')

    try:
        smtpObj = smtplib.SMTP_SSL(host, port)  # 启用SSL发信, 端口一般是465
        smtpObj.login(user, passWD)  # 登录验证
        smtpObj.sendmail(sender, receivers, meg.as_string())  # 发送
        print("邮件1发送成功!")
    except smtplib.SMTPException as e:
        print(e)

def send_email2(host, user, passWD, receivers, subject, content):
    email_client = smtplib.SMTP(host)
    email_client.login(user, passWD)
    # create msg
    msg = MIMEText(content+'\n这个是send_email2', 'plain', 'utf-8')
    msg['From'] = user
    msg['To'] = receivers
    msg['Subject'] = Header(subject+' send_email2', 'utf-8')

    email_client.sendmail(user, receivers, msg.as_string())

    email_client.quit()
    # print(msg)
    print('邮件2发送成功!')

if __name__ == '__main__':
    send_email1()
    send_email2(host, user, passWD, receivers, subject, content)

文章借鉴

http://blog.csdn.net/sunhuaqiang1/article/details/70833199

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python补充之进制转换、exec、eval、compile

    计算指定表达式的值。也就是说它要执行的python代码只能是单个表达式(注意eval不支持任何形式的赋值操作),而不能是复杂的代码逻辑。

    用户6817597
  • 异常处理

    在python中不同的异常可以用不同的类型(python中统一了类与类型,类型即类)去标识,一个异常标识一种错误。

    用户6817597
  • Detectron2学习五:build_backbone_model配置及实现流程

    本文主要讲build_backbone_model的配置及创建流程,目的则是希望大家看完本章节后能够对detectron2中模型创建及使用有清晰的认识,便于后续...

    CV_Learner
  • 一日一技:在 Python 里面,如何正确判断两个浮点数相等

    在以前的文章里面,我们已经讲到过,不仅仅是 Python,很多编程语言里面,浮点数都不一定是精确的。最常被用来作为例子的是:0.1 + 0.2。在 Python...

    青南
  • 单元测试框架选择

    单元测试是指,对软件中的最小可测试单元在与程序其他部分相隔离的情况下进行检查和验证的工作,这里的最小可测试单元通常是指函数或者类。

    用户2149234
  • Pytest跳过执行之@pytest.mark.skip()详解

    在我们自动化测试过程中,经常会遇到功能阻塞、功能未实现、环境等一系列外部因素问题导致的一些用例执行不了,这时我们就可以用到跳过skip用例,如果我们注释...

    橙子探索测试
  • python 爬取 instagram 用户的关注列表

    这是很久之前我的房东找我帮忙爬 instagram 上面某个用户的关注列表,一开始我想着减低难度好给他使用,于是尝试了 webscraper,后羿采集器去爬取,...

    伪君子
  • C++惯用法之消除垃圾收集器-资源获取即初始化方法(RAII)

    在C语言中,有三种类型的内存分配:静态、自动和动态。静态变量是嵌入在源文件中的常数,因为它们有已知的大小并且从不改变,所以它们并不那么有趣。自动分配可以被认为是...

    公众号guangcity
  • Pytest自定义标记mark及指定文件/类/方法/用例执行

    pytest.main(['-s','test01.py','-m=test'])

    橙子探索测试
  • 队列、进程互斥锁、线程

    并行: 并行是指两者同时执行,比如赛跑,两个人都在不停的往前跑;(资源够用,比如三个线程,四核的CPU )

    用户6817597

扫码关注云+社区

领取腾讯云代金券