2015-11-27 14 views
5

Tuyên bố từ chối trách nhiệm: Tôi không thực sự tốt với các khía cạnh email kỹ thuật.Làm cách nào để thay đổi trường "từ" trong nodemailer?

Vì vậy, tôi đã thiết lập tài khoản miễn phí zoho mail mà về cơ bản chỉ là một máy chủ thư cho miền của tôi. Điều này kinda hoạt động thông qua chuyển tiếp ghi MX hoặc một cái gì đó, tôi không hoàn toàn chắc chắn như thế nào nó hoạt động.

Dù sao, vấn đề là: Tôi có thể dễ dàng thay đổi trường từ khi sử dụng tài khoản của tôi trên Outlook. Vì vậy, địa chỉ email của tôi [email protected] xuất hiện dưới dạng Foo from bar.com trong hầu hết các ứng dụng email khách.

Bây giờ tôi muốn gửi một số email tự động từ tài khoản [email protected] của mình với nodemailer (v1.10.0) qua SMTP với SSL. Tôi đã thử các cách tiếp cận khác nhau mà tôi đã tìm thấy trong tài liệu/trên internet. Tất cả trong số họ chỉ đã ném một dấu vết xếp chồng lên nhau (xem bên dưới).

Ngay sau khi tôi ngừng cố gắng thay đổi từ trường mọi thứ hoạt động tốt (ngoại trừ sai từ trường). Vì tôi không có ý tưởng whats goin trên tôi yêu cầu một số trợ giúp xử lý sự cố này.

Tôi đã thử thay đổi đối số thứ hai của createTransport() thành trường mong muốn của tôi. Đã không làm việc.

nodemailer.createTransport(auth.mail, {from: auth.mail.auth.user}); 

để

nodemailer.createTransport(auth.mail, {from: 'Foo from bar.com'}); 

Tôi đã thử đặt auth.mail.from mà cũng không làm việc. Và tôi đã thử đặt auth.mail.from bằng cách chuyển tham số thứ 2 đến createTransport().


Mã của tôi

var nodemailer = require('nodemailer'); 
var auth = { mail: { host: 'smtp.zoho.com', port: 465, secure: true, auth: { user: '[email protected]', pass: 'strongpassword' } }; 
var log = require('./log'); 

var transporter = nodemailer.createTransport(auth.mail, {from: auth.mail.auth.user}); 

function sendText(settings,cb) { 
    transporter.sendMail(settings, function (err, info) { 
     if (err) { 
      log.warn('Failed to send an Email', err); 
     } else { 
      log.info('Successfully sent email', info); 
     } 
     if (cb) { 
      cb(err, info); 
     } 
    }); 
} 

Đây stacktrace Tôi đã nói về trước

Message failed 
    at SMTPConnection._formatError (c:\...\node_modules\nodemailer\node_modules\nodemailer-smtp-transport\node_modules\smtp-connection\src\smtp-connection.js:388:15) 
    at SMTPConnection._actionStream (c:\...\node_modules\nodemailer\node_modules\nodemailer-smtp-transport\node_modules\smtp-connection\src\smtp-connection.js:948:30) 
    at SMTPConnection.<anonymous> (c:\...\node_modules\nodemailer\node_modules\nodemailer-smtp-transport\node_modules\smtp-connection\src\smtp-connection.js:579:14) 
    at SMTPConnection._processResponse (c:\...\node_modules\nodemailer\node_modules\nodemailer-smtp-transport\node_modules\smtp-connection\src\smtp-connection.js:511:16) 
    at SMTPConnection._onData (c:\...\node_modules\nodemailer\node_modules\nodemailer-smtp-transport\node_modules\smtp-connection\src\smtp-connection.js:357:10) 
    at emitOne (events.js:77:13) 
    at TLSSocket.emit (events.js:169:7) 
    at readableAddChunk (_stream_readable.js:146:16) 
    at TLSSocket.Readable.push (_stream_readable.js:110:10) 
    at TLSWrap.onread (net.js:523:20) 

Trả lời

4

Ví dụ đầu tiên bạn có thể xem trên trang web nodemailer.com.

var nodemailer = require('nodemailer'); 

// create reusable transporter object using the default SMTP transport 
var transporter = nodemailer.createTransport('smtps://user%40gmail.com:[email protected]'); 
/*set from user in option*/ 
var mailOptions = { 
    from: 'Fred Foo <[email protected]>', // sender address 
    to: '[email protected], [email protected]', // list of receivers 
    subject: 'Hello ✔', // Subject line 
    text: 'Hello world ', // plaintext body 
    html: '<b>Hello world </b>' // html body 
}; 

transporter.sendMail(mailOptions, function(error, info){ 
    if(error){ 
     return console.log(error); 
    } 
    console.log('Message sent: ' + info.response); 
}); 
4

tôi đã cùng một vấn đề với lĩnh vực from: và tôi đã đi lại để đọc setup gmail và đây là những gì tôi tìm thấy - như tôi đã nói, chỉ GMAIL. Tôi chưa thử một nhà cung cấp khác.
src: nodemailer.com/usage/using-gmail/
Chủ đầu tư: Gmail

Gmail cũng luôn đặt tên đã xác thực như Từ: email địa chỉ. Vì vậy, nếu bạn xác thực là [email protected] và đặt [email protected] làm địa chỉ from:, thì Gmail sẽ hoàn nguyên điều này và sẽ thay thế người gửi bằng người dùng đã được xác thực.

về cơ bản, bạn chỉ có thể xác định người dùng xác thực trên các lĩnh vực from:

cảm ơn bạn, nếu tôi sai, xin vui lòng cho tôi biết

Các vấn đề liên quan