• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

askomics / flaskomics / 8143972779

04 Mar 2024 04:54PM UTC coverage: 83.219%. Remained the same
8143972779

Pull #449

github

web-flow
Merge 6d2bc1d30 into 91939bc97
Pull Request #449: Bump xml2js and parse-bmfont-xml

6283 of 7550 relevant lines covered (83.22%)

0.83 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

60.42
/askomics/libaskomics/Mailer.py
1
import smtplib
1✔
2
from email.mime.multipart import MIMEMultipart
1✔
3
from email.mime.text import MIMEText
1✔
4

5
from askomics.libaskomics.Params import Params
1✔
6

7

8
class Mailer(Params):
1✔
9
    """Send mail
10

11
    Attributes
12
    ----------
13
    host : str
14
        SMTP host
15
    password : str
16
        SMTP password
17
    port : int
18
        SMTP port
19
    user : str
20
        SMTP user
21
    """
22

23
    def __init__(self, app, session):
1✔
24
        """init
25

26
        Parameters
27
        ----------
28
        app : Flask
29
            flask app
30
        session
31
            AskOmics session, contain the user
32
        """
33
        Params.__init__(self, app, session)
1✔
34
        try:
1✔
35
            self.host = self.settings.get('askomics', 'smtp_host')
1✔
36
            self.port = self.settings.get('askomics', 'smtp_port')
×
37
        except Exception:
1✔
38
            self.host = None
1✔
39
            self.port = None
1✔
40

41
        try:
1✔
42
            self.user = self.settings.get('askomics', 'smtp_user')
1✔
43
            self.password = self.settings.get('askomics', 'smtp_password')
×
44
        except Exception:
1✔
45
            self.user = None
1✔
46
            self.password = None
1✔
47

48
        try:
1✔
49
            self.sender = self.settings.get('askomics', 'smtp_sender')
1✔
50
        except Exception:
1✔
51
            self.sender = None
1✔
52

53
        try:
1✔
54
            self.connection = self.settings.get('askomics', 'smtp_connection')
1✔
55
        except Exception:
1✔
56
            self.connection = None
1✔
57

58
    def check_mailer(self):
1✔
59
        """Check if a smtp server is set
60

61
        Returns
62
        -------
63
        bool
64
            True if SMTP is set
65
        """
66
        if not self.host or not self.port or not self.sender:
1✔
67
            return False
1✔
68
        return True
×
69

70
    def send_mail(self, receiver, subject, body):
1✔
71
        """Send a mail
72

73
        Parameters
74
        ----------
75
        receiver : str
76
            receiver email adress
77
        subject : str
78
            email subject
79
        body : str
80
            Mail content
81
        """
82
        if self.check_mailer:
×
83
            pass
×
84
        message = MIMEMultipart('alternative')
×
85
        message.set_charset("utf-8")
×
86
        message["FROM"] = self.sender
×
87
        message["To"] = receiver
×
88
        message["Subject"] = subject
×
89

90
        _attach = MIMEText(body.encode('utf-8'), 'plain', 'UTF-8')
×
91
        message.attach(_attach)
×
92

93
        smtp = smtplib.SMTP(host=self.host, port=self.port)
×
94
        smtp.connect(self.host, self.port)
×
95

96
        if self.connection == "starttls":
×
97
            smtp.starttls()
×
98

99
        if self.user and self.password:
×
100
            smtp.login(self.user, self.password)
×
101

102
        smtp.sendmail(self.sender, receiver, message.as_string())
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc