[FreeBSD] Mail kuldese C progibol
Ferenc Szentpetery
szefe at kvif.hu
2002. Május. 17., P, 06:15:34 CEST
Ime egy ujabb megoldas:
1. Itt van egy C fuggveny, ami nyomtat lpr-rel:
#define PRINT_DEVICE "lp"
#define PRINT_COMMAND "lpr"
#define PRINT_PATH "/usr/bin/"
#define PRINT_COMMANDPATH "/usr/bin/lpr"
#define PRINT_PARAM1 "-P"PRINT_DEVICE
void nyomtat(char *s)
{
int n, fd1[2], fd2[2];
int pid;
if ((pipe(fd1) < 0) || (pipe(fd2) < 0))
{
fprintf(stderr, "Hiba van !!!\n);");
fflush(stderr);
return;
}
if ((pid = fork()) < 0)
{
fprintf(stderr, "Mar megint hiba van \n");
fflush(stderr);
return;
}
else if (pid > 0)
{
close(fd1[0]);
close(fd2[1]);
write(fd1[1], s, strlen(s));
close(fd1[1]);
}
else
{
close(fd1[1]);
close(fd2[0]);
dup2(fd1[0], STDIN_FILENO); //duplikalt file leiro
close(fd1[0]);
execl(PRINT_COMMANDPATH, PRINT_COMMAND, PRINT_PARAM1, (char
*)0);
printf("nyomtatas errno: %d\n", errno);
exit(0);
}
}
2. Ez pedig egy perl programreszlet, ami megmutatja, hogyan
lehet a sendmail-re rakenyszeriteni egy levelet:
$mailer = '/usr/sbin/sendmail';
$adminaddr = "valakitol\@valahonnan.hu";
$adminname = 'ATeNeved';
$email = 'valakinek\@valahova.hu';
open (MAIL, "|$mailer -i -t -f $adminaddr $email") || &error("MAIL");
print MAIL "From: $adminname <$adminaddr>\n";
print MAIL "To: $nev1 $nev2 <$email>\n";
print MAIL "Subject: azonosito: $azon\n";
print MAIL "Content-Type: text/plain; charset=charset=\"ISO-8859-1\"\n";
print MAIL "Content-Transfer-Encoding: 8bit\n";
print MAIL "\n";
print MAIL "level szovege jon itt..";
close(MAIL);
Tehat ez a 2 programtoredek, ezekbol ossze lehet rakni a kivant
funkciot.
SzeFe
További információk a(z) BSD levelezőlistáról