<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://performiq.com/kb/index.php?action=history&amp;feed=atom&amp;title=Example_-_send_email.py</id>
	<title>Example - send email.py - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://performiq.com/kb/index.php?action=history&amp;feed=atom&amp;title=Example_-_send_email.py"/>
	<link rel="alternate" type="text/html" href="https://performiq.com/kb/index.php?title=Example_-_send_email.py&amp;action=history"/>
	<updated>2026-05-18T23:55:38Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://performiq.com/kb/index.php?title=Example_-_send_email.py&amp;diff=3831&amp;oldid=prev</id>
		<title>PeterHarding: Created page with &quot; &lt;pre&gt; #!/usr/bin/env python # # # #-------------------------------------------------------------------------------  &quot;&quot;&quot; Send email using outlook... ... &quot;&quot;&quot;  #----------------...&quot;</title>
		<link rel="alternate" type="text/html" href="https://performiq.com/kb/index.php?title=Example_-_send_email.py&amp;diff=3831&amp;oldid=prev"/>
		<updated>2012-03-25T19:58:45Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot; &amp;lt;pre&amp;gt; #!/usr/bin/env python # # # #-------------------------------------------------------------------------------  &amp;quot;&amp;quot;&amp;quot; Send email using outlook... ... &amp;quot;&amp;quot;&amp;quot;  #----------------...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
Send email using outlook...&lt;br /&gt;
...&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
import os&lt;br /&gt;
import re&lt;br /&gt;
import csv&lt;br /&gt;
import sys&lt;br /&gt;
import getopt&lt;br /&gt;
import random&lt;br /&gt;
&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
debug_level     = 0&lt;br /&gt;
verbose_flg     = False&lt;br /&gt;
&lt;br /&gt;
details         = None&lt;br /&gt;
mailing_list    = &amp;#039;mailing_list.txt&amp;#039;&lt;br /&gt;
&lt;br /&gt;
END             = re.compile(&amp;#039;^#--&amp;#039;)&lt;br /&gt;
BLANK           = re.compile(&amp;#039;^$&amp;#039;)&lt;br /&gt;
COMMENT         = re.compile(&amp;#039;^#&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
#===============================================================================&lt;br /&gt;
&lt;br /&gt;
class Person:&lt;br /&gt;
   pass&lt;br /&gt;
&lt;br /&gt;
   def __init__(self, l):&lt;br /&gt;
      self.Surname      = l[0]&lt;br /&gt;
      self.Firstname    = l[1]&lt;br /&gt;
      self.Email        = l[2]&lt;br /&gt;
&lt;br /&gt;
      try:&lt;br /&gt;
         self.AltEmail  = l[3]&lt;br /&gt;
      except:&lt;br /&gt;
         self.AltEmail  = None&lt;br /&gt;
&lt;br /&gt;
   def __str__(self):&lt;br /&gt;
      if self.AltEmail:&lt;br /&gt;
         return &amp;quot;%s/%s&amp;quot; % (self.Email, self.AltEmail)&lt;br /&gt;
      else:&lt;br /&gt;
         return self.Email&lt;br /&gt;
&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
def read_details(fname):&lt;br /&gt;
   global details&lt;br /&gt;
&lt;br /&gt;
   try:&lt;br /&gt;
      f = open(fname, &amp;#039;r&amp;#039;)&lt;br /&gt;
   except IOError, e:&lt;br /&gt;
      sys.stderr.write(&amp;#039;[dserver]  Open failed: %s\n&amp;#039; % str(e))&lt;br /&gt;
      sys.exit(1)&lt;br /&gt;
&lt;br /&gt;
   lines   = []&lt;br /&gt;
&lt;br /&gt;
   while True:&lt;br /&gt;
      line = f.readline()&lt;br /&gt;
&lt;br /&gt;
      if not line: break&lt;br /&gt;
&lt;br /&gt;
      line = line.strip()&lt;br /&gt;
&lt;br /&gt;
      if END.match(line):&lt;br /&gt;
         break&lt;br /&gt;
&lt;br /&gt;
      if COMMENT.match(line):&lt;br /&gt;
         continue&lt;br /&gt;
&lt;br /&gt;
      if BLANK.match(line):&lt;br /&gt;
         continue&lt;br /&gt;
&lt;br /&gt;
      lines.append(line)&lt;br /&gt;
&lt;br /&gt;
   f.close()&lt;br /&gt;
&lt;br /&gt;
   details = []&lt;br /&gt;
&lt;br /&gt;
   reader = csv.reader(lines, delimiter=&amp;#039;,&amp;#039;, quotechar=&amp;#039;&amp;quot;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
   for row in reader:&lt;br /&gt;
      person = Person(row)&lt;br /&gt;
      details.append(person)&lt;br /&gt;
&lt;br /&gt;
   if debug_level &amp;gt; 2: print &amp;quot;Read in %d email addresses from %s&amp;quot; % (len(details), fname)&lt;br /&gt;
&lt;br /&gt;
   return details&lt;br /&gt;
&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
def list(details):&lt;br /&gt;
   if details:&lt;br /&gt;
      for p in details:&lt;br /&gt;
         print p&lt;br /&gt;
&lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
def usage():&lt;br /&gt;
   USAGE = &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
     Usage:&lt;br /&gt;
     &lt;br /&gt;
       $ dt.py&lt;br /&gt;
    &lt;br /&gt;
   &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
   sys.stderr.write(USAGE)&lt;br /&gt;
   &lt;br /&gt;
#-------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
def main(argv):&lt;br /&gt;
   global debug_flg, verbose_flg, no_orders, sample_period&lt;br /&gt;
&lt;br /&gt;
   loop_cnt    = 1&lt;br /&gt;
   examine_flg = False&lt;br /&gt;
&lt;br /&gt;
   #----- Process command line arguments ----------------------------&lt;br /&gt;
&lt;br /&gt;
   try:&lt;br /&gt;
      opts, args = getopt.getopt(argv, &amp;quot;dehl:n:p:v&amp;quot;,&lt;br /&gt;
              [&amp;quot;debug&amp;quot;, &amp;quot;examine&amp;quot;, &amp;quot;help&amp;quot;, &amp;quot;loop&amp;quot;, &amp;quot;no=&amp;quot;, &amp;quot;period&amp;quot;, &amp;quot;verbose&amp;quot;])&lt;br /&gt;
   except getopt.GetoptError:&lt;br /&gt;
      usage()&lt;br /&gt;
      sys.exit(2)&lt;br /&gt;
   else:&lt;br /&gt;
      for opt, arg in opts:&lt;br /&gt;
         if opt in (&amp;quot;-h&amp;quot;, &amp;quot;--help&amp;quot;):&lt;br /&gt;
            usage()&lt;br /&gt;
            sys.exit(0)&lt;br /&gt;
         elif opt in (&amp;quot;-e&amp;quot;, &amp;quot;--examine&amp;quot;):&lt;br /&gt;
            scrape(SCRAPE)&lt;br /&gt;
            return 0&lt;br /&gt;
         elif opt in (&amp;quot;-l&amp;quot;, &amp;quot;--loop&amp;quot;):&lt;br /&gt;
            loop_cnt = int(arg)&lt;br /&gt;
         elif opt in (&amp;quot;-n&amp;quot;, &amp;quot;--no&amp;quot;):&lt;br /&gt;
            no_orders = int(arg)&lt;br /&gt;
         elif opt in (&amp;quot;-p&amp;quot;, &amp;quot;--period&amp;quot;):&lt;br /&gt;
            sample_period = int(arg)&lt;br /&gt;
         elif opt in (&amp;quot;-v&amp;quot;, &amp;quot;--verbose&amp;quot;):&lt;br /&gt;
            verbose_flg = True&lt;br /&gt;
&lt;br /&gt;
   people = read_details(mailing_list)&lt;br /&gt;
&lt;br /&gt;
   list(people)&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
   main(sys.argv[1:])&lt;br /&gt;
&lt;br /&gt;
#---------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Example}}&lt;br /&gt;
{{Category:Python]]&lt;/div&gt;</summary>
		<author><name>PeterHarding</name></author>
	</entry>
</feed>