# apt install msmtp msmtp-mta bsd-mailx
Criar o arquivo: .msmtprc, na pasta do usuário
Dar permissão de escrita e leitura somente para o usuário
~$ chmod 700 .msmtprc
~$ chmod u-x .msmtprc
~$ ls -lh .msmtprc
-rw------- 1 usuário usuário 303 dez 5 11:37 .msmtprc
ou esse:
$ chmod 600 ~/.msmtprc
Conteúdo do arquivo .msmtprc:
---------------------------------
# Set default values for all following accounts.
defaults
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile ~/.msmtp.log
# Gmail
account gmail
host smtp.gmail.com
port 587
from EMAIL@GMAIL.COM
user EMAIL@GMAIL.COM
password SENHA
# Set a default account
account default : gmail
---------------------------------
Entrar na configuração do google e permitir "Acesso a app menos seguro"
Acesso a app menos seguro
Sua conta está vulnerável porque você permite que apps e dispositivos que usam tecnologias de login menos seguras a acessem. Para manter sua conta segura, o Google desativará essa configuração automaticamente se ela não estiver sendo usada. Saiba mais
Ativado
Testando:
$ echo "Testando envio de email com msmtp" | mail -s "Enviar email sem SMTP local" EMAIL@gmail.com
============================
https://wiki.archlinux.org/index.php/Msmtp
https://wiki.debian.org/msmtp
https://wiki.debian.org/sSMTP
https://canaltech.com.br/linux/entendendo-e-configurando-permissoes-de-arquivos-e-pastas-no-linux/
http://www.dicas-l.com.br/arquivo/enviar_email_com_msmtp.php
===========================
PROGRAMA
===========================
// gcc -std=c11 -Wall -pedantic -lm enviarnotas.c -o enviarnotas
// echo "Testando envio de email com msmtp" | mail -s "Enviar email sem SMTP local" fulano@bla.com
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc, char *argv[]){
if ( argc < 2 ){
printf("\nDigite o nome do arquivo com a extensão após o comando %s\n", argv[0]);
printf("Exemplo: %s arquivo.csv\n\n", argv[0]);
return 1;
}
if ( argc > 2 ){
printf("\nDigite somente o nome do arquivo com a extensão após o comando %s\n", argv[0]);
printf("Exemplo: %s arquivo.csv\n\n", argv[0]);
return 1;
}
char nomearquivo[256];
strcpy(nomearquivo,argv[1]);
FILE *arq;
arq = fopen(nomearquivo,"r");
if (arq == NULL){
printf("\nHouve um erro ao abrir o arquivo.\n\n");
return 1;
} else printf("\nArquivo %s aberto com sucesso!\n\n", nomearquivo);
/* dados padrões do arquivo csv gerados pelo portal minha ufop */
char *ano;
char *semestre;
char *coddisciplina;
char *matricula;
char *nome;
char *curso;
char *turma;
char *email;
char linha[1024];
char comando[4096];
char assunto[2048];
/* dados das avaliações e faltas */
char *totalfaltas;
char *ex1;
char *ex2;
char *ex3;
char *ex4;
char *seminario;
char *totalpontos;
while(fgets(linha, 1024, arq) != NULL){
ano = strtok(linha,",");
semestre = strtok(NULL,",");
coddisciplina = strtok(NULL,",");
matricula = strtok(NULL,",");
nome = strtok(NULL,",");
curso = strtok(NULL,",");
turma = strtok(NULL,",");
email = strtok(NULL,",");
totalfaltas = strtok(NULL,",");
ex1 = strtok(NULL,",");
ex2 = strtok(NULL,",");
ex3 = strtok(NULL,",");
ex4 = strtok(NULL,",");
seminario = strtok(NULL,",");
totalpontos = strtok(NULL,",");
sprintf(assunto, "Ano: %s, Semestre: %s, Código: %s, Matrícula: %s, Nome: %s, Curso: %s, Turma: %s\n\n"
"Notas e faltas.\n\n=======\n\n"
"Total de faltas: %s\n\n"
"Nota no exercício 1 (12,5%%): %s\n"
"Nota no exercício 2 (12,5%%): %s\n"
"Nota no exercício 3 (12,5%%): %s\n"
"Nota no exercício 4 (12,5%%): %s\n"
"Nota no seminário (50%%): %s\n\n"
"Nota total em 10: %s\n\n=======\nNA = not available",
ano,
semestre,
coddisciplina,
matricula,
nome,
curso,
turma,
totalfaltas,
ex1,
ex2,
ex3,
ex4,
seminario,
totalpontos);
sprintf(comando, "echo \"%s\" | mail -s \" Notas e faltas em %s\" %s ", assunto, coddisciplina, email);
printf(comando);
system(comando);
}
fclose(arq);
printf("Arquivo %s fechado com sucesso!\n\n", nomearquivo);
return 0;
}
===========================