node.js 메일 보내는 방법 상세 설명

5047 단어
본문의 실례는 node를 서술하였다.js에서 이메일을 보내는 방법입니다.다음과 같이 여러분에게 참고할 수 있도록 공유합니다.
보통 우리가 node 프로젝트를 할 때 간단한 메일 피드백을 할 수 있습니다. 그러면 우리는 오늘 그 중에서 만나는 각종 구덩이에 대해 토론하겠습니다.
전반적으로 말하자면 이 물건을 만들려면 node 제3자가 모듈에 의존해서 우리가 달성해야 할 효과를 실현해야 할 수도 있다.
여기에서 나는 두 개의 모듈을 추천한다.https://github.com/pingfanren/Nodemailer

npm install nodemailer
// ,github , , 


또 하나,https://github.com/eleith/emailjs

npm install emailjs --save


여기 제가 쓰는 것은nodemailer 모듈입니다. 왜냐하면 사용하는 사람이 비교적 많고 주류를 따르기 때문입니다.
특징:
Unicode 인코딩을 사용하여 Windows 시스템을 지원하며 기본 텍스트 및 HTML 형식 지원 전송 첨부 파일 (대형 첨부 파일 포함) 을 설치할 필요가 없습니다. HTML에 포함된 이미지는 SSL/STARTTLS 보안 프로토콜과 다른 전송 방법을 지원합니다.내장 또는 외부 플러그인 형식으로 사용자 정의 플러그인 지원(예를 들어 DKIM 서명 추가, HTML 대신 markdown 사용 등) XOAUTH2 로그인 인증 지원(업데이트에 대한 영패 피드백)
설치 사용

npm install nodemailer --save


내장 전송 메시지를 사용하여 지원 목록을 볼 수 있습니다.https://github.com/andris9/nodemailer-wellknown#supported-services

var nodemailer = require('nodemailer');
var transporter = nodemailer.createTransport({
  //https://github.com/andris9/nodemailer-wellknown#supported-services  
  service: 'qq',
  port: 465, // SMTP  
  secureConnection: true, //   SSL
  auth: {
    user: '[email protected]',
    // qq , smtp 
    pass: '*****'
  }
});
// NB! No need to recreate the transporter object. You can use
// the same transporter object for all e-mails
// setup e-mail data with unicode symbols
var mailOptions = {
  from: '[email protected]', //  
  to: '[email protected]', //  
  subject: 'Hello sir', //  
  //text html 
  text: 'Hello world ?', //  
  html: 'Hello world ?' // html  
};
// send mail with defined transport object
transporter.sendMail(mailOptions, function(error, info){
  if(error){
    return console.log(error);
  }
  console.log('Message sent: ' + info.response);
});


메일을 보내는 데 성공한 후에 우리는 조작이 거의 없지만 성공한 후에 특수한 정보를 처리해야 하는 극소수의 경우도 있다. 이때 info 대상은 여열을 발휘할 수 있다.info 대상에 메시지 Id, envelop,accepted와response 등 속성이 포함되어 있습니다. 구체적으로 문서를 보면 일일이 소개하지 않겠습니다.
추가 전송 플러그인 사용https://github.com/andris9/nodemailer-smtp-transport

npm install nodemailer-smtp-transport --save


다른 코드는 유사합니다. 차이는transport를 만드는 데 있기 때문에 여기에서 코드를 일부 씁니다.

var nodemailer = require('nodemailer');
var smtpTransport = require('nodemailer-smtp-transport');
//   SMTP  
var transport = nodemailer.createTransport(smtpTransport({
 host: "smtp.qq.com", //  
 secure: true, //   SSL
 secureConnection: true, //   SSL
 port: 465, // SMTP  
 auth: {
  user: "[email protected]", //  
  pass: "******" //  
 }
}));
//  
var mailOptions = {
 from: "768065158<[email protected]>", //  
 to: "[email protected]", //  
 subject: "Hello world", //  
 text:"hello",
 html: "thanks a for visiting!  , !" // html  
}
//  
transport.sendMail(mailOptions, function(error, response) {
 if (error) {
  console.error(error);
 } else {
  console.log(response);
 }
 transport.close(); //  , 
});


메일을 보내는 필드는 다음과 같습니다.
from 발송자 메일박스 sender 발송자 구역에 표시된 정보 to 수신자 메일박스 cc 전송자 메일박스 bcc 밀송자 메일박스 subject 메일박스 테마attachments 첨부 내용 watchHtml apple watch 지정한 html 버전 텍스트 정보 html html 내용 headers 추가 정보 인코딩 코딩 형식
메일 내용은 UTF-8 형식을 사용하고 첨부 파일은 바이너리 흐름을 사용합니다.
액세서리
첨부 객체에는 다음과 같은 속성이 있습니다.
filename 첨부 파일 이름 content 내용 인코딩 형식 path 파일 경로 contentType 첨부 파일 내용 형식
일반적인 오류
1. 계정이 이 서비스를 설정하지 않았습니다

{ [AuthError: Invalid login - 454 Authentication failed, please open smtp flag first!]
 name: 'AuthError',
 data: '454 Authentication failed, please open smtp flag first!',
 stage: 'auth' }


솔루션:
QQ 메일박스 -> 설정 -> 계정 -> 오픈 서비스: POP3/SMTP 서비스
2. 발신 계정과 인증 계정이 다르다

{ [SenderError: Mail from command failed - 501 mail from address must be same as authorization user]
name: 'SenderError',
data: '501 mail from address must be same as authorization user',
stage: 'mail' }


3. 로그인 인증 실패, smpt 독립 암호 오류로 인해 qq 설정 때 만났을 수 있습니다

Invalid login - 535 Authentication failed


솔루션:
qq메일박스가 smtp메일 서버를 테스트할 때, 하나, qq메일박스, 설정, 계정 설정 중.smtp를 엽니다.둘째, 독립 비밀번호를 설정합니다.셋째, smtp 서버의 비밀번호를 설정할 때, 반드시 당신이 설정한 독립 비밀번호를 기입해야 합니다.메일박스로 비밀번호를 로그인하지 마세요.그렇지 않으면 535 Authentication failed 오류가 표시됩니다.
본고에서 기술한 것이 여러분의 nodejs 프로그램 설계에 도움이 되기를 바랍니다.

좋은 웹페이지 즐겨찾기