• 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Plugin] email_samp for SA-MP and open.mp — SMTP straight from the server
#1
? email_samp 1.0.0

E-mail (SMTP) direto do servidor — SA-MP e open.mp, o mesmo binário
Email (SMTP) straight from the server — SA-MP and open.mp, the same binary


Download · GitHub · Documentação

Quote:?? Código de registro, recuperação de senha, aviso para a staff: sempre deu para fazer, mas nunca de dentro do servidor. Era requisição HTTP para um script PHP, PHPMailer do outro lado, um serviço externo no meio — três coisas para manter no ar só para mandar um e-mail. Este plugin fala SMTP e TLS por conta própria, e o envio cabe em uma linha.

?? Registration codes, password resets, staff alerts: always doable, never from inside the server. It meant an HTTP request to a PHP script, PHPMailer on the other end, some external service in between — three moving parts just to send one mail. This plugin speaks SMTP and TLS itself, and sending fits on one line.

Code:
email_setup();  // credenciais do .env, do ambiente ou do smtp.ini email_send_to("[email protected]", "Bem-vindo", "Sua conta esta pronta.");

?? Nada trava. Toda native retorna na hora: o e-mail sai em threads separadas e o resultado volta num callback, então relay lento não segura o tick.
?? Nothing blocks. Every native returns at once: mail leaves on worker threads and the result comes back in a callback, so a slow relay never holds the tick.

Code:
email_send_to(email, "Bem-vindo", corpo, "OnMailSent", "d", playerid); Email::OnMailSent(success, playerid) {     SendClientMessage(playerid, -1, success ? ("E-mail enviado.") : ("Falhou."));     return 1; }



? Instalar é copiar um arquivo / Installing is copying one file

?? Sem PHPMailer, sem sendmail, sem OpenSSL no sistema: SMTP e TLS estão compilados dentro do binário. Funciona em host compartilhado, onde você não instala nada. E é um arquivo só para os dois servidores:
?? No PHPMailer, no sendmail, no system OpenSSL: SMTP and TLS are compiled into the binary. Works on shared hosting, where you install nothing. One file, both servers:
  • SA-MP — ?? em plugins/, nome no server.cfg / ?? in plugins/, name in server.cfg
  • open.mp nativo — ?? em components/, encontrado sozinho / ?? in components/, auto-discovered
  • open.mp legacy — ?? o mesmo arquivo em plugins/ / ?? same file in plugins/

?? Dois includes: <email_samp> em snake_case e <email_samp_omp> no estilo Email_SendTo, para quem não quer misturar convenção no gamemode.
?? Two includes: <email_samp> in snake_case and <email_samp_omp> in Email_SendTo style.



✉️ O texto do e-mail fica num arquivo / The wording lives in a file

?? Quem já mandava e-mail pelo PHP tem o .html pronto — ele serve como está. Ou use um .tpl, que carrega assunto, versão texto e versão HTML juntos:
?? If you already sent mail from PHP, your .html works as-is. Or use a .tpl, which carries subject, text and HTML together:

Code:
[subject] Seu codigo e {codigo} [text] Ola {nome}, seu codigo de verificacao e {codigo}.

Code:
new msg = email_new(); email_add_to(msg, email); email_set_template(msg, "mail/registro.tpl"); email_set_var(msg, "nome", nome); email_set_var(msg, "codigo", "%d", codigo); email_send(msg);

?? Editou o arquivo, o próximo e-mail já sai com o texto novo — sem recompilar, sem reiniciar. E o valor que veio do jogador é escapado sozinho no HTML: nick com <script> chega como texto.
?? Edit the file and the next mail uses it — no recompile, no restart. Player-supplied values are escaped automatically in the HTML part.



? E ainda / And also
  • ?? Anexo e imagem embutida / ?? Attachments and inline images — ?? arquivo, texto gerado no gamemode, ou imagem que aparece dentro do HTML / ?? a file, data built in the gamemode, or an image shown inside the HTML
  • ?? Ritmo de envio / ?? Paced for real providers — ?? e-mails por minuto, prioridade e nova tentativa em falha temporária: mailing para a base inteira não atrasa o reset de senha de quem está esperando / ?? rate limit, priorities and retries, so a mailing never delays a password reset
  • ?? Seguro com o que o jogador digita / ?? Safe with player input — ?? quebra de linha em cabeçalho é recusada (senão um nick vira um Bcc: escondido), endereço é validado de verdade e anexo não sai da pasta do servidor / ?? header injection refused, addresses parsed, attachments sandboxed
  • ?? TLS obrigatório / ?? TLS required — ?? se o STARTTLS não subir, o envio falha em vez de mandar a senha em texto claro / ?? if STARTTLS fails, the send fails instead of leaking the password
  • ?? Acentuação intacta / ?? Accents survive — ?? nick acentuado chega certo, não como Jo?o / ?? no more Jo?o
  • ?? Modo de teste / ?? Dry-run — ?? escreve cada mensagem como .eml em logs/dry-run/ e não conecta: dá para mexer no gamemode sem gastar cota nem mandar e-mail para jogador de verdade / ?? writes each message as an .eml and sends nothing

?? Credenciais ficam fora do código: um .env (via env_samp), variáveis de ambiente, uma URL SMTP ou um smtp.ini — as mesmas chaves em qualquer fonte, e nenhuma delas precisa ir para o repositório.
?? Credentials stay out of the source: a .env, the process environment, an SMTP URL or an smtp.ini — the same keys from any source, and none of them has to reach your repo.



? Links
  • Documentação — ?? instalação, configuração, envio, templates, erros e segurança / ?? installation, configuration, sending, templates, errors, security
  • Referência da API — ?? as 34 natives, uma a uma / ?? all 34 natives
  • Exemplos — ?? comece pelo 00_ready_to_send: um gamemode pronto, com o arquivo do e-mail junto / ?? start with 00_ready_to_send

?? Projeto independente, mantido por uma pessoa. Não é afiliado, endossado nem patrocinado pelo SA-MP, pelo open.mp ou por qualquer provedor de e-mail citado.
?? Independent project, maintained by one person. Not affiliated with or endorsed by SA-MP, open.mp or any email provider mentioned.


?? Dúvidas, sugestões e relatos de bug são bem-vindos — aqui no tópico ou nas issues.
?? Questions, suggestions and bug reports are welcome — here or on GitHub issues.


⭐ github.com/NullSablex/email-samp
  Reply