Quellcode durchsuchen

Merge pull request #17880 from frappe/mergify/bp/version-14-hotfix/pr-17683

feat: Add STARTTLS  authentification method for IMAP protocol (backport #17683)
version-14
Ritwik Puri vor 2 Jahren
committed by GitHub
Ursprung
Commit
d7f068bba2
Es konnte kein GPG-Schlüssel zu dieser Signatur gefunden werden GPG-Schlüssel-ID: 4AEE18F83AFDEB23
7 geänderte Dateien mit 49 neuen und 7 gelöschten Zeilen
  1. +10
    -1
      frappe/email/doctype/email_account/email_account.json
  2. +3
    -0
      frappe/email/doctype/email_account/email_account.py
  3. +9
    -1
      frappe/email/doctype/email_domain/email_domain.json
  4. +4
    -1
      frappe/email/doctype/email_domain/email_domain.py
  5. +1
    -0
      frappe/email/doctype/email_domain/test_email_domain.py
  6. +3
    -0
      frappe/email/receive.py
  7. +19
    -4
      frappe/translations/fr.csv

+ 10
- 1
frappe/email/doctype/email_account/email_account.json Datei anzeigen

@@ -29,6 +29,7 @@
"default_incoming",
"use_imap",
"use_ssl",
"use_starttls",
"email_server",
"incoming_port",
"column_break_18",
@@ -601,12 +602,20 @@
"fieldtype": "Select",
"label": "Method",
"options": "Basic\nOAuth"
},
{
"default": "0",
"depends_on": "eval:!doc.domain && doc.enable_incoming && doc.use_imap && !doc.use_ssl",
"fetch_from": "domain.use_starttls",
"fieldname": "use_starttls",
"fieldtype": "Check",
"label": "Use STARTTLS"
}
],
"icon": "fa fa-inbox",
"index_web_pages_for_search": 1,
"links": [],
"modified": "2022-08-10 13:05:45.445572",
"modified": "2022-08-16 13:05:45.445572",
"modified_by": "Administrator",
"module": "Email",
"name": "Email Account",


+ 3
- 0
frappe/email/doctype/email_account/email_account.py Datei anzeigen

@@ -82,6 +82,7 @@ class EmailAccount(Document):
return

use_oauth = self.auth_method == "OAuth"
self.use_starttls = cint(self.use_imap and self.use_starttls and not self.use_ssl)

if getattr(self, "service", "") != "GMail" and use_oauth:
self.auth_method = "Basic"
@@ -187,6 +188,7 @@ class EmailAccount(Document):
"use_imap",
"email_server",
"use_ssl",
"use_starttls",
"smtp_server",
"use_tls",
"smtp_port",
@@ -209,6 +211,7 @@ class EmailAccount(Document):
"email_account": self.name,
"host": self.email_server,
"use_ssl": self.use_ssl,
"use_starttls": self.use_starttls,
"username": getattr(self, "login_id", None) or self.email_id,
"service": getattr(self, "service", ""),
"use_imap": self.use_imap,


+ 9
- 1
frappe/email/doctype/email_domain/email_domain.json Datei anzeigen

@@ -12,6 +12,7 @@
"email_server",
"use_imap",
"use_ssl",
"use_starttls",
"column_break_9",
"incoming_port",
"attachment_limit",
@@ -60,6 +61,13 @@
"fieldtype": "Check",
"label": "Use SSL"
},
{
"default": "0",
"depends_on": "eval:doc.use_imap && !doc.use_ssl",
"fieldname": "use_starttls",
"fieldtype": "Check",
"label": "Use STARTTLS"
},
{
"description": "Ignore attachments over this size",
"fieldname": "attachment_limit",
@@ -125,7 +133,7 @@
"link_fieldname": "domain"
}
],
"modified": "2022-08-10 21:20:50.692698",
"modified": "2022-08-19 12:55:06.434541",
"modified_by": "Administrator",
"module": "Email",
"name": "Email Domain",


+ 4
- 1
frappe/email/doctype/email_domain/email_domain.py Datei anzeigen

@@ -56,6 +56,7 @@ class EmailDomain(Document):
"email_server",
"use_imap",
"use_ssl",
"use_starttls",
"use_tls",
"attachment_limit",
"smtp_server",
@@ -76,10 +77,12 @@ class EmailDomain(Document):
def validate_incoming_server_conn(self):
self.incoming_port = get_port(self)

conn_method = Timed_POP3_SSL if self.use_ssl else Timed_POP3
if self.use_imap:
conn_method = Timed_IMAP4_SSL if self.use_ssl else Timed_IMAP4
else:
conn_method = Timed_POP3_SSL if self.use_ssl else Timed_POP3

self.use_starttls = cint(self.use_imap and self.use_starttls and not self.use_ssl)
incoming_conn = conn_method(self.email_server, port=self.incoming_port)
incoming_conn.logout() if self.use_imap else incoming_conn.quit()



+ 1
- 0
frappe/email/doctype/email_domain/test_email_domain.py Datei anzeigen

@@ -33,6 +33,7 @@ class TestDomain(unittest.TestCase):
# Also make sure that the other attributes match
self.assertEqual(mail_account.use_imap, mail_domain.use_imap)
self.assertEqual(mail_account.use_ssl, mail_domain.use_ssl)
self.assertEqual(mail_account.use_starttls, mail_domain.use_starttls)
self.assertEqual(mail_account.use_tls, mail_domain.use_tls)
self.assertEqual(mail_account.attachment_limit, mail_domain.attachment_limit)
self.assertEqual(mail_account.smtp_server, mail_domain.smtp_server)


+ 3
- 0
frappe/email/receive.py Datei anzeigen

@@ -100,6 +100,9 @@ class EmailServer:
self.settings.host, self.settings.incoming_port, timeout=frappe.conf.get("pop_timeout")
)

if cint(self.settings.use_starttls):
self.imap.starttls()

if self.settings.use_oauth:
Oauth(
self.imap,


+ 19
- 4
frappe/translations/fr.csv Datei anzeigen

@@ -327,7 +327,7 @@ Active Domains,Domaines Actifs,
Active Sessions,Sessions Actives,
Activity Log,Journal d'Activité,
Activity log of all users.,Journal d'activité de tous les utilisateurs.,
Add / Manage Email Domains.,Ajouter / Gérer les Noms de Domaines des Emails,
Add / Manage Email Domains.,Ajouter / Gérer les serveurs de courriels,
Add / Update,Ajouter / mettre à jour,
Add A New Rule,Ajouter une Nouvelle Règle,
Add Another Comment,Ajouter un Autre Commentaire,
@@ -959,8 +959,8 @@ Eg. smsgateway.com/api/send_sms.cgi,Eg. smsgateway.com / api / send_sms.cgi,
Email Account Name,Nom du Compte Email,
Email Account added multiple times,Compte Email ajouté plusieurs fois,
Email Addresses,Adresse Email,
Email Domain,Nom de Domaine Email,
"Email Domain not configured for this account, Create one?","Nom de Domain de l'Email non configuré pour ce compte, En créer un ?",
Email Domain,Serveur de courriels,
"Email Domain not configured for this account, Create one?","Serveur de courriels non configuré pour ce compte, En créer un ?",
Email Flag Queue,Liste d'Attente des d'Emails Marqués,
Email Footer Address,Pied de Page Email,
Email Group,Groupe Email,
@@ -3619,7 +3619,7 @@ Upload {0} files,Télécharger des fichiers {0},
Uploaded To Google Drive,Téléchargé sur Google Drive,
Uploaded successfully,Envoyé avec succès,
Uploading {0} of {1},Téléchargement de {0} sur {1},
Use SSL for Outgoing,Utiliser SSL pour les sorties,
Use SSL,Utiliser SSL
Use Same Name,Utiliser le même nom,
Used For Google Maps Integration.,Utilisé pour l'intégration de Google Maps.,
User ID Property,Propriété ID utilisateur,
@@ -4726,3 +4726,18 @@ Always use this email address as sender address,Toujours utiliser cet email comm
Always use this name as sender name,Toujours utiliser ce nom comme expediteur
Login to {0},Se connecter à {0}
Add / Remove Fields,Ajouter / Supprimer des colonnes
Use STARTTLS,Utiliser le STARTTLS
Outgoing Settings,Configurations des Courriels Sortant
Incoming Settings,Configurations des Courriels Entrant
Incoming Server,Serveur de Courriel Entrant
Outgoing Server,Serveur de Courriel Sortant
Use different Email ID,Utiliser une authentification email différente
Alternative Email ID,Email de connexion alternatif
Incoming (POP/IMAP) Settings,Configuration POP/IMAP
IMAP Details,Détails IMAP
IMAP Folder,Dossier IMAP à récupérer
Document Linking,Lien vers les documents
Auto Reply,Réponse automatique
Footer Content,Contenue du pied de page
Brand Logo,Logo de la marque
Folder Name,Nom du dossier

Laden…
Abbrechen
Speichern