EmailSender.coffee 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. logger = require('logger-sharelatex')
  2. metrics = require('../../infrastructure/Metrics')
  3. Settings = require('settings-sharelatex')
  4. metrics = require("../../infrastructure/Metrics")
  5. nodemailer = require("nodemailer")
  6. if Settings.email? and Settings.email.fromAddress?
  7. defaultFromAddress = Settings.email.fromAddress
  8. else
  9. defaultFromAddress = ""
  10. # provide dummy mailer unless we have a better one configured.
  11. client =
  12. sendMail: (options, callback = (err,status) ->) ->
  13. logger.log options:options, "Would send email if enabled."
  14. callback()
  15. if Settings.email?
  16. if Settings.email.transport? and Settings.email.parameters?
  17. nm_client = nodemailer.createTransport( Settings.email.transport, Settings.email.parameters )
  18. if nm_client
  19. client = nm_client
  20. else
  21. logger.warn "Failed to create email transport. Please check your settings. No email will be sent."
  22. else
  23. logger.warn "Email transport and/or parameters not defined. No emails will be sent."
  24. module.exports =
  25. sendEmail : (options, callback = (error) ->)->
  26. logger.log receiver:options.to, subject:options.subject, "sending email"
  27. metrics.inc "email"
  28. options =
  29. to: options.to
  30. from: defaultFromAddress
  31. subject: options.subject
  32. html: options.html
  33. replyTo: options.replyTo || Settings.email.replyToAddress
  34. socketTimeout: 30 * 1000
  35. client.sendMail options, (err, res)->
  36. if err?
  37. logger.err err:err, "error sending message"
  38. else
  39. logger.log "Message sent to #{options.to}"
  40. callback(err)