{"id":2739,"date":"2018-03-22T09:21:43","date_gmt":"2018-03-22T14:21:43","guid":{"rendered":"http:\/\/www.logikalsolutions.com\/wordpress\/?p=2739"},"modified":"2018-03-27T09:39:28","modified_gmt":"2018-03-27T14:39:28","slug":"an-updated-c_mega_mail-example","status":"publish","type":"post","link":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/an-updated-c_mega_mail-example\/","title":{"rendered":"An Updated C_MEGA_MAIL Example"},"content":{"rendered":"<p>Things get dated. It is sad, but true. Time marches on and little snippets of code you squirreled away for future use start to not work as good, or not even compile because everything around them has changed. Such was the case recently with C_MEGA_MAIL.C. It stayed locked in time and VMS changed. Oh, it still compiled and seemed to work, but when you stuck it in something which sent hundreds of mail messages over 24 hours things got a bit wonky. The problem was the ITEM_LIST structure needed by the functions changed &#8220;just a bit.&#8221;<\/p>\n<p>I also tweaked this so it could run under a guest account without privs. Sorry about the funky indenting, it didn&#8217;t paste well.<\/p>\n<pre>\/* C_MEGA_MAIL.C\r\n *\r\n * Example program to show a user how to send mail.\r\n *\r\n * Distributed with \"The Minimum You Need to Know\r\n * to be an OpenVMS Application Developer\".\r\n *\r\n *\/\r\n\r\n\/*\r\n * ANSI headers\r\n *\/\r\n#include &lt;stdlib&gt;\r\n#include &lt;stdio&gt;\r\n#include &lt;string&gt;\r\n\r\n\/*\r\n * VMS headers\r\n *\/\r\n#include &lt;maildef&gt;\r\n#include &lt;mail$routines&gt;\r\n#include &lt;lib$routines&gt;\r\n#include &lt;descrip&gt;\r\n#include &lt;jpidef&gt;\r\n#include &lt;prvdef&gt;\r\n\r\n# define __NEW_STARLET \r\n#include &lt;iledef&gt;\r\n\r\n#define LENGTH(descriptor) descriptor.dsc$w_length\r\n\r\nILE3 nulllist[] = { {0,0,0,0} };\r\n\r\nstatic unsigned int send_context = 0; \r\nstatic int priv_user; \/* User has priv for commands *\/\r\n\r\n\/*;;;;;\r\n * Function prototypes\r\n *;;;;;\r\n *\/\r\nvoid add_mail_user_dest( unsigned int *send_context, char *user_str);\r\nvoid parse_logical_user( unsigned int *send_context, char *user_str);\r\n\r\n\/*;;;;;\r\n * Functions and subroutines\r\n *;;;;;\r\n *\/\r\n\r\nint main( int *argc, char **argv)\r\n{\r\n int l_stat;\r\n char to_str[255], from_str[255], subject_str[255],\r\n text_file_str[255], translated_name_str[255],\r\n work_str[255];\r\n\r\nILE3 mail_item_1[5], mail_item_2[5];\r\n unsigned int priv_bits[2];\r\n\r\n\r\n $DESCRIPTOR( work_str_desc, work_str);\r\n $DESCRIPTOR( translated_name_desc, translated_name_str);\r\n\r\n\/*\r\n ** Check the users privledges to see if they are allowed to\r\n ** change the \"from\" name\r\n *\/\r\n (void) lib$getjpi(&amp;JPI$_CURPRIV, 0, 0, priv_bits, 0, 0);\r\n if (priv_bits[0] &amp; PRV$M_SYSPRV)\r\n {\r\n priv_user = TRUE;\r\n }\r\n else\r\n {\r\n priv_user = FALSE;\r\n }\r\n\r\n\/\/;;;;;\r\n \/\/ Initialize the send\r\n \/\/;;;;;\r\n l_stat = mail$send_begin( &amp;send_context, nulllist, nulllist);\r\n\r\nif (!(l_stat &amp; 1))\r\n {\r\n puts( \"Error initializing mail interface\");\r\n printf( \"Error code %d\\n\", l_stat);\r\n exit( l_stat);\r\n } \/* end test for successful init *\/\r\n\r\n\/\/;;;;;\r\n \/\/ Build the attributes\r\n \/\/;;;;;\r\n strcpy( to_str, \"MEGA_SUPPORT_LIST\");\r\n strcpy( from_str, \"HUGHES\");\r\n strcpy( subject_str, \"MEGA SYSTEM NOTIFICATION\");\r\n\r\nint x=0;\r\n mail_item_1[x].ile3$w_length = strlen( to_str);\r\n mail_item_1[x].ile3$w_code = MAIL$_SEND_TO_LINE;\r\n mail_item_1[x].ile3$ps_bufaddr = to_str;\r\n mail_item_1[x].ile3$ps_retlen_addr = NULL;\r\n\r\n++x;\r\n mail_item_1[x].ile3$w_length = strlen( subject_str);\r\n mail_item_1[x].ile3$w_code = MAIL$_SEND_SUBJECT;\r\n mail_item_1[x].ile3$ps_bufaddr = subject_str;\r\n mail_item_1[x].ile3$ps_retlen_addr = NULL;\r\n\r\nif (priv_user)\r\n {\r\n ++x;\r\n mail_item_1[x].ile3$w_length = strlen( from_str);\r\n mail_item_1[x].ile3$w_code = MAIL$_SEND_FROM_LINE;\r\n mail_item_1[x].ile3$ps_bufaddr = from_str;\r\n mail_item_1[x].ile3$ps_retlen_addr = NULL;\r\n }\r\n\r\n++x;\r\n mail_item_1[x].ile3$w_length = 0;\r\n mail_item_1[x].ile3$w_code = 0;\r\n mail_item_1[x].ile3$ps_bufaddr = NULL;\r\n mail_item_1[x].ile3$ps_retlen_addr = NULL;\r\n\r\nl_stat = mail$send_add_attribute( &amp;send_context, mail_item_1, nulllist);\r\n\r\nif (!(l_stat &amp; 1))\r\n {\r\n puts( \"Error setting up mail header information\");\r\n printf( \"Error code %d\\n\", l_stat);\r\n exit( l_stat);\r\n } \/* end test for failure *\/\r\n\r\n\r\n \/\/;;;;;\r\n \/\/ Add the message body\r\n \/\/;;;;;\r\n strcpy( text_file_str, \"HELLO.TXT\");\r\n\r\nmail_item_2[0].ile3$w_length = strlen( text_file_str);\r\n mail_item_2[0].ile3$w_code = MAIL$_SEND_FILENAME;\r\n mail_item_2[0].ile3$ps_bufaddr = text_file_str;\r\n mail_item_2[0].ile3$ps_retlen_addr = NULL;\r\n\r\nmail_item_2[1].ile3$w_length = 0;\r\n mail_item_2[1].ile3$w_code = 0;\r\n mail_item_2[1].ile3$ps_bufaddr = NULL;\r\n mail_item_2[1].ile3$ps_retlen_addr = NULL;\r\n\r\nl_stat = mail$send_add_bodypart( &amp;send_context, mail_item_2, nulllist);\r\n\r\nif ( !(l_stat &amp; 1))\r\n {\r\n puts( \"Error creating message body\");\r\n printf( \"Error code %d\\n\", l_stat);\r\n exit( l_stat);\r\n } \/* end test for failure *\/\r\n\r\n\/\/;;;;;\r\n \/\/ Now we have to actually fill in the address.\r\n \/\/ Mail does not use the address information setup\r\n \/\/ in the message header.\r\n \/\/;;;;;\r\n memset( translated_name_str, '\\0', sizeof( translated_name_str));\r\n strcpy( work_str, to_str);\r\n\r\nLENGTH( work_str_desc) = strlen( work_str);\r\n\r\nl_stat = lib$get_logical( &amp;work_str_desc, &amp;translated_name_desc);\r\n\r\nif ( strlen( translated_name_str) &lt; 1)\r\n {\r\n \/\/\r\n \/\/ Destination is not a logical, just add the user\r\n \/\/\r\n add_mail_user_dest( &amp;send_context, work_str);\r\n }\r\n else\r\n parse_logical_user( &amp;send_context, translated_name_str);\r\n\r\n\r\n \/\/;;;;;\r\n \/\/ Send the message\r\n \/\/;;;;;\r\n\r\nl_stat = mail$send_message( &amp;send_context, nulllist, nulllist);\r\n\r\nif ( !(l_stat &amp; 1))\r\n {\r\n puts( \"Error sending the mail message\");\r\n printf( \"Error code %d\\n\", l_stat);\r\n exit( l_stat);\r\n } \/* end test for failure *\/\r\n\r\n\/\/;;;;;\r\n \/\/ Clean up the mail context\r\n \/\/;;;;;\r\n l_stat = mail$send_end( &amp;send_context, nulllist, nulllist);\r\n\r\nif ( !(l_stat &amp; 1))\r\n {\r\n puts( \"Error ending mail send\");\r\n printf( \"Error code %d\\n\", l_stat);\r\n exit( l_stat);\r\n } \/* end test for failure *\/\r\n\r\nreturn 1;\r\n\r\n} \/* end main *\/\r\n\r\n\r\n\/\/;;;;;;;;;;\r\n\/\/ Subroutine to parse the mail destinations from a \r\n\/\/ translated logical string.\r\n\/\/;;;;;;;;;;\r\nvoid parse_logical_user( unsigned int *send_context, char *user_str)\r\n{\r\n int l_stat;\r\n char work_str[1024], *tmp, *tmp2;\r\n\r\nstrcpy( work_str, user_str);\r\n tmp = work_str;\r\n\r\nwhile( strlen( tmp) &gt; 0)\r\n {\r\n tmp2 = strchr( tmp, ',');\r\n if ( tmp2 != NULL)\r\n {\r\n *tmp2 = '\\0';\r\n }\r\n\r\nadd_mail_user_dest( send_context, tmp);\r\n\r\nif ( tmp2 != NULL) \r\n tmp = tmp2+1;\r\n else\r\n *tmp = '\\0';\r\n\r\n} \/* end while loop *\/\r\n} \/* end parse_logical_user subroutine *\/\r\n\r\n\/\/;;;;;\r\n\/\/ Subroutine to add a mail user destination to the mail\r\n\/\/ message currently being built.\r\n\/\/;;;;;\r\nvoid add_mail_user_dest( unsigned int *send_context, char *user_str)\r\n{\r\n int l_stat;\r\n short int w_user_type;\r\n\r\nILE3 m_item[5];\r\n\r\nm_item[0].ile3$w_length = strlen( user_str);\r\n m_item[0].ile3$w_code = MAIL$_SEND_USERNAME;\r\n m_item[0].ile3$ps_bufaddr = user_str;\r\n m_item[0].ile3$ps_retlen_addr = NULL;\r\n\r\nw_user_type = MAIL$_TO;\r\n\r\nm_item[1].ile3$w_length = sizeof(w_user_type);\r\n m_item[1].ile3$w_code = MAIL$_SEND_USERNAME_TYPE;\r\n m_item[1].ile3$ps_bufaddr = &amp;w_user_type;\r\n m_item[1].ile3$ps_retlen_addr = NULL;\r\n\r\nm_item[2].ile3$w_length = 0;\r\n m_item[2].ile3$w_code = 0;\r\n m_item[2].ile3$ps_bufaddr = NULL;\r\n m_item[2].ile3$ps_retlen_addr = NULL;\r\n\r\nl_stat = mail$send_add_address( send_context, m_item, nulllist);\r\n\r\nif ( !(l_stat &amp; 1))\r\n {\r\n puts( \"Error adding mail destination address\");\r\n printf( \"Error code %d\\n\", l_stat);\r\n exit( l_stat);\r\n } \/* end test for failure *\/\r\n\r\n\r\n} \/* end add_mail_user_dest subroutine *\/\r\n\r\n\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Things get dated. It is sad, but true. Time marches on and little snippets of code you squirreled away for future use start to not work as good, or not even compile because everything around them has changed. Such was the case recently with C_MEGA_MAIL.C. It stayed locked in time and VMS changed. Oh, it still compiled and seemed to work, but when you stuck it in something which sent hundreds of mail messages over &hellip; <a title=\"An Updated C_MEGA_MAIL Example\" class=\"bnm-read-more\" href=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/an-updated-c_mega_mail-example\/\"><span class=\"screen-reader-text\">An Updated C_MEGA_MAIL Example<\/span>Read more<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,4],"tags":[1589,1588,9],"class_list":["post-2739","post","type-post","status-publish","format-standard","hentry","category-information-technology","category-thank-you-sir-may-i-have-another","tag-c-programming","tag-mail-utility","tag-openvms","bnm-entry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>An Updated C_MEGA_MAIL Example &#8211; Logikal Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/an-updated-c_mega_mail-example\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"An Updated C_MEGA_MAIL Example &#8211; Logikal Blog\" \/>\n<meta property=\"og:description\" content=\"Things get dated. It is sad, but true. Time marches on and little snippets of code you squirreled away for future use start to not work as good, or not even compile because everything around them has changed. Such was the case recently with C_MEGA_MAIL.C. It stayed locked in time and VMS changed. Oh, it still compiled and seemed to work, but when you stuck it in something which sent hundreds of mail messages over &hellip; An Updated C_MEGA_MAIL ExampleRead more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/an-updated-c_mega_mail-example\/\" \/>\n<meta property=\"og:site_name\" content=\"Logikal Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-03-22T14:21:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-03-27T14:39:28+00:00\" \/>\n<meta name=\"author\" content=\"seasoned_geek\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"seasoned_geek\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/an-updated-c_mega_mail-example\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/an-updated-c_mega_mail-example\\\/\"},\"author\":{\"name\":\"seasoned_geek\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\"},\"headline\":\"An Updated C_MEGA_MAIL Example\",\"datePublished\":\"2018-03-22T14:21:43+00:00\",\"dateModified\":\"2018-03-27T14:39:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/an-updated-c_mega_mail-example\\\/\"},\"wordCount\":130,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\"},\"keywords\":[\"c programming\",\"mail utility\",\"OpenVMS\"],\"articleSection\":[\"Information Technology\",\"Thank You Sir May I Have Another\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/an-updated-c_mega_mail-example\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/an-updated-c_mega_mail-example\\\/\",\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/an-updated-c_mega_mail-example\\\/\",\"name\":\"An Updated C_MEGA_MAIL Example &#8211; Logikal Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#website\"},\"datePublished\":\"2018-03-22T14:21:43+00:00\",\"dateModified\":\"2018-03-27T14:39:28+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/an-updated-c_mega_mail-example\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/an-updated-c_mega_mail-example\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/an-updated-c_mega_mail-example\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"An Updated C_MEGA_MAIL Example\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/\",\"name\":\"Logikal Blog\",\"description\":\"No part of this site may be used by AI without first purchasing that right\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\",\"name\":\"seasoned_geek\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\",\"caption\":\"seasoned_geek\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\"},\"description\":\"Roland Hughes started his IT career in the early 1980s. He quickly became a consultant and president of Logikal Solutions, a software consulting firm specializing in OpenVMS application and C++\\\/Qt touchscreen\\\/embedded Linux development. Early in his career he became involved in what is now called cross platform development. Given the dearth of useful books on the subject he ventured into the world of professional author in 1995 writing the first of the \\\"Zinc It!\\\" book series for John Gordon Burke Publisher, Inc. A decade later he released a massive (nearly 800 pages) tome \\\"The Minimum You Need to Know to Be an OpenVMS Application Developer\\\" which tried to encapsulate the essential skills gained over what was nearly a 20 year career at that point. From there \\\"The Minimum You Need to Know\\\" book series was born. Three years later he wrote his first novel \\\"Infinite Exposure\\\" which got much notice from people involved in the banking and financial security worlds. Some of the attacks predicted in that book have since come to pass. While it was not originally intended to be a trilogy, it became the first book of \\\"The Earth That Was\\\" trilogy: Infinite Exposure Lesedi - The Greatest Lie Ever Told John Smith - Last Known Survivor of the Microsoft Wars When he is not consulting Roland Hughes posts about technology and sometimes politics on his blog. He also has regularly scheduled Sunday posts appearing on the Interesting Authors blog.\",\"sameAs\":[\"https:\\\/\\\/theminimumyouneedtoknow.com\"],\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/author\\\/seasoned_geek\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"An Updated C_MEGA_MAIL Example &#8211; Logikal Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/an-updated-c_mega_mail-example\/","og_locale":"en_US","og_type":"article","og_title":"An Updated C_MEGA_MAIL Example &#8211; Logikal Blog","og_description":"Things get dated. It is sad, but true. Time marches on and little snippets of code you squirreled away for future use start to not work as good, or not even compile because everything around them has changed. Such was the case recently with C_MEGA_MAIL.C. It stayed locked in time and VMS changed. Oh, it still compiled and seemed to work, but when you stuck it in something which sent hundreds of mail messages over &hellip; An Updated C_MEGA_MAIL ExampleRead more","og_url":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/an-updated-c_mega_mail-example\/","og_site_name":"Logikal Blog","article_published_time":"2018-03-22T14:21:43+00:00","article_modified_time":"2018-03-27T14:39:28+00:00","author":"seasoned_geek","twitter_card":"summary_large_image","twitter_misc":{"Written by":"seasoned_geek","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/an-updated-c_mega_mail-example\/#article","isPartOf":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/an-updated-c_mega_mail-example\/"},"author":{"name":"seasoned_geek","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842"},"headline":"An Updated C_MEGA_MAIL Example","datePublished":"2018-03-22T14:21:43+00:00","dateModified":"2018-03-27T14:39:28+00:00","mainEntityOfPage":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/an-updated-c_mega_mail-example\/"},"wordCount":130,"commentCount":0,"publisher":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842"},"keywords":["c programming","mail utility","OpenVMS"],"articleSection":["Information Technology","Thank You Sir May I Have Another"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/an-updated-c_mega_mail-example\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/an-updated-c_mega_mail-example\/","url":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/an-updated-c_mega_mail-example\/","name":"An Updated C_MEGA_MAIL Example &#8211; Logikal Blog","isPartOf":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#website"},"datePublished":"2018-03-22T14:21:43+00:00","dateModified":"2018-03-27T14:39:28+00:00","breadcrumb":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/an-updated-c_mega_mail-example\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/an-updated-c_mega_mail-example\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/an-updated-c_mega_mail-example\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.logikalsolutions.com\/wordpress\/"},{"@type":"ListItem","position":2,"name":"An Updated C_MEGA_MAIL Example"}]},{"@type":"WebSite","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#website","url":"https:\/\/www.logikalsolutions.com\/wordpress\/","name":"Logikal Blog","description":"No part of this site may be used by AI without first purchasing that right","publisher":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.logikalsolutions.com\/wordpress\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842","name":"seasoned_geek","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r","url":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r","caption":"seasoned_geek"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r"},"description":"Roland Hughes started his IT career in the early 1980s. He quickly became a consultant and president of Logikal Solutions, a software consulting firm specializing in OpenVMS application and C++\/Qt touchscreen\/embedded Linux development. Early in his career he became involved in what is now called cross platform development. Given the dearth of useful books on the subject he ventured into the world of professional author in 1995 writing the first of the \"Zinc It!\" book series for John Gordon Burke Publisher, Inc. A decade later he released a massive (nearly 800 pages) tome \"The Minimum You Need to Know to Be an OpenVMS Application Developer\" which tried to encapsulate the essential skills gained over what was nearly a 20 year career at that point. From there \"The Minimum You Need to Know\" book series was born. Three years later he wrote his first novel \"Infinite Exposure\" which got much notice from people involved in the banking and financial security worlds. Some of the attacks predicted in that book have since come to pass. While it was not originally intended to be a trilogy, it became the first book of \"The Earth That Was\" trilogy: Infinite Exposure Lesedi - The Greatest Lie Ever Told John Smith - Last Known Survivor of the Microsoft Wars When he is not consulting Roland Hughes posts about technology and sometimes politics on his blog. He also has regularly scheduled Sunday posts appearing on the Interesting Authors blog.","sameAs":["https:\/\/theminimumyouneedtoknow.com"],"url":"https:\/\/www.logikalsolutions.com\/wordpress\/author\/seasoned_geek\/"}]}},"_links":{"self":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts\/2739","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/comments?post=2739"}],"version-history":[{"count":0,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts\/2739\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/media?parent=2739"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/categories?post=2739"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/tags?post=2739"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}