소스 검색

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 2 년 전
committed by GitHub
부모
커밋
d7f068bba2
No known key found for this signature in database GPG 키 ID: 4AEE18F83AFDEB23
7개의 변경된 파일49개의 추가작업 그리고 7개의 파일을 삭제
  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 파일 보기

@@ -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 파일 보기

@@ -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 파일 보기

@@ -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 파일 보기

@@ -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 파일 보기

@@ -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 파일 보기

@@ -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 파일 보기

@@ -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

불러오는 중...
취소
저장