发送图片附件邮件

def sendMail(from_email, to_email ,subject,plain_text, html_body, files):
    # 打开HTML格式的文件,这是要发送的邮件正文

    msgRoot = MIMEMultipart('related')

    if to_email.find('ic.net.cn'):
        msgRoot['Subject'] = email.Header.Header(subject.decode('utf-8').encode('gb2312'), 'gb2312') 
    else:
        msgRoot['Subject'] = email.Header.Header(subject.decode('utf-8'), 'utf-8') 

    #msgRoot['Subject'] = subject
    msgRoot['From'] = from_email
    msgRoot['To'] = to_email.replace('\n','')
    msgRoot.preamble = 'This is a multi-part message in MIME format.'
    msgRoot["Accept-Charset"]="ISO-8859-1,utf-8"

    msgAlternative = MIMEMultipart('alternative')
    msgRoot.attach(msgAlternative)
    # 设定纯文本信息
    msgText = MIMEText(plain_text.encode('utf-8'),"plain","utf-8")
    msgAlternative.attach(msgText)
    # 设定HTML邮件正文

    #发送附件
    for file in files: 
        fp = open(file, 'rb')  
        msgImage = MIMEImage(fp.read())  
        fp.close()  
        msgImage.add_header('Content-ID', '<image1>')  
        msgRoot.attach(msgImage)  

    html_body = "%s <br/><img src='cid:image1' />" % html_body

    msgText = MIMEText(html_body, 'html','utf-8')
    msgAlternative.attach(msgText)

    #发送邮件
    smtp = smtplib.SMTP(Host)
    smtp.set_debuglevel(0)
    # auth login 命令
    smtp.docmd("HELO %s" %Host)
    smtp.docmd("AUTH LOGIN")
    # 发送用户名,是base64编码过的,用send发送的,所以要用getreply获取返回信息
    smtp.send(base64.encodestring(username))
    smtp.getreply()
    # 发送密码
    smtp.send(base64.encodestring(password))
    smtp.getreply()
    try:
        error = smtp.sendmail(from_email,to_email,msgRoot.as_string())
    finally:
        smtp.quit()

 

简单的控制台程序 主要是为了学习之用 本人花时间编写。为了和大家分享和学习用,如有什么错误或认为本人哪里处理不当 请和我联系~~ 内容: 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、付费专栏及课程。

余额充值