1. 概念

1.1. 常见的类型

  • Mail User Agent

    • 收发邮件用的,类似浏览器的作用。例如:mail,mailx,ssmtp,msmtp
  • Mail Transport Agent
    • 邮件服务器,类似apache, nginx的作用。例如:sendmail,postfix

1.2. 相关协议

  • SMTP: Simple Mail Transfer Protocol,即简单邮件传输协议,用来发送电子邮件;
  • POP3: Post Office Protocol-Version3,它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件。
  • IMAP: Internet Mail Access Protocol,不同于POP3,开启了IMAP后,您在电子邮件客户端收取的邮件仍然保留在服务器上,同时在客户端上的操作都会反馈到服务器上。

1.3. SMTP协议

SMTP认证,简单地说就是要求必须在提供了账户名和密码之后才可以登录 SMTP 服务器,这就使得那些垃圾邮件的散播者无可乘之机。

增加 SMTP 认证的目的是为了使用户避免受到垃圾邮件的侵扰。

Looks like sSMTP is no longer maintained, MSMTP is the suggested replacement.

如果服务器选择"localhost",那么你需要在本机跑一个MTA(例如sendmail)。否则也无法成功发送邮件。但如果仅仅为了发送一封邮件而开启本地服务,是不是太不值得了呢?!

所以建议还是通过smtp连接外部服务器吧,比如126邮箱……

2. python::smtplib

import smtplib
from email.message import EmailMessage class Mail:
map_host2server = {
"163.com" : "smtp.163.com",
"126.com" : "smtp.126.com",
# "qq.com" : "smtp.qq.com",
} def __init__(self, user, passwd):
self.uid = user mail_host = self.uid.split("@")[1]
try:
mail_server = self.map_host2server[mail_host]
except KeyError:
raise MailServerNotSupported() # smtp_server = smtplib.SMTP_SSL(mail_server, 465)
self.smtp = smtplib.SMTP(mail_server) # 使用非SSL协议端口号25
self.smtp.login(self.uid, passwd) def send(self, target, content, title=None):
msg = EmailMessage()
msg.set_content(content) if not title:
title = content[:20]
lines = title.split("\n")
if len(lines) > 1:
title = lines[0]
else:
title = title[:17] + "..." msg['Subject'] = title
msg['From'] = self.uid
msg['To'] = target # Send the message via our own SMTP server.
try:
self.smtp.send_message(msg)
except smtplib.SMTPDataError as e:
print("发送失败,可能遭到了接收服务器拒绝...具体信息如下:")
print(e)
else:
print("邮件已发送!")

mail邮件操作的更多相关文章

  1. Linux mail 邮件发送

    Linux mail 邮件介绍 在Linux系统下我们可以通过”mail“命令,发送邮件,在运维中通常我们它来实现邮件告警. 安装 (方案1) 一.安装邮件服务 yum install -y send ...

  2. 使用SpringBoot发送mail邮件

    1.前言 发送邮件应该是网站的必备拓展功能之一,注册验证,忘记密码或者是给用户发送营销信息.正常我们会用JavaMail相关api来写发送邮件的相关代码,但现在springboot提供了一套更简易使用 ...

  3. Java Mail 邮件发送简单封装

    上一篇文章我们用写了一个Java Mail 的Demo,相信你已经可以用那个例子来发送邮件了.但是Demo 有很多的问题. 首先每次发送需要配置的东西很多,包括发件人的邮箱和密码.smtp服务器和SM ...

  4. java mail邮件发送(带附件) 支持SSL

    java mail邮件发送(带附件)有三个类 MailSenderInfo.java package mail; import java.util.Properties; import java.ut ...

  5. centos7下mail邮件的查看删除、禁止部分应用发邮件

    查看与删除 mail命令进入 & p                  #显示当前邮件& 2                  #显示标号为2的文件 & d 1-100     ...

  6. LumiSoft 邮件操作删除(无法删除解决方法)

    最近在用 LumiSoft  进行邮件读取,然后操作相关附件邮件使用的是qq邮箱,读取后进行移除,但是怎么都移除不了 后来咨询了官方客服,原来是设置不对 需要 取消掉 X禁止收信软件删信 (仅对 PO ...

  7. Python邮箱客户端编写之接收邮件操作

    Python的POP3类有很多方法来管理邮箱. 首先需要导入poplib库,import poplib POP3(server) 连接到邮箱服务器 user(username)将用户名发送至服务器,等 ...

  8. linux mail 简操作

    1. 如何查看linux的mailqueue 检查所传送的电子邮件是否送出,或滞留在邮件服务器中 语法:/usr/lib/sendmail -bp 2. 如何发送mail 1)将文件当做电子邮件的内容 ...

  9. Spring mail 邮件发送的简单实现

    package cn.taskSys.utils; import java.util.Properties; import org.springframework.mail.MailException ...

随机推荐

  1. mysql基本操作汇总

    1.数据库操作 (1)创建数据库 CREATE DATABASE <数据库名>; 例子: CREATE DATABASE IF NOT EXISTS RUNOOB DEFAULT CHAR ...

  2. 解决删除~/Library/Caches/CocoaPods/search_index.json重新pod search还是不起作用

    今天新苹果机安装cocoapods,安装完以后发现怎么pod search 都没有用 命令行提示: swhcxp@iosdevmac ~ % pod search Almofire Setup com ...

  3. Poj 3013基础最短路

    Description Christmas is coming to KCM city. Suby the loyal civilian in KCM city is preparing a big ...

  4. 【pyecharts】地图显示不全

    官网给的解释如下: 自从 0.3.2 开始,为了缩减项目本身的体积以及维持 pyecharts 项目的轻量化运行,pyecharts 将不再自带地图 js 文件. 如用户需要用到地图图表,可自行安装对 ...

  5. 【图机器学习】cs224w Lecture 11 & 12 - 网络传播

    目录 Decision Based Model of Diffusion Large Cascades Extending the Model Probabilistic Spreading Mode ...

  6. Linux中查看磁盘大小、文件大小、排序方法小结

    一,查看磁盘空间大小的命令:dfdf命令用于查看磁盘分区上的磁盘空间,包括使用了多少,还剩多少,默认单位是KB 比如以下命令: df -hl执行结果如下: 执行的结果每列的含义: 第一列Filesys ...

  7. MySQL性能分析(Explain)

    更多知识,请移步我的小破站:http://hellofriend.top 1. 概述 使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的.分析你的查 ...

  8. pyinstaller打包pyqt5,从入坑到填坑,详解

    以上省略pyinstaller安装步骤,直入主题.先分享我的心路历程. 1.pyinstaller -F -i 1.ico UI_Main.py (先在CMD中 cd到 py文件对应的路径) 第一步打 ...

  9. Life In Changsha College - SQA计划和系统测试规程

    一. SQA计划 (1)     对软件进行测试,保证软件不出问题: (2)     项目需要符合IEEE.ISO等软件工程标准 (3)     软件拥有基本的流程图.类图.数据流图等 (4)    ...

  10. Android_适配器(adapter)之ArrayAdapter

    ArrayAdapter是一个很简单的适配器,是BaseAdapter的子类. ArrayAdapter绑定的数据是集合或数组,比较单一.视图是列表形式,ListView 或 Spinner. Arr ...