SAMPMailJS - Agora suporta Templates [NodeJS] -
bruxo00 - 06.06.2018
SAMPMailJS й uma include que envia diretamente emails de uma conta gmail, eliminando assim a possibilidade de os mails irem parar а caixa de SPAM. Suporta HTML. Muito ъtil para criar, por exemplo, recuperadores de password, confirmadores de email, enviar avisos por email aos administradores, etc.
A include usa um script em NodeJS, mas nгo й preciso ter conhecimento nenhum em Javascript para conseguir pфr isto a funcionar.
TUTORIAIS
Como instalar NodeJS
[Windows] [Linux]
Como obter credenciais do GMAIL
GitHub Wiki - Documentaзгo
Criar sistema de confirmaзгo de emails (inglкs)
COMO CONFIGURAR
Para usar os servidores SMTP do GMAIL, renomeie o ficheiro
config.json.gmail para
config.json. Edite o ficheiro com todas as configuraзхes desejadas. Para obter o
clientId,
clientSecret e
refreshToken siga o link acima
Como obter credenciais do GMAIL.
Para usar outro servidor SMTP, renomeie o ficheiro
config.json.custom para
config.json. Edite o ficheiro com as suas credenciais. Note que para alguns servidores SMTP sгo necessбrias mais algumas configuraзхes no objeto
auth para conseguir utilizar o servidor SMTP, mas os mais bбsicos funcionam com user e password apenas.
machineIp: normalmente o IP externo, se for usar o script apenas no localhost use o IP interno. 127.0.0.1 nгo irб funcionar para outros computadores, mesmo que estejam na mesma rede local.
listenPort: porta em que o script irб correr.
httpPassword: mesma password que configurar na include.
enableDebug: quando true, faz print de algumas informaзхes adicionais na consola.
Se for usar templates, й necessбrio criar a pasta
./templates na raнz onde estб o seu script, e colocar lб os templates, caso contrбrio o script irб crashar quando tentar enviar um email com um template que nгo existe no host.
Editar as constantes:
Код:
#define SAMPMAILJS_URL "127.0.0.1:8080"
#define SAMPMAILJS_PASSWORD "changeme"
#define SAMPMAILJS_CONSOLELOG 0
#define SAMPMAILJS_MAXPOSTDATA 2048
SAMPMAILJS_URL - IP:Porta ou Hostname:Porta do host onde estб o script a correr
SAMPMAILJS_PASSWORD - Deve ser igual а password do sampmail.js
SAMPMAILJS_CONSOLELOG - Loga na consola algumas informaзхes que podem ser utйis em debug
SAMPMAILJS_MAXPOSTDATA - Tamanho mбximo da variбvel que envia a informaзгo ao script. Com emails com pouco texto, pode ser usado um nъmero mais baixo. Com emails grandes, й aconselhбvel subir um pouco. Depende de cada um.
Para instalar o NODEJS, seguir o tutorial na parte dos tutoriais. Й necessбrio instalar os packages
http, nodemailer, url, fs, se ainda nгo os tiver. Para instalar packages para o node, й sу fazer o comando na linha de comandos (Windows e Linux):
PHP код:
npm install http --save
npm install nodemailer --save
npm install url --save
npm install fs --save
Para correr o scrip, basta navegar atй а pasta onde ele estб e correr na linha de comandos:
PHP код:
node sampmail.js
Й necessбrio fazer download da include strlib.inc. Pode ser encontrada
aqui.
USO NORMAL
Код:
SendEmail(name[], to[], subject[], text[])
Exemplo:
SendEmail("SAMPMailJS Teste", "**********@gmail.com", "Teste para o Forum Samp", "<img src='https://i.gyazo.com/cf4f68f94b939c99ccfd0d9f8f51976c.png'><br>Isto e um email de teste!");
Print do Email Recebido
USO COM TEMPLATES
Код:
SendEmail(name[], to[], subject[], text[], bool:isTemplate = false, templateName[] = "default.html")
Um template й um ficheiro .html jб feito que vai ficar presente na pasta do script. Com isto, podem criar templates infinitos e alterar sу certas partes. Com isto hб a vantagem de nгo ser preciso gastar tanta memуria no SAMP para enviar um ficheiro completo em HTML.
Este exemplo vai usar o template
default.html, que estб disponнvel tambйm no GitHub.
(AQUI)
Neste caso, iriamos gastar muita memуria ao enviar um email completo diretamente pelo SAMP. Com templates, й preciso enviar muito pouco texto para enviar um email complexo.
O template default й este:
Код HTML:
<html>
<img src='https://i.gyazo.com/cf4f68f94b939c99ccfd0d9f8f51976c.png' height="100" width="300">
<br><br> Bem vindo ao servidor <b>PLAYERNAME</b>! Obrigado por se registar!
<br> Informaзхes sobre a sua conta:
<br> IP: PADDRESS
<br> Data de Registo: DREG
<br><br> Divirta-se! Visite-nos em https://github.com/bruxo00/SAMPMailJS
</html>
Como podemos ver ali, temos algumas palavras que se destacam das outras, que neste caso sгo
PLAYERNAME,
PADDRESS e
DREG. Nos lugares onde estгo estas palavras, queremos ter por exemplo, o nome do jogador, o IP do jogador e a data de registo. Para fazer isso, no argumento
text vamos enviar ao script um formato prй-definido que ele entenda. O formato que o script entende й
tag1:valor1#tag2:valor2#tag3:valor3, que significa que vai ao template, procura no template
tag1 e vai substituir por
valor1,
tag2 e substitui por
valor2, etc. Neste caso especнfico, temos as tags
PLAYERNAME,
PADDRESS e
DREG. Para as substutuir, fazemos
PLAYERNAME:valor#PADDRESS:valor#DREG:valor. Exemplo em Pawn:
Код:
forward EnviarEmailBemVindo(playerid);
public EnviarEmailBemVindo(playerid)
{
new string[128], pName[MAX_PLAYER_NAME], IP[32];
GetPlayerName(playerid, pName, sizeof pName);
GetPlayerIp(playerid, IP, sizeof IP);
format(string, sizeof string, "PLAYERNAME:%s#PADDRESS:%s#DREG:07/06/2018", pName, IP);
SendEmail("SAMP MailJS Teste", "omeuemail@gmail.com", "Bem Vindo ao servidor", string, true);
return 1;
}
Este cуdigo iria dar um email parecido com este:
Print do exemplo da consola do script:
BUGS CONHECIDOS
Nenhum
DOWNLOADS
Repositуrio Github
Link Direto
Re: SAMPMailJS [NodeJS] -
CaioCartaxo - 06.06.2018
Muito legal o script mano, parabйns
Re: SAMPMailJS [NodeJS] -
B4dSh33p - 06.06.2018
Isso era para acontecer?
Re: SAMPMailJS [NodeJS] -
bruxo00 - 06.06.2018
Nгo, й porque o localIP estб mal configurado. EADDRNOTAVAIL -> Address not avaliable. Provavelmente estб a tentar configurar para o seu IP externo, mas tem de ser no IP local. No linux para ver o IP local basta fazer o comando
ifconfig.
Tambйm pode ser versгo desatualizada do node, no meu caso eu uso a 10.3.0.
EDIT: testei agora, e se estiver a usar uma VPS e nгo tiver acesso ao IP interno, pode usar o IP externo que vai funcionar na mesma.
Re: SAMPMailJS [NodeJS] -
silenthill - 06.06.2018
Bruxo, vocк й um bruxo, parabйns!!
Re: SAMPMailJS [NodeJS] -
Locky_ - 06.06.2018
Muito bom.
Sobre os bugs de acentos, isso й a codificaзгo (do arquivo ou durante a requesiзгo http do servidor).
Acredito que, vocк deve codificar em utf8 ou fazer o procedimento de decodificaзгo do utf8 assim que obter o conteъdo do e-mail no seu script de hospedagem. Assim nгo ocorrerб problemas. ^^
Re: SAMPMailJS [NodeJS] -
bruxo00 - 06.06.2018
Quote:
Originally Posted by Locky_
Muito bom.
Sobre os bugs de acentos, isso й a codificaзгo (do arquivo ou durante a requesiзгo http do servidor).
Acredito que, vocк deve codificar em utf8 ou fazer o procedimento de decodificaзгo do utf8 assim que obter o conteъdo do e-mail no seu script de hospedagem. Assim nгo ocorrerб problemas. ^^
|
Obrigado! Jб tentei vбrias formas de descodificar para UTF-8 em NodeJS mas nenhuma das formas que tentei funciona, por isso acho mesmo que o problema й mesmo o SAMP. Vou fazer mais alguns testes para ver se o problema й do NodeJS ou se й do SAMP, e numa prуxima atualizaзгo tento corrigir.
Re: SAMPMailJS [NodeJS] -
Ermanhaut - 06.06.2018
Muito bom, eu jб uso o NodeJS para estudar p5.js e com certeza usarei esta include no meu projeto.
Re: SAMPMailJS [NodeJS] -
JR_Junior - 06.06.2018
Quote:
Originally Posted by bruxo00
Obrigado! Jб tentei vбrias formas de descodificar para UTF-8 em NodeJS mas nenhuma das formas que tentei funciona, por isso acho mesmo que o problema й mesmo o SAMP. Vou fazer mais alguns testes para ver se o problema й do NodeJS ou se й do SAMP, e numa prуxima atualizaзгo tento corrigir.
|
Entгo, parceiro... Acho que a soluзгo estб aqui:
Baixe essa include: https://github.com/oscar-broman/strl...ter/strlib.inc
Antes de enviar a o email vocк vai usar a seguinte funзгo:
PHP код:
new TextoEmail[SAMPMAILJS_MAXPOSTDATA];
new UTF8TextoEmail[SAMPMAILJS_MAXPOSTDATA];
format(TextoEmail, sizeof(TextoEmail), "Esse й meu email com acentuaзгo de caracteres.");
utf8encode(TextoEmail, UTF8TextoEmail);
SendEmail("NOME","DESTINATБRIO", "Teste de acentuaзгo", UTF8TextoEmail);
Esse problema ocorre no plugin Discord Connector e eu resolvi dessa forma: http://forum.sa-mp.com/showpost.php?...&postcount=157
Espero que funcione no teu script tambйm, vale a pena testar!
Re: SAMPMailJS [NodeJS] -
bruxo00 - 06.06.2018
Quote:
Originally Posted by JR_Junior
Entгo, parceiro... Acho que a soluзгo estб aqui:
Baixe essa include: https://github.com/oscar-broman/strl...ter/strlib.inc
Antes de enviar a o email vocк vai usar a seguinte funзгo:
PHP код:
new TextoEmail[SAMPMAILJS_MAXPOSTDATA];
new UTF8TextoEmail[SAMPMAILJS_MAXPOSTDATA];
format(TextoEmail, sizeof(TextoEmail), "Esse й meu email com acentuaзгo de caracteres.");
utf8encode(TextoEmail, UTF8TextoEmail);
SendEmail("NOME","DESTINATБRIO", "Teste de acentuaзгo", UTF8TextoEmail);
Esse problema ocorre no plugin Discord Connector e eu resolvi dessa forma: http://forum.sa-mp.com/showpost.php?...&postcount=157
Espero que funcione no teu script tambйm, vale a pena testar!
|
Jб tinha testado assim, mas nгo tinha funcionado. Mas refiz agora e funcionou
Obrigado
Re: SAMPMailJS [NodeJS] -
B4dSh33p - 06.06.2018
Quote:
Originally Posted by bruxo00
Nгo, й porque o localIP estб mal configurado. EADDRNOTAVAIL -> Address not avaliable. Provavelmente estб a tentar configurar para o seu IP externo, mas tem de ser no IP local. No linux para ver o IP local basta fazer o comando ifconfig.
Tambйm pode ser versгo desatualizada do node, no meu caso eu uso a 10.3.0.
EDIT: testei agora, e se estiver a usar uma VPS e nгo tiver acesso ao IP interno, pode usar o IP externo que vai funcionar na mesma.
|
Agora funcionou. Reputado.
Re: SAMPMailJS [NodeJS] -
JR_Junior - 07.06.2018
Quote:
Originally Posted by bruxo00
Jб tinha testado assim, mas nгo tinha funcionado. Mas refiz agora e funcionou
Obrigado 
|
Й isso aк kkkk Talvez nгo tinha feito dessa forma que passei. O importante й que deu certo!
Re: SAMPMailJS [NodeJS] -
CaioTJF - 07.06.2018
Bom trabalho ^^
Re: SAMPMailJS [NodeJS] -
WLSF - 07.06.2018
Nossa ficou bem bacana o cуdigo, parabйns. +Rep
Re: SAMPMailJS [NodeJS] -
bruxo00 - 07.06.2018
Agora suporta templates em HTML. Ler o post principal para mais informaзхes.
Re: SAMPMailJS [NodeJS] -
Ermanhaut - 07.06.2018
Quote:
Originally Posted by bruxo00
Agora suporta templates em HTML. Ler o post principal para mais informaзхes.
|
Faзa um script de exemplo usando as templates, a explicaзгo nгo ficou muito clara.
Re: SAMPMailJS [NodeJS] -
bruxo00 - 07.06.2018
Quote:
Originally Posted by Ermanhaut
Faзa um script de exemplo usando as templates, a explicaзгo nгo ficou muito clara.
|
No post principal tem um exemplo de como funciona. Quando eu tiver tempo refaзo a explicaзгo.
Re: SAMPMailJS [NodeJS] -
Bruno13 - 07.06.2018
Boa include, gostei do cуdigo, bem otimizado e organizado. Ter outras ferramentas de email й gratificante pra comunidade.
Re: SAMPMailJS [NodeJS] -
bruxo00 - 07.06.2018
Quote:
Originally Posted by bruxo00
No post principal tem um exemplo de como funciona. Quando eu tiver tempo refaзo a explicaзгo.
|
Jб atualizei a explicaзгo, acho que estб melhor.
Obrigado a todos
Re: SAMPMailJS [NodeJS] -
PilateGR - 07.06.2018
Simplesmente, incrнvel!