domingo, 18 de outubro de 2020

Programa para enviar notas para cada e-mail de estuantes.

 # 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;

}

===========================