首先是使用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"这个列表中设置的邮箱地址。