带附件的邮件的发送方法

大家好,我是天空之城,今天给大家带来发送带附件的邮件方法。附件可以是图片,音频,表格,视频,pdf都可以。
感谢博友「Samaritan·J」

import smtplib
# smtplib 用于邮件的发信动作
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.mime.application import MIMEApplication
# 处理任意二进制文件

if __name__ == '__main__':

    msg = MIMEMultipart()
    # 创建包含多个部分的邮件体的 MIME 对象实例
    user = 'xxx@qq.com' # 发件人邮箱账号
    password = 'pwd' # 发件人邮箱密码/授权码
    to_addr = 'xxx@163.com' # 收件人地址
    smtp_serv = 'smtp.qq.com' # 发信服务器
    
    msg['From'] = Header("编辑发件人", 'utf-8')
    msg['To'] = Header("编辑收件人", 'utf-8')
    msg['Subject'] = Header('编辑邮件标题', 'utf-8')
    
    msg.attach(MIMEText('邮件正文文本内容', _subtype='html', _charset='utf-8'))
    part = MIMEApplication(open(r'C:\Users\data.xlsx', 'rb').read())
    # open里输入添加附件文件的绝对路径
    part.add_header('Content-Disposition', 'attachment', filename='data.xlsx')
    # 构造附件,filename是编辑附件文件名,可以随便写
    msg.attach(part)
	# 添加附件
	
    server = smtplib.SMTP() # 开启发信服务(也可使用加密传输)
    server.connect(smtp_serv,25) # 连接服务器
    server.login(user, password) # 登录发信邮箱
    server.sendmail(user,to_addr, msg.as_string()) # 发送邮件
    server.quit() # 关闭服务器


原文链接:https://blog.csdn.net/u010890916/article/details/106596881
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
简单的控制台程序 主要是为了学习之用 本人花时间编写。为了和大家分享和学习用,如有什么错误或认为本人哪里处理不当 请和我联系~~ 内容: main.cpp 就一个cpp文件 //1.首先需要连接邮件服务器 这里用socket 邮件服务器端口 25 //2.现在就是和服务器对话了 //3.结束 #include #include #include #include #include #include #include #include #include #include #include #include #pragma comment(lib,"WS2_32.lib") using namespace std; /*加附件的版本*/ //base64编码 string Base64Encode(LPCTSTR lpszSrc); //base64解码 string Base64Decode(LPCTSTR lpszSrc); //读文件数据 bool ReadFromFile(const char* pszFilename,string &filename); unsigned char* m_pbText; int main() { //1.首先需要连接邮件服务器 这里用socket 邮件服务器端口 25 WSADATA Wsa; //进行WINSOCK的设置 WSAStartup(0x0101,&Wsa); SOCKET s = socket(AF_INET,SOCK_STREAM,IPPROTO_IP); SOCKADDR_IN sin; LPHOSTENT lphost = gethostbyname("smtp.163.com");//这里是用网易的邮件服务器 也可以修改 if(lphost) sin.sin_addr.s_addr = ((LPIN_ADDR)lphost->h_addr)->s_addr; else { printf("%s\n","获取地址失败"); return 1; } sin.sin_family = AF_INET; //注意邮件服务器的侦听端口 25 sin.sin_port = htons(IPPORT_SMTP); //连接服务器 if(connect(s,(LPSOCKADDR)&sin,sizeof(sin))==SOCKET_ERROR) { printf("%s\n","连接错误"); return 1; } printf("%s\n","连接成功"); //接收服务器初次回应 char buff[1024]; memset(buff,0,sizeof(buff)); recv(s,buff,sizeof(buff),0); printf("服务说:%s\n",buff); /////上面已经完成连接了///// string szLine="\r\n";//相当于你按下回车 //2.现在就是和服务器对话了 //问候服务器 string szHelo = "HELO smtp.163.com" + szLine; printf("我说:%s\n",szHelo.c_str()); send(s,szHelo.c_str(),szHelo.length(),0); memset(buff,0,sizeof(buff)); recv(s,buff,sizeof(buff),0); printf("服务说:%s\n",buff); //请求验证用户密码(需要编码) string szAL = "auth login" + szLine; //发送验证命令 printf("我说:%s\n",szAL.c_str()); send(s,szAL.c_str(),szAL.length(),0); memset(buff,0,sizeof(buff)); recv(s,buff,sizeof(buff),0); // printf("服务说:%s\n",buff); //服务器会回答说 可以输入帐号 //发送帐号 string szUser; .... 具体自己下载运行即可 装个VC6.0 即可

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值