File: //usr/lib/python2.7/site-packages/salt/states/smtp.py
# -*- coding: utf-8 -*-
'''
Sending Messages via SMTP
==========================
.. versionadded:: 2014.7.0
This state is useful for firing messages during state runs, using the SMTP
protocol
.. code-block:: yaml
server-warning-message:
smtp.send_msg:
- name: 'This is a server warning message'
- profile: my-smtp-account
- recipient: admins@example.com
'''
# Import Python libs
from __future__ import absolute_import, unicode_literals, print_function
def __virtual__():
'''
Only load if the SMTP module is available in __salt__
'''
return 'smtp' if 'smtp.send_msg' in __salt__ else False
def send_msg(name,
recipient,
subject,
sender=None,
profile=None,
use_ssl='True',
attachments=None):
'''
Send a message via SMTP
.. code-block:: yaml
server-warning-message:
smtp.send_msg:
- name: 'This is a server warning message'
- profile: my-smtp-account
- subject: 'Message from Salt'
- recipient: admin@example.com
- sender: admin@example.com
- use_ssl: True
- attachments:
- /var/log/syslog
- /var/log/messages
name
The message to send via SMTP
'''
ret = {'name': name,
'changes': {},
'result': None,
'comment': ''}
if profile is None and sender is None:
ret['result'] = False
ret['comment'] = 'Missing parameter sender or profile for state smtp.send_msg'
return ret
if __opts__['test']:
ret['comment'] = 'Need to send message to {0}: {1}'.format(
recipient,
name,
)
return ret
command = __salt__['smtp.send_msg'](
message=name,
recipient=recipient,
profile=profile,
subject=subject,
sender=sender,
use_ssl=use_ssl,
attachments=attachments,
)
if command:
ret['result'] = True
if attachments:
atts = ', '.join(attachments)
ret['comment'] = 'Sent message to {0} with attachments ({2}): {1}' \
.format(recipient, name, atts)
else:
ret['comment'] = 'Sent message to {0}: {1}'.format(recipient, name)
else:
ret['result'] = False
ret['comment'] = 'Unable to send message to {0}: {1}'.format(recipient, name)
return ret