diff --git a/libs/community/langchain_google_community/gmail/search.py b/libs/community/langchain_google_community/gmail/search.py index a14c0037d..a0f40ff9f 100644 --- a/libs/community/langchain_google_community/gmail/search.py +++ b/libs/community/langchain_google_community/gmail/search.py @@ -89,8 +89,8 @@ def _parse_messages(self, messages: List[Dict[str, Any]]) -> List[Dict[str, Any] email_msg = email.message_from_bytes(raw_message) - subject = email_msg["Subject"] - sender = email_msg["From"] + subject = email_msg.get("Subject", "") + sender = email_msg.get("From", "") message_body = "" if email_msg.is_multipart(): @@ -99,18 +99,22 @@ def _parse_messages(self, messages: List[Dict[str, Any]]) -> List[Dict[str, Any] cdispo = str(part.get("Content-Disposition")) if ctype == "text/plain" and "attachment" not in cdispo: try: - message_body = part.get_payload(decode=True).decode("utf-8") # type: ignore[union-attr] + message_body = part.get_payload(decode=True).decode( # type: ignore[union-attr] + "utf-8", errors="replace" + ) except UnicodeDecodeError: message_body = part.get_payload(decode=True).decode( # type: ignore[union-attr] - "latin-1" + "latin-1", errors="replace" ) break else: try: - message_body = email_msg.get_payload(decode=True).decode("utf-8") # type: ignore[union-attr] + message_body = email_msg.get_payload(decode=True).decode( # type: ignore[union-attr] + "utf-8", errors="replace" + ) except UnicodeDecodeError: message_body = email_msg.get_payload(decode=True).decode( # type: ignore[union-attr] - "latin-1" + "latin-1", errors="replace" ) body = clean_email_body(message_body)