def get_attachment(self, part): #charset = self.get_charset(part) fcontent = part.get_payload(decode=True) if fcontent: content_type = part.get_content_type() fname = part.get_filename() if fname: try: fname = fname.replace('\n', ' ').replace('\r', '') fname = cstr(decode_header(fname)[0][0]) except: fname = get_random_filename(content_type=content_type) else: fname = get_random_filename(content_type=content_type) self.attachments.append({ 'content_type': content_type, 'fname': fname, 'fcontent': fcontent, }) cid = (cstr(part.get("Content-Id")) or "").strip("><") if cid: self.cid_map[fname] = cid
def _save_file(match): data = match.group(1) data = data.split("data:")[1] headers, content = data.split(",") if "filename=" in headers: filename = headers.split("filename=")[-1] # decode filename if not isinstance(filename, text_type): filename = text_type(filename, 'utf-8') else: mtype = headers.split(";")[0] filename = get_random_filename(content_type=mtype) _file = frappe.get_doc({ "doctype": "File", "file_name": filename, "content": content, "decode": True }) _file.save(ignore_permissions=True) file_url = _file.file_url if not frappe.flags.has_dataurl: frappe.flags.has_dataurl = True return '<img src="{file_url}"'.format(file_url=file_url)