2013-08-21 22 views
12

Tôi đang tạo một ứng dụng sao băng và tôi có gói tài khoản mrt-mật khẩu được thêm vào cũng như tài khoản mrt-ui-bootstrap-dropdown.Cách ứng dụng Meteor của tôi với gói tài khoản không gửi email xác minh?

Tôi đã thêm nút đăng nhập để người dùng có thể tạo tài khoản và hoạt động tốt. Tôi đang sử dụng tất cả các giá trị mặc định.

Trên máy chủ Tôi có đoạn code:

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

Và khi tôi tạo một tài khoản mới, máy chủ giao diện điều khiển in:

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 ====== 

Vì vậy, có vẻ như nó sẽ gửi email từ máy chủ nhưng tôi không bao giờ nhận được email xác minh trong hộp thư đến của mình. Và tôi đã thử nhiều lần và đã hơn một giờ! Tôi cũng đã kiểm tra thư mục spam của mình. Đưa cái gì?

Cảm ơn trước

Trả lời

18

Xem ở đây: http://docs.meteor.com/#email

Nếu MAIL_URL không được thiết lập (ví dụ, khi chạy ứng dụng của bạn tại địa phương), Email.send xuất ra thông điệp tới đầu ra tiêu chuẩn thay vì

Máy chủ web như Meteor không thể tự gửi email, họ cần một máy chủ SMTP để thực hiện điều đó. Bạn cần phải thiết lập một và thiết lập nó với biến số MAIL_URL.

+1

Tôi hiểu rồi, vậy tôi có thêm 'var MAIL_URL = smtp: // USERNAME: PASSWORD @ HOST: PORT /' vào tệp môi trường không? Tôi chưa bao giờ thêm vào tệp env, làm cách nào để làm điều này? – nearpoint

+0

Không, bạn thiết lập nó như là một biến môi trường. Ngoài ra, bạn có thể đặt nó bằng 'process.env.MAIL_URL = ...', nhưng đây là một phương pháp hacky. –

+1

Vì vậy, để thiết lập nó như là một biến môi trường tôi chỉ cần gõ 'xuất MAIL_URL = smtp: // USERNAME: PASSWORD @ HOST: PORT /' vào thiết bị đầu cuối? Điều này sẽ thêm nó vào môi trường máy cục bộ của tôi, nhưng nếu tôi triển khai vào Heroku, có cách nào để bao gồm một tệp .env đặc biệt trong dự án sao băng thực tế mà chỉ có thể đọc được bởi máy chủ Heroku không? – nearpoint

14

Để cấu hình MAIL_URL, đừng quên để thêm các gói email lõi:

meteor add email 

Và sau đó, 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.