mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-02-17 08:50:58 -05:00
Worked around unstable Zoho mail dependencies by switching password recovery and contact emails to Sendwithus.
This commit is contained in:
parent
0c81942c71
commit
194d3ee647
6 changed files with 37 additions and 45 deletions
|
@ -52,7 +52,6 @@
|
|||
"underscore.string": "2.3.x",
|
||||
"async": "0.2.x",
|
||||
"connect": "2.7.x",
|
||||
"nodemailer": "0.4.x",
|
||||
"coffee-script": "1.7.x",
|
||||
"graceful-fs": "~2.0.1",
|
||||
"node-force-domain": "~0.1.0",
|
||||
|
|
|
@ -6,10 +6,3 @@ module.exports.MAILCHIMP_GROUP_ID = '4529'
|
|||
# these two need to be parallel
|
||||
module.exports.MAILCHIMP_GROUPS = ['Announcements', 'Adventurers', 'Artisans', 'Archmages', 'Scribes', 'Diplomats', 'Ambassadors']
|
||||
module.exports.NEWS_GROUPS = ['generalNews', 'adventurerNews', 'artisanNews', 'archmageNews', 'scribeNews', 'diplomatNews', 'ambassadorNews']
|
||||
|
||||
nodemailer = require 'nodemailer'
|
||||
module.exports.transport = nodemailer.createTransport 'SMTP',
|
||||
service: config.mail.service
|
||||
user: config.mail.username
|
||||
pass: config.mail.password
|
||||
authMethod: 'LOGIN'
|
||||
|
|
|
@ -5,8 +5,8 @@ UserHandler = require '../users/user_handler'
|
|||
LevelSession = require '../levels/sessions/LevelSession'
|
||||
config = require '../../server_config'
|
||||
errors = require '../commons/errors'
|
||||
mail = require '../commons/mail'
|
||||
languages = require '../routes/languages'
|
||||
sendwithus = require '../sendwithus'
|
||||
|
||||
module.exports.setup = (app) ->
|
||||
authentication.serializeUser((user, done) -> done(null, user._id))
|
||||
|
@ -103,11 +103,18 @@ module.exports.setup = (app) ->
|
|||
user.set('passwordReset', Math.random().toString(36).slice(2, 7).toUpperCase())
|
||||
user.save (err) =>
|
||||
return errors.serverError(res) if err
|
||||
if config.isProduction
|
||||
options = createMailOptions req.body.email, user.get('passwordReset')
|
||||
mail.transport.sendMail options, (error, response) ->
|
||||
if error
|
||||
console.error "Error sending mail: #{error.message or error}"
|
||||
unless config.unittest
|
||||
context =
|
||||
email_id: sendwithus.templates.generic_email
|
||||
recipient:
|
||||
address: req.body.email
|
||||
email_data:
|
||||
subject: 'CodeCombat Recovery Password'
|
||||
title: 'Recovery Password'
|
||||
content: "<p>Your CodeCombat recovery password for email #{req.body.email} is: #{user.get('passwordReset')}</p><p>Log in at <a href=\"http://codecombat.com/account/settings\">http://codecombat.com/account/settings</a> and change it.</p><p>Hope this helps!</p>"
|
||||
sendwithus.api.send context, (err, result) ->
|
||||
if err
|
||||
console.error "Error sending password reset email: #{err.message or err}"
|
||||
return errors.serverError(res) if err
|
||||
else
|
||||
return res.end()
|
||||
|
@ -195,12 +202,3 @@ module.exports.makeNewUser = makeNewUser = (req) ->
|
|||
lang = languages.languageCodeFromAcceptedLanguages req.acceptedLanguages
|
||||
user.set 'preferredLanguage', lang if lang[...2] isnt 'en'
|
||||
user.set 'lastIP', req.connection.remoteAddress
|
||||
|
||||
createMailOptions = (receiver, password) ->
|
||||
# TODO: use email templates here
|
||||
options =
|
||||
from: config.mail.username
|
||||
to: receiver
|
||||
replyTo: config.mail.username
|
||||
subject: '[CodeCombat] Password Reset'
|
||||
text: "You can log into your account with: #{password}"
|
||||
|
|
|
@ -1,36 +1,38 @@
|
|||
config = require '../../server_config'
|
||||
log = require 'winston'
|
||||
mail = require '../commons/mail'
|
||||
User = require '../users/User'
|
||||
sendwithus = require '../sendwithus'
|
||||
|
||||
module.exports.setup = (app) ->
|
||||
app.post '/contact', (req, res) ->
|
||||
return res.end() unless req.user
|
||||
#log.info "Sending mail from #{req.body.email} saying #{req.body.message}"
|
||||
if config.isProduction
|
||||
createMailOptions req.body.email, req.body.message, req.user, req.body.recipientID, req.body.subject, (options) ->
|
||||
mail.transport.sendMail options, (error, response) ->
|
||||
if error
|
||||
log.error "Error sending mail: #{error.message or error}"
|
||||
createMailContext req.body.email, req.body.message, req.user, req.body.recipientID, req.body.subject, (context) ->
|
||||
sendwithus.api.send context, (err, result) ->
|
||||
if err
|
||||
log.error "Error sending contact form email: #{err.message or err}"
|
||||
return res.end()
|
||||
|
||||
createMailOptions = (sender, message, user, recipientID, subject, done) ->
|
||||
# TODO: use email templates here
|
||||
options =
|
||||
from: config.mail.username
|
||||
to: config.mail.username
|
||||
replyTo: sender
|
||||
subject: "[CodeCombat] #{subject ? ('Feedback - ' + sender)}"
|
||||
text: "#{message}\n\nUsername: #{user.get('name') or 'Anonymous'}\nID: #{user._id}"
|
||||
#html: message.replace '\n', '<br>\n'
|
||||
createMailContext = (sender, message, user, recipientID, subject, done) ->
|
||||
context =
|
||||
email_id: sendwithus.templates.plain_text_email
|
||||
recipient:
|
||||
address: config.mail.username
|
||||
sender:
|
||||
address: config.mail.username
|
||||
reply_to: sender
|
||||
name: user.get('name')
|
||||
email_data:
|
||||
subject: "[CodeCombat] #{subject ? ('Feedback - ' + sender)}"
|
||||
content: "#{message}\n\nUsername: #{user.get('name') or 'Anonymous'}\nID: #{user._id}"
|
||||
|
||||
if recipientID and (user.isAdmin() or ('employer' in (user.get('permissions') ? [])))
|
||||
User.findById(recipientID, 'email').exec (err, document) ->
|
||||
if err
|
||||
log.error "Error looking up recipient to email from #{recipientID}: #{err}" if err
|
||||
else
|
||||
options.bcc = [options.to, sender]
|
||||
options.to = document.get('email')
|
||||
done options
|
||||
context.bcc = [context.to, sender]
|
||||
context.to = document.get('email')
|
||||
done context
|
||||
else
|
||||
done options
|
||||
done context
|
||||
|
|
|
@ -16,3 +16,5 @@ module.exports.templates =
|
|||
change_made_notify_watcher: 'tem_7KVkfmv9SZETb25dtHbUtG'
|
||||
recruiting_email: 'tem_mdFMgtcczHKYu94Jmq68j8'
|
||||
greed_tournament_rank: 'tem_c4KYnk2TriEkkZx5NqqGLG'
|
||||
generic_email: 'tem_JhRnQ4pvTS4KdQjYoZdbei'
|
||||
plain_text_email: 'tem_85UvKDCCNPXsFckERTig6Y'
|
||||
|
|
|
@ -19,7 +19,7 @@ config.mongo =
|
|||
|
||||
config.apple =
|
||||
verifyURL: process.env.COCO_APPLE_VERIFY_URL or 'https://sandbox.itunes.apple.com/verifyReceipt'
|
||||
|
||||
|
||||
config.stripe =
|
||||
secretKey: process.env.COCO_STRIPE_SECRET_KEY or 'sk_test_MFnZHYD0ixBbiBuvTlLjl2da'
|
||||
|
||||
|
@ -36,9 +36,7 @@ else
|
|||
config.mongo.password = process.env.COCO_MONGO_PASSWORD or ''
|
||||
|
||||
config.mail =
|
||||
service: process.env.COCO_MAIL_SERVICE_NAME or 'Zoho'
|
||||
username: process.env.COCO_MAIL_SERVICE_USERNAME or ''
|
||||
password: process.env.COCO_MAIL_SERVICE_PASSWORD or ''
|
||||
mailchimpAPIKey: process.env.COCO_MAILCHIMP_API_KEY or ''
|
||||
mailchimpWebhook: process.env.COCO_MAILCHIMP_WEBHOOK or '/mail/webhook'
|
||||
sendwithusAPIKey: process.env.COCO_SENDWITHUS_API_KEY or ''
|
||||
|
|
Loading…
Reference in a new issue