mail邮件操作
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邮件操作的更多相关文章
- Linux mail 邮件发送
Linux mail 邮件介绍 在Linux系统下我们可以通过”mail“命令,发送邮件,在运维中通常我们它来实现邮件告警. 安装 (方案1) 一.安装邮件服务 yum install -y send ...
- 使用SpringBoot发送mail邮件
1.前言 发送邮件应该是网站的必备拓展功能之一,注册验证,忘记密码或者是给用户发送营销信息.正常我们会用JavaMail相关api来写发送邮件的相关代码,但现在springboot提供了一套更简易使用 ...
- Java Mail 邮件发送简单封装
上一篇文章我们用写了一个Java Mail 的Demo,相信你已经可以用那个例子来发送邮件了.但是Demo 有很多的问题. 首先每次发送需要配置的东西很多,包括发件人的邮箱和密码.smtp服务器和SM ...
- java mail邮件发送(带附件) 支持SSL
java mail邮件发送(带附件)有三个类 MailSenderInfo.java package mail; import java.util.Properties; import java.ut ...
- centos7下mail邮件的查看删除、禁止部分应用发邮件
查看与删除 mail命令进入 & p #显示当前邮件& 2 #显示标号为2的文件 & d 1-100 ...
- LumiSoft 邮件操作删除(无法删除解决方法)
最近在用 LumiSoft 进行邮件读取,然后操作相关附件邮件使用的是qq邮箱,读取后进行移除,但是怎么都移除不了 后来咨询了官方客服,原来是设置不对 需要 取消掉 X禁止收信软件删信 (仅对 PO ...
- Python邮箱客户端编写之接收邮件操作
Python的POP3类有很多方法来管理邮箱. 首先需要导入poplib库,import poplib POP3(server) 连接到邮箱服务器 user(username)将用户名发送至服务器,等 ...
- linux mail 简操作
1. 如何查看linux的mailqueue 检查所传送的电子邮件是否送出,或滞留在邮件服务器中 语法:/usr/lib/sendmail -bp 2. 如何发送mail 1)将文件当做电子邮件的内容 ...
- Spring mail 邮件发送的简单实现
package cn.taskSys.utils; import java.util.Properties; import org.springframework.mail.MailException ...
随机推荐
- mysql小白系列_09 mysql性能优化关键点
一 服务器参数调优,有哪些关键点? 1. 应用访问优化 优化方法 性能提升效果 优化成本 说明 减少数据访问能不访问就不访问-减少磁盘IO 1~1000 低 缓存服务器缓存mysql数据,Redis. ...
- Java基础以及变量和运算符、包机制、javadoc生成
目录 注释.标识符.关键字 注释 标识符 关键字 标识符注意点 数据类型 强类型语言 弱类型语言 Java的数据类型 基本类型(primitive type) 数值类型 boolean类型 什么是字节 ...
- 带你学够浪:Go语言基础系列 - 8分钟学基础语法
对于一般的语言使用者来说 ,20% 的语言特性就能够满足 80% 的使用需求,剩下在使用中掌握. 基于这一理论,Go 基础系列的文章不会刻意追求面面俱到,但该有知识点都会覆盖,目的是带你快跑赶上 Go ...
- linux克隆之后网络设置
1.修改网络 vi /etc/sysconfig/network-scripts/ifcfg-eth0 修改:ip地址 IPADDR=192.168.77.83GATEWAY=192.168.77.2 ...
- switch下返回各类的数值
定义一个变量,在每个case下赋值,最后return public static int orderDishes(int choice) { int price = 0; switch (choice ...
- 不可不知的辅助测试的Fiddler小技巧
在以前的博文中,时常有分享Fiddler的一些使用技巧,今天再贴下. Fiddler抓包工具使用详解 利用Fiddler拦截接口请求并篡改数据 Fiddler使用过程中容易忽略的小技巧 Mock测试, ...
- UDP和TCP 简单 区别
1.双方都是一种网络传输协议2.TCP需要建立连接,而UDP不需要建立连接(无连接传输)3.是否建立真实连接的特性,造成了双方可靠性的差距. @1 TCP属于可靠的传输协议:因为传输前双方建立好了连接 ...
- python调用大漠插件教程02大漠插件绑定测试工具
什么是大漠插件绑定测试工具? 这是大漠插件为了方便使用者调试绑定窗口的模式而设计的,因为有些程序不会接受一般的鼠键事件的响应模式,每个程序所需要的响应模式都不尽相同,所以这个工具可以使我们在绑定窗口时 ...
- 常用docker命令备忘录
查看镜像 docker images 查看运行中的容器 docker ps 删除镜像 docker rmi 容器id 直接删除所有镜像 docker rmi `docker images -q` 直接 ...
- nmap script 总结
一些常用脚本用法 nmap 脚本一些支持笼统扫描 usag. nmap -F --script auth 10.0.0.1 auth: 负责处理鉴权证书(绕开鉴权)的脚本 broadcast: 在局域 ...