Browse Source

Don't send emails if missing smtp host

Julen Landa Alustiza 8 years ago
parent
commit
5db786e2dd
4 changed files with 47 additions and 36 deletions
  1. 6 2
      config/accounts.js
  2. 12 7
      models/settings.js
  3. 18 18
      models/users.js
  4. 11 9
      server/notifications/email.js

+ 6 - 2
config/accounts.js

@@ -17,12 +17,17 @@ AccountsTemplates.addFields([{
   template: 'invitationCode',
   template: 'invitationCode',
 }]);
 }]);
 
 
+let sendVerificationEmail = false;
+if (process.env.MAIL_URL) {
+  sendVerificationEmail = true;
+}
+
 AccountsTemplates.configure({
 AccountsTemplates.configure({
   defaultLayout: 'userFormsLayout',
   defaultLayout: 'userFormsLayout',
   defaultContentRegion: 'content',
   defaultContentRegion: 'content',
   confirmPassword: false,
   confirmPassword: false,
   enablePasswordChange: true,
   enablePasswordChange: true,
-  sendVerificationEmail: true,
+  sendVerificationEmail,
   showForgotPasswordLink: true,
   showForgotPasswordLink: true,
   onLogoutHook() {
   onLogoutHook() {
     const homePage = 'home';
     const homePage = 'home';
@@ -69,4 +74,3 @@ if (Meteor.isServer) {
     };
     };
   });
   });
 }
 }
-

+ 12 - 7
models/settings.js

@@ -35,6 +35,9 @@ Settings.attachSchema(new SimpleSchema({
 }));
 }));
 Settings.helpers({
 Settings.helpers({
   mailUrl () {
   mailUrl () {
+    if (!this.mailServer.host) {
+      return null;
+    }
     if (!this.mailServer.username && !this.mailServer.password) {
     if (!this.mailServer.username && !this.mailServer.password) {
       return `smtp://${this.mailServer.host}:${this.mailServer.port}/`;
       return `smtp://${this.mailServer.host}:${this.mailServer.port}/`;
     }
     }
@@ -69,7 +72,7 @@ if (Meteor.isServer) {
   });
   });
   Settings.after.update((userId, doc, fieldNames) => {
   Settings.after.update((userId, doc, fieldNames) => {
     // assign new values to mail-from & MAIL_URL in environment
     // assign new values to mail-from & MAIL_URL in environment
-    if (_.contains(fieldNames, 'mailServer')) {
+    if (_.contains(fieldNames, 'mailServer') && _.contains(fieldNames, 'host')) {
       if (!doc.mailServer.username && !doc.mailServer.password) {
       if (!doc.mailServer.username && !doc.mailServer.password) {
         process.env.MAIL_URL = `smtp://${doc.mailServer.host}:${doc.mailServer.port}/`;
         process.env.MAIL_URL = `smtp://${doc.mailServer.host}:${doc.mailServer.port}/`;
       } else {
       } else {
@@ -97,12 +100,14 @@ if (Meteor.isServer) {
         url: FlowRouter.url('sign-up'),
         url: FlowRouter.url('sign-up'),
       };
       };
       const lang = author.getLanguage();
       const lang = author.getLanguage();
-      Email.send({
-        to: icode.email,
-        from: Accounts.emailTemplates.from,
-        subject: TAPi18n.__('email-invite-register-subject', params, lang),
-        text: TAPi18n.__('email-invite-register-text', params, lang),
-      });
+      if (Settings.findOne().mailUrl()) {
+        Email.send({
+          to: icode.email,
+          from: Accounts.emailTemplates.from,
+          subject: TAPi18n.__('email-invite-register-subject', params, lang),
+          text: TAPi18n.__('email-invite-register-text', params, lang),
+        });
+      }
     } catch (e) {
     } catch (e) {
       throw new Meteor.Error('email-fail', e.message);
       throw new Meteor.Error('email-fail', e.message);
     }
     }

+ 18 - 18
models/users.js

@@ -369,24 +369,25 @@ if (Meteor.isServer) {
       board.addMember(user._id);
       board.addMember(user._id);
       user.addInvite(boardId);
       user.addInvite(boardId);
 
 
-      try {
-        const params = {
-          user: user.username,
-          inviter: inviter.username,
-          board: board.title,
-          url: board.absoluteUrl(),
-        };
-        const lang = user.getLanguage();
-        Email.send({
-          to: user.emails[0].address.toLowerCase(),
-          from: Accounts.emailTemplates.from,
-          subject: TAPi18n.__('email-invite-subject', params, lang),
-          text: TAPi18n.__('email-invite-text', params, lang),
-        });
-      } catch (e) {
-        throw new Meteor.Error('email-fail', e.message);
+      if (Settings.findOne().mailUrl()) {
+        try {
+          const params = {
+            user: user.username,
+            inviter: inviter.username,
+            board: board.title,
+            url: board.absoluteUrl(),
+          };
+          const lang = user.getLanguage();
+          Email.send({
+            to: user.emails[0].address.toLowerCase(),
+            from: Accounts.emailTemplates.from,
+            subject: TAPi18n.__('email-invite-subject', params, lang),
+            text: TAPi18n.__('email-invite-text', params, lang),
+          });
+        } catch (e) {
+          throw new Meteor.Error('email-fail', e.message);
+        }
       }
       }
-
       return { username: user.username, email: user.emails[0].address };
       return { username: user.username, email: user.emails[0].address };
     },
     },
   });
   });
@@ -502,4 +503,3 @@ if (Meteor.isServer) {
     }
     }
   });
   });
 }
 }
-

+ 11 - 9
server/notifications/email.js

@@ -26,15 +26,17 @@ Meteor.startup(() => {
       const text = texts.join('\n\n');
       const text = texts.join('\n\n');
       user.clearEmailBuffer();
       user.clearEmailBuffer();
 
 
-      try {
-        Email.send({
-          to: user.emails[0].address.toLowerCase(),
-          from: Accounts.emailTemplates.from,
-          subject: TAPi18n.__('act-activity-notify', {}, user.getLanguage()),
-          text,
-        });
-      } catch (e) {
-        return;
+      if (Settings.findOne().mailUrl()) {
+        try {
+          Email.send({
+            to: user.emails[0].address.toLowerCase(),
+            from: Accounts.emailTemplates.from,
+            subject: TAPi18n.__('act-activity-notify', {}, user.getLanguage()),
+            text,
+          });
+        } catch (e) {
+          return;
+        }
       }
       }
     }, 30000);
     }, 30000);
   });
   });