diff --git a/src/apps/bin/Jamfile b/src/apps/bin/Jamfile index 08c7f352dd..6ad36ef6dd 100644 --- a/src/apps/bin/Jamfile +++ b/src/apps/bin/Jamfile @@ -23,6 +23,10 @@ StdBinCommands catattr.cpp roster.cpp : be stdc++.r4 ; + +StdBinCommands + mail.cpp + : be /boot/beos/system/lib/libmail.so ; StdBinCommands chop.c @@ -50,10 +54,6 @@ SubInclude OBOS_TOP src apps bin chkbfs ; SubInclude OBOS_TOP src apps bin listdev ; SubInclude OBOS_TOP src apps bin mkdos ; SubInclude OBOS_TOP src apps bin pc ; -SubInclude OBOS_TOP src apps bin sed ; - -# RCS commands -SubInclude OBOS_TOP src apps bin rcs ; # Network command line tools SubInclude OBOS_TOP src apps bin arp ; @@ -66,4 +66,3 @@ SubInclude OBOS_TOP src apps bin traceroute ; # Compression command line tools SubInclude OBOS_TOP src apps bin unzip ; SubInclude OBOS_TOP src apps bin zip ; -SubInclude OBOS_TOP src apps bin gzip ; diff --git a/src/apps/bin/mail.cpp b/src/apps/bin/mail.cpp new file mode 100644 index 0000000000..ff0ddf8ca6 --- /dev/null +++ b/src/apps/bin/mail.cpp @@ -0,0 +1,117 @@ +// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ +// +// Copyright (c) 2003, OpenBeOS +// +// This software is part of the OpenBeOS distribution and is covered +// by the OpenBeOS license. +// +// +// File: mail.cpp +// Author: Santiago (Jacques) Lema +// Description: sends an e-mail from the command-line +// Created : May 23, 2003 +// Modified by: Jérome Duval +// +// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ + +#include +#include +#include +#include + +#define APP_SIG "application/x-vnd.OBos-cmd-mail" + +int main( int argc, char* argv[] ) +{ + BApplication mailApp(APP_SIG); + + // No arguments, show usage + if (argc==1) { + fprintf(stdout,"[OBOS-mail] Sorry: This program can only send mail, not read it.\n"); + fprintf(stdout,"usage: /bin/mail [-v] [-s subject] [-c cc-addr] [-b bcc-addr] to-addr ...\n"); + fflush(stdout); + return B_OK; + } + + char *subject = "No title"; + char *cc = ""; + char *bcc = ""; + BString to = ""; + BString body = ""; + + bool verbose =false; + //parse arguments + for (int i=1; i \n",to.String()); + fprintf(stdout,"Cc:\t<%s> \n",cc); + fprintf(stdout,"Bcc:\t<%s> \n",bcc); + fprintf(stdout,"Subj:\t<%s> \n",subject); + fprintf(stdout,"Body:\t<%s> \n",body.String()); + fprintf(stdout,"\n"); + } + + //check if valid recipients + if (strcmp(to.String(), "") == 0 + && strcmp(cc, "") == 0 + && strcmp(bcc, "") == 0) { + + fprintf(stdout, + "[Error]\nYou must specify at least one recipient in to,cc or bcc fields.\n"); + return B_ERROR; + } + + //read each line until we get a single dot "." on a line + char line[32768] = ""; + + printf("Now type your message.\nType '.' alone on a line to send it.\n"); + do { + gets(line); + + if (strcmp(line, ".") != 0) { + body.Append(line).Append("\n"); + } + //fprintf(stdout,"Line: %s \n",line); + } while (strcmp(line, ".") != 0); + + + if (verbose) + fprintf(stdout, "\nBody:\n%s\n", body.String()); + + if (verbose) + fprintf(stdout, "\nSending E-mail...\n"); + + + fflush(stdout); + + BMailMessage mail; + mail.AddHeaderField(B_MAIL_TO, to.String()); + mail.AddHeaderField(B_MAIL_CC, cc); + mail.AddHeaderField(B_MAIL_BCC, bcc); + mail.AddHeaderField(B_MAIL_SUBJECT, subject); + mail.AddContent(body.String(),strlen(body.String())); + status_t result = mail.Send(); + + if (result==B_OK) + fprintf(stdout, "\nMessage was sent successfully.\n"); + +}