{"id":720,"date":"2014-02-20T00:09:18","date_gmt":"2014-02-19T22:09:18","guid":{"rendered":"http:\/\/blog.the-leviathan.ch\/?p=720"},"modified":"2014-02-20T00:09:18","modified_gmt":"2014-02-19T22:09:18","slug":"sending-html-emails-with-inline-images-attached","status":"publish","type":"post","link":"https:\/\/blog.the-leviathan.ch\/?p=720","title":{"rendered":"sending HTML emails with inline images attached"},"content":{"rendered":"<pre lang=\"python\">\r\n#! \/usr\/bin\/python\r\n# -*- coding: utf-8 -*-\r\nimport smtplib\r\nfrom email.mime.multipart import MIMEMultipart\r\nfrom email.mime.text import MIMEText\r\nfrom email.mime.image import MIMEImage\r\nfrom email.header import Header\r\n\r\ndef sendEmail(you,greatingLine):\r\n        # me == my email address\r\n        # you == recipient's email address\r\n        me = \"VFSN Praesident <praesident @vfsn.ch>\"\r\n\r\n        # Create message container - the correct MIME type is multipart\/alternative.\r\n        #msg = MIMEMultipart('alternative')\r\n        msg = MIMEMultipart('related')\r\n        msg['Subject'] = Header(\"Verein Flugschneise S\u00fcd - NEIN\",\"utf-8\")\r\n        msg['From'] = me\r\n        msg['To'] = you\r\n\r\n        # Create the body of the message (a plain-text and an HTML version).\r\n        f = open('Mail_4.html', 'r')\r\n        mail_content = f.read()\r\n        f.close()\r\n        mail_content = mail_content.replace('%Anrede%',greatingLine)\r\n        mail_content = mail_content.replace('vfsn.gif','cid:vfsn.gif')\r\n        html = mail_content\r\n                                                                                                                                                                                                \r\n        # Record the MIME types of both parts - text\/plain and text\/html.                                                                                                                       \r\n        part2 = MIMEText(html, 'html')                                                                                                                                                          \r\n                                                                                                                                                                                                \r\n        part3_data = open('vfsn.gif', 'rb').read()                                                                                                                                              \r\n        part3 = MIMEImage(part3_data, 'gif')                                                                                                                                                    \r\n        part3.add_header('Content-ID', '<vfsn .gif>')                                                                                                                                            \r\n        part3.add_header('Content-Disposition', 'attachment', filename='vfsn.gif')\r\n        part3.add_header('Content-Disposition', 'inline', filename='vfsn.gif')\r\n\r\n        part4_data = open('Bauverbot im Sueden_2_LQ.pdf', 'rb').read()\r\n        part4 = MIMEImage(part4_data, 'pdf')\r\n        part4.add_header('Content-Disposition', 'attachment', filename='Bauverbot im Sueden_2_LQ.pdf')\r\n        part4.add_header('Content-Disposition', 'inline', filename='Bauverbot im Sueden_2_LQ.pdf')\r\n\r\n        # Attach parts into message container.\r\n        # According to RFC 2046, the last part of a multipart message, in this case\r\n        # the HTML message, is best and preferred.\r\n        msg.attach(part2)\r\n        msg.attach(part3)\r\n        msg.attach(part4)\r\n\r\n        # Send the message via local SMTP server.\r\n        s = smtplib.SMTP('localhost')\r\n        # sendmail function takes 3 arguments: sender's address, recipient's address\r\n        # and message to send - here it is sent as one string.\r\n        s.sendmail(me, you, msg.as_string())\r\n        s.quit()\r\n\r\ncsv = open('Adressen_4.csv','r').read()\r\nfor line in csv.split('\\n')[1:]:\r\n        lineArray=line.split(',')\r\n        try:\r\n                ret=lineArray[7]+\" \"+lineArray[4]+\" \"+lineArray[5]\r\n                ret=ret.strip()\r\n                if ret==\"\":\r\n                        ret=False\r\n        except:\r\n                ret=False\r\n\r\n        Anrede=ret\r\n\r\n        try:\r\n                ret=lineArray[12]\r\n                ret=ret.strip()\r\n                if ret==\"\":\r\n                        ret=False\r\n        except:\r\n                ret=False\r\n\r\n        Mail = ret\r\n\r\n        if Mail and Anrede:\r\n                print 'Sending to '+Mail+' with rcp message '+Anrede\r\n                try:\r\n                        sendEmail(Mail,Anrede)\r\n                except:\r\n                        continue\r\n<\/vfsn><\/praesident><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>#! \/usr\/bin\/python # -*- coding: utf-8 -*- import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.image import MIMEImage from email.header import Header def sendEmail(you,greatingLine): # me == my email address # you == recipient&#8217;s email address me = &#8220;VFSN Praesident &#8221; # Create message container &#8211; the correct MIME type is multipart\/alternative. &hellip; <a href=\"https:\/\/blog.the-leviathan.ch\/?p=720\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">sending HTML emails with inline images attached<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,6],"tags":[],"class_list":["post-720","post","type-post","status-publish","format-standard","hentry","category-daily","category-tech"],"_links":{"self":[{"href":"https:\/\/blog.the-leviathan.ch\/index.php?rest_route=\/wp\/v2\/posts\/720","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.the-leviathan.ch\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.the-leviathan.ch\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.the-leviathan.ch\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.the-leviathan.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=720"}],"version-history":[{"count":13,"href":"https:\/\/blog.the-leviathan.ch\/index.php?rest_route=\/wp\/v2\/posts\/720\/revisions"}],"predecessor-version":[{"id":734,"href":"https:\/\/blog.the-leviathan.ch\/index.php?rest_route=\/wp\/v2\/posts\/720\/revisions\/734"}],"wp:attachment":[{"href":"https:\/\/blog.the-leviathan.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=720"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.the-leviathan.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=720"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.the-leviathan.ch\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=720"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}