|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我在使用Python发送邮件时遇到一个问题,就是收到的常见的 txt、xls等类型的附件文件不能直接查看。但是通过邮件客户端发送后打开显示正常。
附代码,请指点。
- import smtplib
- from email.mime.multipart import MIMEMultipart
- from email.mime.application import MIMEApplication
- from email.mime.text import MIMEText
- from email import encoders
- sender = "xxx123@163.com"
- receiver = "xxx@qq.com"
- content = "测试邮件内容"
- file_path = "mail.txt"
- message = MIMEMultipart()
- message["Subject"] = "Hello"
- message["From"] = sender
- message["To"] = receiver
- text = MIMEText(content, "plain", "utf-8")
- message.attach(text)
- with open(file_path, "rb") as f:
- attachment = MIMEApplication(f.read(), Name="附件")
- encoders.encode_base64(attachment)
- attachment.add_header("Content-Disposition", "attachment", filename = file_path)
- message.attach(attachment)
- smtp_obj = smtplib.SMTP("smtp.163.com", 25)
- smtp_obj.login("xxx@163.com", "************")
- try:
- smtp_obj.sendmail(sender, receiver, message.as_string())
- print("邮件发送成功!")
- except smtplib.SMTPException as err:
- print('邮件发送失败:', err)
- smtp_obj.quit()
复制代码
问题分析:
你在使用Python发送邮件时遇到的问题是,收到的附件文件无法直接查看,但是通过邮件客户端发送后可以正常打开。
解决方案:
问题可能出在邮件附件的编码上。为了确保附件能够正确传输和显示,你需要指定正确的编码方式,并且对附件进行适当的编码处理。
下面是修改后的代码,请参考:
- import smtplib
- from email.mime.multipart import MIMEMultipart
- from email.mime.application import MIMEApplication
- from email.mime.text import MIMEText
- from email import encoders
- sender = "xxx123@163.com"
- receiver = "xxx@qq.com"
- content = "测试邮件内容"
- file_path = "mail.txt"
- message = MIMEMultipart()
- message["Subject"] = "Hello"
- message["From"] = sender
- message["To"] = receiver
- text = MIMEText(content, "plain", "utf-8")
- message.attach(text)
- with open(file_path, "rb") as f:
- attachment = MIMEApplication(f.read())
- attachment.add_header("Content-Disposition", "attachment", filename=file_path)
- message.attach(attachment)
- smtp_obj = smtplib.SMTP("smtp.163.com", 25)
- smtp_obj.login("xxx@163.com", "[b][/b][b][/b][b][/b]")
- try:
- smtp_obj.sendmail(sender, receiver, message.as_string())
- print("邮件发送成功!")
- except smtplib.SMTPException as err:
- print('邮件发送失败:', err)
- smtp_obj.quit()
复制代码
在这个修改后的代码中,我去除了对附件内容的编码操作 encoders.encode_base64(attachment),并且在创建附件对象时不指定编码方式,默认使用二进制传输附件内容。
请尝试运行修改后的代码,查看是否能够正常显示附件内容。如果问题仍然存在,请提供更多详细的错误信息或现象,以便我能够进一步帮助你解决问题。
如果回答对你有帮助,请给我一个最佳答案! 
|
-
|