mail.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. const _ = require('lodash')
  2. const graphHelper = require('../../helpers/graph')
  3. /* global WIKI */
  4. module.exports = {
  5. Query: {
  6. async mailConfig(obj, args, context, info) {
  7. return {
  8. ...WIKI.config.mail,
  9. pass: WIKI.config.mail.pass.length > 0 ? '********' : ''
  10. }
  11. }
  12. },
  13. Mutation: {
  14. async sendMailTest(obj, args, context) {
  15. try {
  16. if (_.isEmpty(args.recipientEmail) || args.recipientEmail.length < 6) {
  17. throw new WIKI.Error.MailInvalidRecipient()
  18. }
  19. await WIKI.mail.send({
  20. template: 'test',
  21. to: args.recipientEmail,
  22. subject: 'A test email from your wiki',
  23. text: 'This is a test email sent from your wiki.',
  24. data: {
  25. preheadertext: 'This is a test email sent from your wiki.'
  26. }
  27. })
  28. return {
  29. responseResult: graphHelper.generateSuccess('Test email sent successfully.')
  30. }
  31. } catch (err) {
  32. return graphHelper.generateError(err)
  33. }
  34. },
  35. async updateMailConfig(obj, args, context) {
  36. try {
  37. WIKI.config.mail = {
  38. senderName: args.senderName,
  39. senderEmail: args.senderEmail,
  40. host: args.host,
  41. port: args.port,
  42. name: args.name,
  43. secure: args.secure,
  44. verifySSL: args.verifySSL,
  45. user: args.user,
  46. pass: (args.pass === '********') ? WIKI.config.mail.pass : args.pass,
  47. useDKIM: args.useDKIM,
  48. dkimDomainName: args.dkimDomainName,
  49. dkimKeySelector: args.dkimKeySelector,
  50. dkimPrivateKey: args.dkimPrivateKey
  51. }
  52. await WIKI.configSvc.saveToDb(['mail'])
  53. WIKI.mail.init()
  54. return {
  55. responseResult: graphHelper.generateSuccess('Mail configuration updated successfully.')
  56. }
  57. } catch (err) {
  58. return graphHelper.generateError(err)
  59. }
  60. }
  61. }
  62. }