Beispiel #1
0
 const onAddInviteesButtonClick = event => {
   const {dispatch, inviteesRaw} = props;
   const parsedAddresses = emailAddresses.parseAddressList(inviteesRaw);
   event.preventDefault();
   // clear the inviteesRaw form component:
   dispatch(change('welcomeWizard', 'inviteesRaw', ''));
   if (!parsedAddresses) {
     return;
   }
   parsedAddresses.forEach(email => {
     dispatch(arrayPush('welcomeWizard', 'invitees', {
       email: email.address,
       fullName: email.name,
       label: email.name ? `"${email.name}" <${email.address}>` : email.address
     }));
   });
 };
  relayFromEmail: function(req, res) {
    var from = email.parseOneAddress(req.param('From')),
      to = _.find(email.parseAddressList(req.param('To')), e => e.domain === process.env.MAILGUN_DOMAIN),
      recipient, sender;

    try {
      recipient = User.decryptEmail(to.address);
      sender = User.encryptEmail(from.address);
    } catch (e) {
      res.send('Not Acceptable').status(406);
      require('rollbar').handleError(e, req);
      return;
    }

    var newTo = (to.name ? format('%s <%s>', to.name, recipient) : recipient),
      newFrom = (from.name ? format('%s <%s>', from.name, sender) : sender),
      composer = new MailComposer();

    composer.setMessageOption({
      from: newFrom,
      to: newTo,
      subject: req.param('Subject'),
      body: req.param('body-plain'),
      html: req.param('body-html')
    });

    // TODO add attachments
    // var attachmentCount = Number(req.param('attachment-count') || 0);

    var buildMessage = Promise.promisify(composer.buildMessage, composer),
      mg = new Mailgun(process.env.MAILGUN_API_KEY),
      sendRaw = Promise.promisify(mg.sendRaw, mg);

    buildMessage().then(function(body) {
      return sendRaw(newFrom, newTo, body);
    })
    .then(function() {
      res.ok({});
    })
    .catch(res.serverError.bind(res));

  }