python,针对所有邮件的自由收发。(例子,QQ发给任何邮箱)

通过查阅资料,发现国内博客,在讲诉解决问题的方法的时候往往省略一些关键步骤,所以,将行之有效的解决方式公开。
</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测试程序中,密码处也要使用授权码。




你可能感兴趣的:(python,针对所有邮件的自由收发。(例子,QQ发给任何邮箱))