mirror of
https://github.com/meteor/meteor.git
synced 2026-05-02 03:01:46 -04:00
Use the real email API to send real email.
This commit is contained in:
@@ -1,9 +1,11 @@
|
||||
Meteor.accounts.emailTemplates = {
|
||||
from: "Meteor Accounts <no-reply@meteor.com>",
|
||||
|
||||
resetPassword: {
|
||||
subject: function(user) {
|
||||
return "How to reset your password on " + Meteor.absoluteUrl();
|
||||
},
|
||||
message: function(user, url) {
|
||||
text: function(user, url) {
|
||||
var greeting = user.name ? ("Hello " + user.name + ",") : "Hello,";
|
||||
return greeting + "\n"
|
||||
+ "\n"
|
||||
@@ -18,7 +20,7 @@ Meteor.accounts.emailTemplates = {
|
||||
subject: function(user) {
|
||||
return "How to validate your account email on " + Meteor.absoluteUrl();
|
||||
},
|
||||
message: function(user, url) {
|
||||
text: function(user, url) {
|
||||
var greeting = user.name ? ("Hello " + user.name + ",") : "Hello,";
|
||||
return greeting + "\n"
|
||||
+ "\n"
|
||||
@@ -33,7 +35,7 @@ Meteor.accounts.emailTemplates = {
|
||||
subject: function(user) {
|
||||
return "An account has been created for you on " + Meteor.absoluteUrl();
|
||||
},
|
||||
message: function(user, url) {
|
||||
text: function(user, url) {
|
||||
var greeting = user.name ? ("Hello " + user.name + ",") : "Hello,";
|
||||
return greeting + "\n"
|
||||
+ "\n"
|
||||
|
||||
@@ -129,8 +129,10 @@
|
||||
}));
|
||||
},
|
||||
function (test, expect) {
|
||||
test.equal(Meteor.user().emails[1].email, email3);
|
||||
test.isFalse(Meteor.user().emails[1].validated);
|
||||
Meteor.default_connection.onQuiesce(expect(function () {
|
||||
test.equal(Meteor.user().emails[1].email, email3);
|
||||
test.isTrue(Meteor.user().emails[1].validated);
|
||||
}));
|
||||
},
|
||||
function (test, expect) {
|
||||
Meteor.logout(expect(function (error) {
|
||||
@@ -173,6 +175,8 @@
|
||||
Meteor.enrollAccount(enrollAccountToken, 'password', expect(function(error) {
|
||||
test.isFalse(error);
|
||||
}));
|
||||
},
|
||||
function (test, expect) {
|
||||
Meteor.default_connection.onQuiesce(expect(function () {
|
||||
test.equal(Meteor.user().emails.length, 1);
|
||||
test.equal(Meteor.user().emails[0].email, email4);
|
||||
@@ -197,4 +201,4 @@
|
||||
}));
|
||||
}
|
||||
]);
|
||||
}) ();
|
||||
}) ();
|
||||
|
||||
@@ -4,17 +4,18 @@
|
||||
// the string "intercept", storing them in an array that can then
|
||||
// be retrieved using the getInterceptedEmails method
|
||||
//
|
||||
var oldMeteorMailSend = Meteor.mail.send;
|
||||
var oldEmailSend = Email.send;
|
||||
var interceptedEmails = {}; // (email address) -> (array of contents)
|
||||
|
||||
Meteor.mail.send = function (email, subject, content) {
|
||||
if (email.indexOf('intercept') === -1) {
|
||||
oldMeteorMailSend(email, content);
|
||||
Email.send = function (options) {
|
||||
var to = options.to;
|
||||
if (to.indexOf('intercept') === -1) {
|
||||
oldEmailSend(options);
|
||||
} else {
|
||||
if (!interceptedEmails[email])
|
||||
interceptedEmails[email] = [];
|
||||
if (!interceptedEmails[to])
|
||||
interceptedEmails[to] = [];
|
||||
|
||||
interceptedEmails[email].push(content);
|
||||
interceptedEmails[to].push(options.text);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -35,4 +36,4 @@
|
||||
return Meteor.users.findOne(userId);
|
||||
}
|
||||
});
|
||||
}) ();
|
||||
}) ();
|
||||
|
||||
@@ -5,6 +5,7 @@ Package.describe({
|
||||
Package.on_use(function(api) {
|
||||
api.use('accounts', ['client', 'server']);
|
||||
api.use('srp', ['client', 'server']);
|
||||
api.use('email', ['server']);
|
||||
|
||||
api.add_files('email_templates.js', 'server');
|
||||
api.add_files('passwords_server.js', 'server');
|
||||
|
||||
@@ -123,10 +123,11 @@
|
||||
}});
|
||||
|
||||
var resetPasswordUrl = Meteor.accounts.urls.resetPassword(token);
|
||||
Meteor.mail.send(
|
||||
email,
|
||||
Meteor.accounts.emailTemplates.resetPassword.subject(user),
|
||||
Meteor.accounts.emailTemplates.resetPassword.message(user, resetPasswordUrl));
|
||||
Email.send({
|
||||
to: email,
|
||||
from: Meteor.accounts.emailTemplates.from,
|
||||
subject: Meteor.accounts.emailTemplates.resetPassword.subject(user),
|
||||
text: Meteor.accounts.emailTemplates.resetPassword.text(user, resetPasswordUrl)});
|
||||
},
|
||||
|
||||
resetPassword: function (token, newVerifier) {
|
||||
@@ -213,10 +214,12 @@
|
||||
|
||||
var user = Meteor.users.findOne(userId);
|
||||
var validateEmailUrl = Meteor.accounts.urls.validateEmail(token);
|
||||
Meteor.mail.send(
|
||||
email,
|
||||
Meteor.accounts.emailTemplates.validateEmail.subject(user),
|
||||
Meteor.accounts.emailTemplates.validateEmail.message(user, validateEmailUrl));
|
||||
Email.send({
|
||||
to: email,
|
||||
from: Meteor.accounts.emailTemplates.from,
|
||||
subject: Meteor.accounts.emailTemplates.validateEmail.subject(user),
|
||||
text: Meteor.accounts.emailTemplates.validateEmail.text(user, validateEmailUrl)
|
||||
});
|
||||
};
|
||||
|
||||
// send the user an email informing them that their account was
|
||||
@@ -234,10 +237,12 @@
|
||||
|
||||
var user = Meteor.users.findOne(userId);
|
||||
var enrollAccountUrl = Meteor.accounts.urls.enrollAccount(token);
|
||||
Meteor.mail.send(
|
||||
email,
|
||||
Meteor.accounts.emailTemplates.enrollAccount.subject(user),
|
||||
Meteor.accounts.emailTemplates.enrollAccount.message(user, enrollAccountUrl));
|
||||
Email.send({
|
||||
to: email,
|
||||
from: Meteor.accounts.emailTemplates.from,
|
||||
subject: Meteor.accounts.emailTemplates.enrollAccount.subject(user),
|
||||
text: Meteor.accounts.emailTemplates.enrollAccount.text(user, enrollAccountUrl)
|
||||
});
|
||||
};
|
||||
|
||||
// handler to login with password
|
||||
@@ -404,10 +409,3 @@
|
||||
|
||||
|
||||
})();
|
||||
|
||||
|
||||
Meteor.mail = {};
|
||||
Meteor.mail.send = function() {
|
||||
console.log("Send mail:");
|
||||
console.log(arguments);
|
||||
};
|
||||
|
||||
@@ -196,11 +196,11 @@ if (Meteor.is_server) (function () {
|
||||
});
|
||||
|
||||
// disable sending emails
|
||||
var oldMeteorMailSend = Meteor.mail.send;
|
||||
Meteor.mail.send = function() {};
|
||||
var oldEmailSend = Email.send;
|
||||
Email.send = function() {};
|
||||
var userId = Meteor.createUser({email: email},
|
||||
{testOnCreateUserHook: true});
|
||||
Meteor.mail.send = oldMeteorMailSend;
|
||||
Email.send = oldEmailSend;
|
||||
|
||||
test.isTrue(userId);
|
||||
var user = Meteor.users.findOne(userId);
|
||||
|
||||
Reference in New Issue
Block a user