通过查阅资料,发现国内博客,在讲诉解决问题的方法的时候往往省略一些关键步骤,所以,将行之有效的解决方式公开。
</pre><pre code_snippet_id="1617192" snippet_file_name="blog_20160320_3_417240" name="code" class="html"># -*- coding: utf-8 -*- import smtplib import email.MIMEMultipart# import MIMEMultipart import email.MIMEText# import MIMEText import email.MIMEBase# import MIMEBase import os.path import mimetypes import email.MIMEImage# import MIMEImage From = raw_input('From: ') To = raw_input('To: ') password=raw_input('Password: ') file_name = "c:/1.jpg"#附件名 username = "[email protected]" smtp_server = raw_input('SMTP server: ') server = smtplib.SMTP_SSL(smtp_server) server.login(username,password) #仅smtp服务器需要验证时 # 构造MIMEMultipart对象做为根容器 main_msg = email.MIMEMultipart.MIMEMultipart() # 构造MIMEText对象做为邮件显示内容并附加到根容器 text_msg = email.MIMEText.MIMEText('<html><body><h1>Hello</h1>' + '<p>send by <a href="https://www.baidu.com/">baidu</a>...</p>' + '</body></html>', 'html', 'utf-8') main_msg.attach(text_msg) # 构造MIMEBase对象做为文件附件内容并附加到根容器 ctype,encoding = mimetypes.guess_type(file_name) if ctype is None or encoding is not None: ctype='application/octet-stream' maintype,subtype = ctype.split('/',1) file_msg=email.MIMEImage.MIMEImage(open(file_name,'rb').read(),subtype) print ctype,encoding ## 设置附件头 basename = os.path.basename(file_name) file_msg.add_header('Content-Disposition','attachment', filename = basename)#修改邮件头 main_msg.attach(file_msg) # 设置根容器属性 main_msg['From'] = From main_msg['To'] = To main_msg['Subject'] = "主题 " main_msg['Date'] = email.Utils.formatdate( ) # 得到格式化后的完整文本 fullText = main_msg.as_string( ) # 用smtp发送邮件 try: server.sendmail(From, To, fullText) finally: server.quit()
通过尝试七种python QQ邮件发送方式,得出以下结论。
需要注意的是SSL安全连接。
方法1:开启465端口接收SSL邮件。
方法2:在25端口的stmp上增加startts命令支持。
方法3:使用QQ邮箱开启IMAP服务。
首先:在QQ邮箱中启用IMAP功能。(QQ邮箱—>设置->账户->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务)
开启服务后,会出现以下情况。
此时,你可以通过利用python (QQ邮箱->任何邮箱)。
由于QQ版本的原因,也会失败。
解决方法如下:(仔细阅读,缺少任何一个步骤都不能成功)
1:下载 Foxmail(文件中含安装包)。
2.:登陆时候输入QQ账号,密码不是你的QQ密码,而是授权码。
点击我已发送,获得授权码。
此授权码可作为Foxmail登陆时候密码使用,同样,在python测试程序中,密码处也要使用授权码。