Files
gtav-src/tools_ng/techart/script/python/packages/RS/Utils/Email.py
T
2025-09-29 00:52:08 +02:00

77 lines
2.7 KiB
Python
Executable File

import os
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email import encoders
import smtplib
import types
import RS.Config
SUPPORTED_TEXT_ATTACHMENTS = [ 'xml', 'ulog', 'txt', 'ms', 'py', 'ini', 'log' ]
SUPPORTED_IMAGE_ATTACHMENTS = [ 'png', 'tga', 'jpg', 'bmp' ]
def Send( emailFrom, emailTo, emailSubject, emailBody, asHtml = False, attachments = [] ):
'''
Sends an email using the exchange server found in the project module.
'''
global SUPPORTED_IMAGE_ATTACHMENTS
global SUPPORTED_TEXT_ATTACHMENTS
toStr = ''
if not type( emailTo ) == types.ListType and not type( emailTo ) == types.TupleType:
emailTo = [ emailTo ]
for emailAddress in emailTo:
toStr += emailAddress + ';'
message = MIMEMultipart( 'alternative' )
message[ 'Subject' ] = '{0}'.format( emailSubject )
message[ 'To' ] = toStr
message[ 'From' ] = emailFrom
if asHtml:
body = MIMEText( emailBody, 'html' )
else:
body = MIMEText( emailBody )
message.attach( body )
for attachment in attachments:
if os.path.isfile( attachment ):
fileType = str( attachment ).split( '.' )[ -1 ].lower()
if fileType in SUPPORTED_TEXT_ATTACHMENTS:
part = MIMEBase( 'application', 'octet-stream' )
part.set_payload( open( attachment, 'r' ).read() )
encoders.encode_base64( part )
part.add_header( 'Content-Disposition', 'attachment; filename={0}'.format( os.path.basename( attachment ) ) )
message.attach( part )
elif fileType in SUPPORTED_IMAGE_ATTACHMENTS:
part = MIMEBase( 'application', 'octet-stream' )
part.set_payload( open( attachment, 'rb' ).read() )
encoders.encode_base64( part )
part.add_header( 'Content-Disposition', 'attachment; filename={0}'.format( os.path.basename( attachment ) ) )
message.attach( part )
else:
print 'The attachment file type ({0}) is not supported! You will need to add the file type as a supported type to this module.'.format( fileType )
else:
print 'Could not attach file ({0}) because it does not exist!'.format( attachment )
try:
server = smtplib.SMTP( RS.Config.User.ExchangeServer )
server.sendmail( emailFrom, emailTo, message.as_string() )
server.quit()
except:
print 'Could not send the email!'