利用命令行发邮件

 

  • 1.与SMTP服务器建立连接

 

c:\> telnet xxx.xxx.xxx.xxx 25
220 xxxxxxxxxx ESMTP Sendmail

EHLO localhost

250-ENHANCEDSTATUSCODES
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH PLAIN LOGIN
250-DELIVERBY
250 HELP

 

  • 2.  AUTH PLAIN认证

 

基于明文的SMTP验证,详见: http://www.ietf.org/internet-drafts/draft-ietf-sasl-plain-08.txt 
其发送用户名与口令的格式应该是“<NULL>tim<NULL>tanstaaftanstaaf”。“tim”是用户名,后边的字符串是口令,NULL是ASCII的0(所以无法使用telnet登录)。

对认证字符串“-UserID\0UserID\0Password”进行Base64编码。 

-> AUTH PLAIN
<- 334
-> ASFasasERWcr=
<- 235 


  • 3.AUTH LOGIN认证

分别对用户名和密码进行Base64编码。 

-> AUTH LOGIN
<- 334 VXNlcm5hbWU6
-> BASE64编码的用户名
<- 334 UGFzc3dvcmQ6
-> BASE64编码的密码
<- 235

 

  •  4.AUTH CRAM-MD5认证

 

CRAM-MD5即是一种Keyed-MD5验证方式,CRAM是“Challenge-Response Authentication Mechanism”的所写。所谓Keyed-MD5,是将Clieng与Server共享的一个Key作为一部分MD5的输入,正好邮件系统的用户口令可以作为这个Key。对服务器的进行解码。

 

以CRAM-MD5为例,身份验证过程为:
a. 客户端声明用CRAM-MD5验证方式
b. 服务器返回一个标记(Base64编码的随机字符串)
c. 客户端用邮箱密码做密钥,以MD5方式加密此标记,生成HMAC;然后将用户名连同HMAC发送出去
d. 服务器收到用户名与HMAC,检验其正确性,给出回复
-> AUTH CRAM-MD5
<- 334 PDExMjc5NDA4MTYuMTgwMDM5NEBzbXRwLmVsb25nLmNvbT4= (Server发送BASE64编码的Timestamp、Hostname等给Client。解码后
<1127940816.1800394@smtp.elong.com>

-> Ymh3YW5nIDVmZWIwYzcxMWVlMGQzYWU1ZTNlYjA4N2VhMGU2YTI3 (Client将收到的信息加上用户名和口令,编码为BASE64发送给Server) <- 235 Authentication successful (Server使用该用户的口令进行MD5运算,如果得到相同的输出则认证成功)

 

好的,下面是利用 Python 自动发送邮件的步骤: 1. 导入相应的库 ```python import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.application import MIMEApplication ``` 2. 设置发件人和收件人信息 ```python sender = '你的邮箱地址' password = '你的邮箱密码' receiver = '收件人邮箱地址' ``` 3. 创建邮件对象并设置邮件内容 ```python message = MIMEMultipart() message['From'] = sender message['To'] = receiver message['Subject'] = '邮件主题' # 添加邮件正文 text = MIMEText('邮件正文', 'plain', 'utf-8') message.attach(text) # 添加附件 with open('附件路径', 'rb') as f: attachment = MIMEApplication(f.read()) attachment.add_header('Content-Disposition', 'attachment', filename='附件名称') message.attach(attachment) ``` 4. 发送邮件 ```python # 连接邮箱服务器 smtp_server = 'smtp.邮箱后缀' smtp_port = 25 server = smtplib.SMTP(smtp_server, smtp_port) server.starttls() server.login(sender, password) # 发送邮件 server.sendmail(sender, receiver, message.as_string()) # 关闭连接 server.quit() ``` 5. 设置定时发送 ```python import schedule import time def send_email(): # 创建邮件对象和设置邮件内容 ... # 发送邮件 ... # 每天 9 点钟发送邮件 schedule.every().day.at('09:00').do(send_email) while True: schedule.run_pending() time.sleep(1) ``` 以上是利用 Python 自动发送邮件的基本步骤,需要注意的是,定时发送需要使用第三方库 `schedule`,需要先安装。另外,还需要将上述代码保存为 `.py` 文件,通过命令行运行或配置定时任务实现自动发送邮件的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值