Programa feito em C para enviar notas para estudantes a partir de uma planilha (que é convertida em um arquivo de extensão csv).
Programa feito em C:
=========================================
#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);
char *ano;
char *semestre;
char *cod;
char *matricula;
char *nome;
char *curso;
char *turma;
char *email;
char linha[512], comando[256], assunto[256];
char *prova1;
char *seminario1;
char *totalfaltas;
while(fgets(linha, 512, arq) != NULL){
printf("%s", linha);
ano = strtok(linha,";");
semestre = strtok(NULL,";");
cod = strtok(NULL,";");
matricula = strtok(NULL,";");
nome = strtok(NULL,";");
curso = strtok(NULL,";");
turma = strtok(NULL,";");
email = strtok(NULL,";");
prova1 = strtok(NULL,";");
seminario1 = strtok(NULL,";");
totalfaltas = strtok(NULL,";");
printf("\n\n%s %s %s %s %s %s %s %s %s %s %s\n\n", ano, semestre, cod, matricula, nome, curso, turma, email, prova1, seminario1, totalfaltas);
sprintf(assunto, "Notas de %s.\n\nProva 1 = 25%%\nSeminário 1 = 10%%\n\nNome: %s\nMatrícula: %s\n\nNota da prova 1: %s\nNota do seminario 1: %s\nTotal de faltas: %s\n", cod, nome, matricula, prova1, seminario1, totalfaltas);
// sprintf(assunto, "Notas de %s.\n\nNome: %s\nMatrícula: %s\n\nProva 1: %s\nProva 2: %s\nTotal de faltas: %s\n", cod, nome, matricula, prova1, prova2, totalfaltas);
sprintf(comando, "echo \"From: cristianoltfs@gmail.com\nTo: %s\nSubject: Notas e faltas de %s\n\n%s \" | sendmail -t\n\n", email, cod, assunto);
printf(comando);
// system(comando);
}
fclose(arq);
printf("Arquivo %s fechado com sucesso!\n\n", nomearquivo);
return 0;
}
=========================================
Comando para compilar:
$ gcc -std=c11 -Wall -pedantic -lm enviarnotas.c -o enviarnotas
Para executar deve estar logado como superusuário:
# ./enviarnotas dados.csv
O formato do arquivo dados.csv pode ser verificado a seguir:
=========================================
COD;MATRICULA;NOME;EMAIL;PROVA1;PROVA2;TOTALFALTAS
PRO491;11.1.4378;CRISTIANO LUIS;cristianoltfs@gmail.com;3;5;10
PRO491;11.2.1286;NOME DO ALUNO 2;email_do_aluno2@gmail.com ;10;5;15
PRO491;11.1.1359;NOME DO ALUNO 3;email_do_aluno2@hotmail.com ;8;8;20
=========================================
Instalar o ssmtp:
# apt-get install ssmtp
Configurando o ssmtp:
Fazer as mudanças no arquivo ssmpt.conf e salvar
# gedit /etc/ssmtp/ssmtp.conf
alterações:
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
alterar as linhas:
-----------------------------
mailhub=smtp.gmail.com:587
FromLineOverride=YES
-----------------------------
inserir as linhas no final:
-----------------------------
AuthUser=meu-email@gmail.com(INSERIR SEU E-MAIL AQUI)
AuthPass=minha-senha(INSERIR SUA SENHA DO E-MAIL AQUI)
UseSTARTTLS=YES
-----------------------------=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
arquivo completo antes das alterações:
=========================================
#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=postmaster
# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=mail
# Where will the mail seem to come from?
#rewriteDomain=
# The full hostname
hostname=cristianoltfs-Inspiron-3647.Home
# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
#FromLineOverride=YES
=========================================
arquivo completo depois das alterações:
=========================================
#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=postmaster
# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.gmail.com:587
# Where will the mail seem to come from?
#rewriteDomain=
# The full hostname
hostname=cristianoltfs-Inspiron-3647.Home
# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES
AuthUser=meu-email@gmail.com(INSERIR SEU E-MAIL AQUI)
AuthPass=minha-senha(INSERIR SUA SENHA DO E-MAIL AQUI)
UseSTARTTLS=YES
=========================================
Nenhum comentário:
Postar um comentário