rewrote mail function, to avoid warnings on mailserver
This commit is contained in:
		@@ -6,7 +6,9 @@ hostname = localhost
 | 
			
		||||
database = atomstrom
 | 
			
		||||
 | 
			
		||||
[email]
 | 
			
		||||
sender = Atomstrom <dummy@dummy.invalid>
 | 
			
		||||
receiver = dummy@dummy.invalid
 | 
			
		||||
sender_name = Atomstrom
 | 
			
		||||
sender_address = dummy@dummy.invalid
 | 
			
		||||
receiver_name = Mail Receiver
 | 
			
		||||
receiver_address = dummy@dummy.invalid
 | 
			
		||||
prefix_single = [as]
 | 
			
		||||
prefix_digest = [atomstrom]
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										43
									
								
								atomstrom.py
									
									
									
									
									
								
							
							
						
						
									
										43
									
								
								atomstrom.py
									
									
									
									
									
								
							@@ -1,4 +1,5 @@
 | 
			
		||||
#!/usr/bin/env python
 | 
			
		||||
#coding: utf-8
 | 
			
		||||
 | 
			
		||||
from sqlalchemy import create_engine, Table, Column, Integer, Text, String, Boolean, DateTime, MetaData, ForeignKey, desc
 | 
			
		||||
from sqlalchemy.orm import sessionmaker, relation, backref
 | 
			
		||||
@@ -14,9 +15,14 @@ import hn
 | 
			
		||||
import html2text
 | 
			
		||||
import ConfigParser
 | 
			
		||||
import pprint
 | 
			
		||||
import smtplib
 | 
			
		||||
from email.mime.text import MIMEText
 | 
			
		||||
from optparse import OptionParser
 | 
			
		||||
from cStringIO import StringIO
 | 
			
		||||
from email.mime.multipart import MIMEMultipart
 | 
			
		||||
from email.mime.text import MIMEText
 | 
			
		||||
from email.header import Header
 | 
			
		||||
from email import Charset
 | 
			
		||||
from email.generator import Generator
 | 
			
		||||
import smtplib
 | 
			
		||||
 | 
			
		||||
Base = declarative_base()
 | 
			
		||||
 | 
			
		||||
@@ -142,15 +148,19 @@ class Entry(Base):
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def send_mail(sender, receiver, subject, body):
 | 
			
		||||
    print 'sending to %s: %s' % (receiver, subject)
 | 
			
		||||
    mail = MIMEText(body, _charset='utf-8')
 | 
			
		||||
    mail['From'] = sender.encode('utf-8')
 | 
			
		||||
    mail['To'] = receiver
 | 
			
		||||
    mail['Subject'] = subject
 | 
			
		||||
    mailserver = smtplib.SMTP('localhost')
 | 
			
		||||
    mailserver.sendmail(sender, [receiver], mail.as_string())
 | 
			
		||||
    mailserver.quit()
 | 
			
		||||
 | 
			
		||||
    print 'sending to %s: %s' % (receiver[0], subject)
 | 
			
		||||
    Charset.add_charset('utf-8', Charset.QP, Charset.QP, 'utf-8')
 | 
			
		||||
    mail = MIMEMultipart('alternative')
 | 
			
		||||
    mail['Subject'] = "%s" % Header(subject, 'utf-8')
 | 
			
		||||
    mail['From'] = "\"%s\" <%s>" % (Header(sender[0], 'utf-8'), sender[1])
 | 
			
		||||
    mail['To'] = "\"%s\" <%s>" % (Header(receiver[0], 'utf-8'), receiver[1])
 | 
			
		||||
    textpart = MIMEText(body, 'plain', 'utf-8')
 | 
			
		||||
    mail.attach(textpart)
 | 
			
		||||
    str_io = StringIO()
 | 
			
		||||
    gen = Generator(str_io, False)
 | 
			
		||||
    gen.flatten(mail)
 | 
			
		||||
    s = smtplib.SMTP('localhost')
 | 
			
		||||
    s.sendmail("", receiver[1], str_io.getvalue())
 | 
			
		||||
 | 
			
		||||
def get_entry_text(entry):
 | 
			
		||||
    if entry.readability:
 | 
			
		||||
@@ -195,7 +205,6 @@ def mail_daily_digest(session, sender, receiver, prefix):
 | 
			
		||||
        subject = '%s (%s) - %d entries' % (today.strftime('%y%m%d'), today.strftime('%A'), count)
 | 
			
		||||
        if prefix != '':
 | 
			
		||||
            subject = '%s %s' % (prefix, subject)
 | 
			
		||||
        sender = '%s <%s>' % ('Atomstrom', sender)
 | 
			
		||||
        send_mail(sender, receiver, subject, body)
 | 
			
		||||
        for feed, feedinfo, entry in entries:
 | 
			
		||||
            entry.sent = datetime.now()
 | 
			
		||||
@@ -212,7 +221,7 @@ def mail_single_entry(feed, feedinfo, entry, sender, receiver, prefix):
 | 
			
		||||
    body = '%s\n\n' % get_entry_text(entry)
 | 
			
		||||
    body = body + '%s\n' % feedinfo.link
 | 
			
		||||
    body = body + '%s\n' % link
 | 
			
		||||
    sender = '%s <%s>' % (feedinfo.title, sender)
 | 
			
		||||
    sender[0] = feedinfo.title
 | 
			
		||||
    send_mail(sender, receiver, subject, body)
 | 
			
		||||
    entry.sent = datetime.now()
 | 
			
		||||
 | 
			
		||||
@@ -351,13 +360,13 @@ if __name__ == '__main__':
 | 
			
		||||
    if options.fetch:
 | 
			
		||||
        fetch_all_feeds(session)
 | 
			
		||||
    if options.single:
 | 
			
		||||
        sender = config.get('email', 'sender')
 | 
			
		||||
        receiver = config.get('email', 'receiver')
 | 
			
		||||
        sender = [config.get('email', 'sender_name'), config.get('email', 'sender_address')]
 | 
			
		||||
        receiver = [config.get('email', 'receiver_name'), config.get('email', 'receiver_address')]
 | 
			
		||||
        prefix = config.get('email', 'prefix_single')
 | 
			
		||||
        mail_single_entries(session, sender, receiver, prefix)
 | 
			
		||||
    if options.daily:
 | 
			
		||||
        sender = config.get('email', 'sender')
 | 
			
		||||
        receiver = config.get('email', 'receiver')
 | 
			
		||||
        sender = [config.get('email', 'sender_name'), config.get('email', 'sender_address')]
 | 
			
		||||
        receiver = [config.get('email', 'receiver_name'), config.get('email', 'receiver_address')]
 | 
			
		||||
        prefix = config.get('email', 'prefix_digest')
 | 
			
		||||
        mail_daily_digest(session, sender, receiver, prefix)
 | 
			
		||||
    if not (options.fetch or options.single or options.daily):
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user