logger = require('logger-sharelatex')
metrics = require('../../infrastructure/Metrics')
Settings = require('settings-sharelatex')
metrics = require("../../infrastructure/Metrics")
nodemailer = require("nodemailer")

if Settings.email? and Settings.email.fromAddress?
	defaultFromAddress = Settings.email.fromAddress
else
	defaultFromAddress = ""

# provide dummy mailer unless we have a better one configured.
client =
	sendMail: (options, callback = (err,status) ->) ->
		logger.log options:options, "Would send email if enabled."
		callback()

if Settings.email?
	if Settings.email.transport? and Settings.email.parameters?
		nm_client = nodemailer.createTransport( Settings.email.transport, Settings.email.parameters )
		if nm_client
			client = nm_client
		else
			logger.warn "Failed to create email transport. Please check your settings. No email will be sent."
	else
		logger.warn "Email transport and/or parameters not defined. No emails will be sent."

module.exports =
	sendEmail : (options, callback = (error) ->)->
		logger.log receiver:options.to, subject:options.subject, "sending email"
		metrics.inc "email"
		options =
			to: options.to
			from: defaultFromAddress
			subject: options.subject
			html: options.html
			replyTo: options.replyTo || Settings.email.replyToAddress
			socketTimeout: 30 * 1000
		client.sendMail options, (err, res)->
			if err?
				logger.err err:err, "error sending message"
			else
				logger.log "Message sent to #{options.to}"
			callback(err)

