Skip to content

Commit 389d068

Browse files
committed
adding extra in put for byte code
1 parent 7445b63 commit 389d068

File tree

3 files changed

+27
-4
lines changed

3 files changed

+27
-4
lines changed

api/data_ingestion/internal/email.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ def send_dq_report_email_with_pdf(body: EmailRenderRequest[DqReportRenderRequest
149149

150150
# Generate HTML and text content
151151
res = requests.post(
152-
f"{settings.EMAIL_RENDERER_URL}/email/dq-report",
152+
f"{settings.EMAIL_RENDERER_SERVICE_URL}/email/dq-report",
153153
headers={
154154
"Authorization": f"Bearer {settings.EMAIL_RENDERER_BEARER_TOKEN}",
155155
"Content-Type": "application/json",
@@ -169,7 +169,7 @@ def send_dq_report_email_with_pdf(body: EmailRenderRequest[DqReportRenderRequest
169169

170170
# Generate PDF
171171
pdf_res = requests.post(
172-
f"{settings.EMAIL_RENDERER_URL}/email/dq-report-pdf",
172+
f"{settings.EMAIL_RENDERER_SERVICE_URL}/email/dq-report-pdf",
173173
headers={
174174
"Authorization": f"Bearer {settings.EMAIL_RENDERER_BEARER_TOKEN}",
175175
"Content-Type": "application/json",
@@ -217,7 +217,7 @@ async def generate_dq_report_pdf(body: EmailRenderRequest[DqReportRenderRequest]
217217

218218
# Call the email service to generate PDF
219219
res = requests.post(
220-
f"{settings.EMAIL_RENDERER_URL}/email/dq-report-pdf",
220+
f"{settings.EMAIL_RENDERER_SERVICE_URL}/email/dq-report-pdf",
221221
headers={
222222
"Authorization": f"Bearer {settings.EMAIL_RENDERER_BEARER_TOKEN}",
223223
"Content-Type": "application/json",

api/data_ingestion/routers/email.py

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,4 +154,26 @@ def send_generic_email(
154154
if credentials.credentials != settings.EMAIL_RENDERER_BEARER_TOKEN:
155155
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED)
156156

157-
send_email_base(**body.model_dump())
157+
# Ensure attachments are base64-encoded strings as required by Mailjet v3 send API
158+
email_data = body.model_dump()
159+
if email_data.get("attachments"):
160+
import base64
161+
162+
normalized_attachments = []
163+
for attachment in email_data["attachments"]:
164+
normalized = attachment.copy()
165+
content = normalized.get("content")
166+
# If content is bytes, encode to base64 string
167+
if isinstance(content, bytes | bytearray):
168+
normalized["content"] = base64.b64encode(content).decode("ascii")
169+
# If content is a data URL (e.g., data:application/pdf;base64,XXX), strip the prefix
170+
elif isinstance(content, str) and content.startswith("data:"):
171+
try:
172+
normalized["content"] = content.split(",", 1)[1]
173+
except Exception:
174+
pass
175+
# Otherwise assume it's already base64 string; leave as is
176+
normalized_attachments.append(normalized)
177+
email_data["attachments"] = normalized_attachments
178+
179+
send_email_base(**email_data)

api/data_ingestion/schemas/email.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,3 +48,4 @@ class GenericEmailRequest(BaseModel):
4848
subject: str
4949
html_part: str | None = Field(None)
5050
text_part: str | None = Field(None)
51+
attachments: list[dict] | None = Field(None)

0 commit comments

Comments
 (0)