我正在尝试使用Gmail API和以下功能发送各种大小的电子邮件。
通常,这可以正常工作,但是对于超过10MB的附件(这种情况很少见,但会发生)Errno 10053,我 认为这 是因为在发送包含大型附件的邮件时超时。
Errno 10053
是否有办法解决这个问题,例如指定大小或增加超时限制?Gmail API文档中提到了尺寸,但我一直在努力了解如何在Python中使用尺寸,甚至是否有帮助。
def CreateMessageWithAttachment(sender, to, cc, subject, message_text, file_dir, filename): """Create a message for an email. Args: sender: Email address of the sender. to: Email address of the receiver. subject: The subject of the email message. message_text: The text of the email message. file_dir: The directory containing the file to be attached. filename: The name of the file to be attached. Returns: An object containing a base64url encoded email object. """ message = MIMEMultipart() message['to'] = to if cc != None: message['cc'] = cc message['from'] = sender message['subject'] = subject msg = MIMEText(message_text) message.attach(msg) path = os.path.join(file_dir, filename) content_type, encoding = mimetypes.guess_type(path) QCoreApplication.processEvents() if content_type is None or encoding is not None: content_type = 'application/octet-stream' main_type, sub_type = content_type.split('/', 1) if main_type == 'text': fp = open(path, 'rb') msg = MIMEText(fp.read(), _subtype=sub_type) fp.close() elif main_type == 'image': fp = open(path, 'rb') msg = MIMEImage(fp.read(), _subtype=sub_type) fp.close() elif main_type == 'audio': fp = open(path, 'rb') msg = MIMEAudio(fp.read(), _subtype=sub_type) fp.close() else: fp = open(path, 'rb') msg = MIMEBase(main_type, sub_type) msg.set_payload(fp.read()) fp.close() QCoreApplication.processEvents() msg.add_header('Content-Disposition', 'attachment', filename=filename) message.attach(msg) return {'raw': base64.urlsafe_b64encode(message.as_string())} def SendMessage(service, user_id, message, size): """Send an email message. Args: service: Authorized Gmail API service instance. user_id: User's email address. The special value "me" can be used to indicate the authenticated user. message: Message to be sent. Returns: Sent Message. """ try: message = (service.users().messages().send(userId=user_id, body=message) .execute()) QCoreApplication.processEvents() return message except errors.HttpError, error: pass
您需要对大文件使用MEDIA / upload选项。然后,您可以发送Gmail允许的最大电子邮件数量。有关如何使用/上传的文档:https : //developers.google.com/gmail/api/v1/reference/users/messages/send
10MB的限制没有充分记录。