fix: use %20 encoding instead of + for Outlook deeplink body and add --only option
This commit is contained in:
parent
a1f8b4412e
commit
4bb57962dc
2 changed files with 31 additions and 11 deletions
|
|
@ -302,12 +302,12 @@ class Command(BaseCommand):
|
|||
"source_user": source_user.username,
|
||||
})
|
||||
|
||||
# URL Outlook Web Deep Link pour composer directement
|
||||
# URL Outlook Web Deep Link pour composer directement (%20 au lieu de + pour les espaces)
|
||||
deeplink_params = urllib.parse.urlencode({
|
||||
"to": email,
|
||||
"subject": subject,
|
||||
"body": body,
|
||||
})
|
||||
}, quote_via=urllib.parse.quote)
|
||||
outlook_deeplink = f"https://outlook.cloud.microsoft/mail/deeplink/compose?{deeplink_params}"
|
||||
|
||||
drafts_payload.append({
|
||||
|
|
|
|||
|
|
@ -94,8 +94,8 @@ def main():
|
|||
parser.add_argument(
|
||||
"--delay",
|
||||
type=float,
|
||||
default=2.5,
|
||||
help="Délai en secondes entre l'ouverture de chaque brouillon en mode automatique (défaut : 2.5s).",
|
||||
default=6.0,
|
||||
help="Délai en secondes entre l'ouverture de chaque brouillon en mode automatique (défaut : 6.0s).",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--step",
|
||||
|
|
@ -103,6 +103,12 @@ def main():
|
|||
default=False,
|
||||
help="Mode pas-à-pas : demande confirmation avant d'ouvrir chaque brouillon.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--only",
|
||||
type=str,
|
||||
default=None,
|
||||
help="Filtre pour n'ouvrir que les brouillons correspondant à ce texte (nom, email ou login).",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--dry-run",
|
||||
action="store_true",
|
||||
|
|
@ -136,6 +142,18 @@ def main():
|
|||
print("Aucun brouillon trouvé dans la charge utile.")
|
||||
return
|
||||
|
||||
if args.only:
|
||||
pattern = args.only.lower()
|
||||
drafts = [
|
||||
d
|
||||
for d in drafts
|
||||
if pattern in d.get("to", "").lower()
|
||||
or pattern in d.get("first_name", "").lower()
|
||||
or pattern in d.get("last_name", "").lower()
|
||||
or pattern in d.get("username", "").lower()
|
||||
]
|
||||
print(f"Filtre '{args.only}' appliqué : {len(drafts)} brouillon(s) sélectionné(s).")
|
||||
|
||||
print(f"Chargement de {len(drafts)} brouillon(s) depuis {payload_file.name}...")
|
||||
|
||||
# Mode HTML
|
||||
|
|
@ -189,16 +207,18 @@ def main():
|
|||
for idx, item in enumerate(drafts, start=1):
|
||||
to_email = item.get("to", "")
|
||||
subject = item.get("subject", "")
|
||||
deeplink = item.get("outlook_deeplink")
|
||||
first_name = item.get("first_name", "")
|
||||
last_name = item.get("last_name", "")
|
||||
|
||||
if not deeplink:
|
||||
params = urllib.parse.urlencode({
|
||||
# Reconstruire le deep link pour garantir l'encodage %20 des espaces (supprime les '+' intempestifs)
|
||||
body = item.get("body", "")
|
||||
params = urllib.parse.urlencode(
|
||||
{
|
||||
"to": to_email,
|
||||
"subject": subject,
|
||||
"body": item.get("body", ""),
|
||||
})
|
||||
"body": body,
|
||||
},
|
||||
quote_via=urllib.parse.quote,
|
||||
)
|
||||
deeplink = f"https://outlook.cloud.microsoft/mail/deeplink/compose?{params}"
|
||||
|
||||
print(f"[{idx}/{len(drafts)}] {first_name} {last_name} <{to_email}>")
|
||||
|
|
|
|||
Loading…
Reference in a new issue