python发送邮件

首先是使用ubuntu作为服务器发送

  这个操作可能失败,收邮件也需要到垃圾箱查看。

  第一步,安装发送邮件需要的服务

      使用命令:

sudo apt-get install postfix
sudo service postfix start

  第一句是安装,第二句是开启

  第二步,写一个发邮件的python文件

    随便上网找一段就可以了...

    以下是我找的例子:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

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


mail_host = "localhost"  # 设置服务器,localhost表示本地,需要第一步安装并开启服务成功

content = "Hello email!"  # 要发送的内容(正文)先编辑好

msg = MIMEText(content, 'plain', 'utf-8')  # 格式化

msg['From'] = Header("Masako", 'utf-8')  # 发件人(声称的)
msg['To'] = Header("cnblog", 'utf-8')  # 收件人(声称的)
msg['Subject'] = Header("Email greetings", 'utf-8')  # 邮件主题

sender = 'masako@cnblogs.com'  # 发送方
receivers = ['123456@qq.com']  # 收件地址,列表,可同时发给多个

try:
    smtpObj = smtplib.SMTP()    # 实例化一个smtp对象,用来连接smtp服务
    smtpObj.connect(mail_host, 25)  # 25 为 SMTP 端口号
    # smtpObj.login(mail_user, mail_pass)  # 使用第三方服务器时可能需要登录
    smtpObj.sendmail(sender, receivers, msg.as_string())  # 执行发送邮件这个动作
    print "success"
except smtplib.SMTPException:
    print "failed"

  第三步,将程序跑起来

  将第二步的程序保存下来,命名为email_sender.py,执行python email_sender.py

  以上几步就完成了发送一条邮件的任务,将receivers列表中的地址改成你自己的地址,就可以在收件箱(垃圾箱)看到邮件了.

  亲测有效,效果如下

 

 

 

下面是通用的,使用qq邮箱发送邮件方式

先到qq邮箱中获取一个授权码

设置 > 账户 > POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

 

 关于授权码和使用方式建议阅读一下说明。

获取到授权码之后,就可以开始编程了。代码和上面一个例子差不多。

# encoding=utf-8
# date: 2019/1/15
__author__ = "Masako"

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

mail_user = '123456789@qq.com'
mail_pass = 'sacsdcesdcas'


def send(content, receivers, sender, receiver):
    msg = MIMEText(content, 'plain', 'utf-8')  # 格式化

    msg['From'] = Header(sender, 'utf-8')  # 发件人(声称的)
    msg['To'] = Header(receiver, 'utf-8')  # 收件人(声称的)
    msg['Subject'] = Header("Email greetings", 'utf-8')  # 邮件主题

    try:
        smtp_obj = smtplib.SMTP_SSL("smtp.qq.com", 465)  # 实例化一个smtp对象,用来连接smtp服务
        smtp_obj.login(mail_user, mail_pass)  # 登录, mail_pass是生成"授权码"
        smtp_obj.sendmail(mail_user, receivers, msg.as_string())  # 执行发送邮件这个动作
        print("success")
        result = True
    except smtplib.SMTPException as e:
        result = False
        print("failed")

    return result

 

     主要就是用户名和密码,需要用来登录。

  收信结果如下。

   可以看到发件人和收件人都是我代码中“声称”的,也就是我自己设定的,而实际交互的邮箱是我涂掉的,设置了授权的邮箱,和"receivers"这个列表中设置的邮箱地址。

  

posted @ 2017-07-21 14:56  Masako  阅读(536)  评论(0编辑  收藏  举报