繁体   English   中英

如何使用 Python 3.6 发送电子邮件附件

[英]How to send email attachments with Python 3.6

你介意帮助我吗,拜托! 我使用此页面中的所有代码如何使用 Python 发送电子邮件附件

但它没有用=(

这是我使用的最后一个版本

import smtplib
from smtplib import SMTP_SSL
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email import encoders
import os

filepath = 'D:/files/1.jpg'
fromaddr = "name@gmail.com"
toaddr = "name2@gmail.com"
password = '********'
mail_adr = 'smtp.gmail.com'
mail_port = 587

# Compose attachment
part = MIMEBase('application', "octet-stream")
part.set_payload(open(filepath, "rb").read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', "attachment; filename= %s" % os.path.basename(filepath))

# Compose message
msg = MIMEMultipart()
msg['From'] = fromaddr
msg['To'] = toaddr
msg.attach(part)

# Send mail
smtp = SMTP_SSL()
smtp.set_debuglevel(1)
smtp.connect(mail_adr, mail_port)
smtp.login(fromaddr, password)
smtp.sendmail(fromaddr, toaddr, msg.as_string())
smtp.quit()

这是我犯的错误

connect: ('smtp.gmail.com', 587)
connect: ('smtp.gmail.com', 587)
Traceback (most recent call last):
  File "C:/Users/Oleg/Desktop/444.py", line 31, in <module>
    smtp.connect(mail_adr, mail_port)
  File "C:\Users\Oleg\AppData\Local\Programs\Python\Python36-32\lib\smtplib.py", line 335, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "C:\Users\Oleg\AppData\Local\Programs\Python\Python36-32\lib\smtplib.py", line 1037, in _get_socket
    server_hostname=self._host)
  File "C:\Users\Oleg\AppData\Local\Programs\Python\Python36-32\lib\ssl.py", line 401, in wrap_socket
    _context=self, _session=session)
  File "C:\Users\Oleg\AppData\Local\Programs\Python\Python36-32\lib\ssl.py", line 808, in __init__
    self.do_handshake()
  File "C:\Users\Oleg\AppData\Local\Programs\Python\Python36-32\lib\ssl.py", line 1061, in do_handshake
    self._sslobj.do_handshake()
  File "C:\Users\Oleg\AppData\Local\Programs\Python\Python36-32\lib\ssl.py", line 683, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: UNKNOWN_PROTOCOL] unknown protocol (_ssl.c:749)

你试过emailpy吗? (我是作者)

它支持任何附件格式,除非您的电子邮件提供商对其进行限制。

示例:

import emailpy
emailManager = emailpy.EmailManager('yourcooladdress@domain.com', 'youremailpassword') # this may take a few seconds to generate
emailManager.send(['sendsomething@gmail.com', 'anotheremail@hotmail.com'],  \
subject = 'Subject here', body = 'body text here', html = 'some html here', \
attachments = ['file1.png', 'file2.txt', 'file3.py'], \
nofileattach = {'file.txt': 'hi, this is some data'}) 
# send email to sendsomething@gmail.com and anotheremail@hotmail.com with subject "Subject here"
#, body "body text here", html "some html here", and some attachments: 
# "file1.png", "file2.txt", "file3.py". Also, it adds a file called file.txt
# that has the contents "hi, this is some data"

emailpy 文档可以在其 PyPI 页面上下载,也可以从这里下载

所有邮件服务器都已经用emailpy测试成功,在python 3.x上使用emailpy不会出错(python 2不支持emailpy,主要是语法问题)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM