Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How come my Meteor app with accounts package is not sending a verification email?

I am making a meteor app and I have the mrt accounts-password package added as well as mrt accounts-ui-bootstrap-dropdown.

I have added the loginbuttons so users can create an account and that works just fine. I am using all defaults.

On the server I have the code:

Accounts.config({
  sendVerificationEmail: true,
  forbidClientAccountCreation: false
});

And when I create a new account, the server console prints:

I20130821-18:31:42.105(-4)? ====== BEGIN MAIL #0 ======
I20130821-18:31:42.106(-4)? MIME-Version: 1.0
I20130821-18:31:42.107(-4)? From: "Meteor Accounts" <[email protected]>
I20130821-18:31:42.108(-4)? To: [email protected]
I20130821-18:31:42.108(-4)? Subject: How to verify email address on localhost:3000
I20130821-18:31:42.109(-4)? Content-Type: text/plain; charset=utf-8
I20130821-18:31:42.109(-4)? Content-Transfer-Encoding: quoted-printable
I20130821-18:31:42.109(-4)? Hello,
I20130821-18:31:42.110(-4)? To verify your account email, simply click the link below.
I20130821-18:31:42.110(-4)? http://localhost:3000/#/verify-email/C2vJeaDLeMkkWmcRY
I20130821-18:31:42.111(-4)? Thanks.
I20130821-18:31:42.111(-4)? ====== END MAIL #0 ======

So it looks like it sends the email from the server but I never get the verification email in my inbox. And I tried multiple times and it has been over an hour! I also checked my spam folder. What gives?

Thanks in advance

like image 948
Nearpoint Avatar asked Aug 21 '13 22:08

Nearpoint


2 Answers

See here: http://docs.meteor.com/#email

If MAIL_URL is not set (eg, when running your application locally), Email.send outputs the message to standard output instead

Web servers such as Meteor cannot send emails by themselves, they need a SMTP server to do that. You need to set up one and set it with MAIL_URL variable.

like image 113
Hubert OG Avatar answered Oct 10 '22 23:10

Hubert OG


To configure the MAIL_URL, don't forget to add the core email package:

meteor add email

And then, server-side:

// server/smtp.js
Meteor.startup(function () {
  smtp = {
    username: 'your_username',   // eg: [email protected]
    password: 'your_password',   // eg: 3eeP1gtizk5eziohfervU
    server:   'smtp.gmail.com',  // eg: mail.gandi.net
    port: 25
  }

  process.env.MAIL_URL = 'smtp://' + encodeURIComponent(smtp.username) + ':' + encodeURIComponent(smtp.password) + '@' + encodeURIComponent(smtp.server) + ':' + smtp.port;
});

Read More: Verify an Email with Meteor Accounts.

like image 42
Julien Le Coupanec Avatar answered Oct 11 '22 00:10

Julien Le Coupanec