Я только что попробовал, и это работает
даю бота в Твиттере и внедряю метод, который отправляет мне электронное письмо в случае ошибки. Поскольку я уже использую API Google для доступа к Google Диску (здесь нет проблем), я решил использовать служебную учетную запись для отправки электронного письма (консоль Google сообщает, что его можно использовать таким образом)
На данный момент я пришёл, чтобы отправить электронное письмо:
var config = require('./config/mail');
var google = require('./config/google');
var nodemailer = require('nodemailer');
var send = function (args) {
let transporter = nodemailer.createTransport({
'service': 'gmail',
'auth': {
'type': 'OAuth2',
'user': google.client_email,
'serviceClient': google.client_id,
'privateKey': google.private_key
}
});
transporter.on('token', token => console.log(token));
let message = {
'from': `"${config.serverFromName}" <${config.serverFromMail}>`,
'to': args.to,
'subject': args.subject,
'text': args.text,
'html': `<p>${args.text}</p>`
};
transporter.sendMail(message, (err, info) => {
if (err) {
console.log('Mail couldn\'t be sent because: ' + err);
} else {
console.log('Mail sent');
}
});
};
config/google
Файл содержит данные, которые Google генерирует для вас при создании учетной записи службы.config.serverFromName
а такжеconfig.serverFromMail
являются именем и адресом электронной почты отправителя (не совпадают с идентификатором учетной записи службы).args
содержит письмо получателя и содержание
Когда я тестирую метод send, в консоли я получаю следующее сообщение:
Mail couldn't be sent because: Error: Invalid login: 535-5.7.8 Username and Password not accepted. Learn more at
535 5.7.8 https://support.google.com/mail/?p=BadCredentials z123sm543690vkd.10 - gsmtp
Я знаю, что токен создается правильно, потому что созданный мной слушатель печатает его:
{ user: '[email protected]',
accessToken: 'ya29.ElmIBLxzfU_kkuZeyISeuRBeljmAe7HNTlwuG4K12ysUNo46s-eJ8NkMYHQqD_JrqTlH3yheNc2Aopu9B5vw-ivEqvPR4sTDpWBOg3xUU_4XiJEBLno8FHsg',
expires: 1500151434603 }
Выполняя поиск в Интернете, я обнаружил, что это может быть проблемой с областью OAuth. Однако вся информация, которая говорит об этом, относится к использованию идентификаторов клиентов, а не учетных записей служб. Я не нахожу эту опцию в консоли разработчика Google, либо.
Есть идеи, что я делаю не так?