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 프로그램 설계에 도움이 되기를 바랍니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.