This is MIMEMail.m in view mode; [Download] [Up]
#import "MIMEMail.h" #import "FileName.h" #import "support.h" #include <sys/file.h> #define MIME_VERSION "MIME-Version: 1.0\n" #define MAJOR_CONTENT_TYPE "Content-Type: multipart/mixed; boundary=" #define TEXT_CONTENT_TYPE "Content-Type: TEXT/plain; CHARSET=US-ASCII\n" #define SUB_CONTENT_TYPE "Content-Type: APPLICATION/octet-stream; name =\"%s\"\nContent-Transfer-Encoding: BASE64\n\n" #define BOUNDRY "\n--MailEnclosure-Boundry--------MailEnclosure-Boundry" @implementation MIMEMail - buildEnvelope { [super buildEnvelope]; fwrite(MIME_VERSION, 1, strlen(MIME_VERSION), fp); fwrite(MAJOR_CONTENT_TYPE, 1, strlen(MAJOR_CONTENT_TYPE), fp); putc('"',fp); fwrite(BOUNDRY + 3, 1, strlen(BOUNDRY + 3), fp); putc('"',fp); putc('\n',fp); return self; } - buildBody { id aFile; int cnt, x; int blen = strlen(BOUNDRY); if(strlen([text stringValue])) { fwrite(BOUNDRY,1,blen,fp); putc('\n',fp); fwrite(TEXT_CONTENT_TYPE,1,strlen(TEXT_CONTENT_TYPE),fp); fwrite([text stringValue], 1, strlen([text stringValue]),fp); } for(x = 0, cnt = [attachments count]; x < cnt; x++) { aFile = [attachments objectAt: x]; fwrite(BOUNDRY,1,blen,fp); putc('\n',fp); fprintf(fp,SUB_CONTENT_TYPE, [aFile basename]); base64([aFile stringValue], fp); } fwrite(BOUNDRY,1,blen,fp); fwrite("--\n",1,3,fp); return self; } -(BOOL)supportsAttachments { return YES; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.