implemented mail sending
This commit is contained in:
		
							
								
								
									
										33
									
								
								atomstrom.py
									
									
									
									
									
								
							
							
						
						
									
										33
									
								
								atomstrom.py
									
									
									
									
									
								
							@@ -161,19 +161,32 @@ def get_entry_text(entry):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
def mail_daily_digest(session, sender, receiver, prefix):
 | 
					def mail_daily_digest(session, sender, receiver, prefix):
 | 
				
			||||||
    print 'mailing daily digest...'
 | 
					    print 'mailing daily digest...'
 | 
				
			||||||
 | 
					    entries = session.query(Feed, Feedinfo, Entry).\
 | 
				
			||||||
 | 
					                filter(Feed.id == Feedinfo.feed_id).\
 | 
				
			||||||
 | 
					                filter(Feed.id == Entry.feed_id).\
 | 
				
			||||||
 | 
					                filter(Feed.enabled == 1).\
 | 
				
			||||||
 | 
					                filter(Feed.daily == 1).\
 | 
				
			||||||
 | 
					                filter(Entry.sent == None).\
 | 
				
			||||||
 | 
					                order_by(desc(Entry.firstfetched), Feedinfo.title, Entry.title).\
 | 
				
			||||||
 | 
					                all()
 | 
				
			||||||
    body = ''
 | 
					    body = ''
 | 
				
			||||||
    count = 0
 | 
					    count = 0
 | 
				
			||||||
    for feed, feedinfo, entry in session.query(Feed, Feedinfo, Entry).filter(Feed.id==Feedinfo.feed_id).filter(Feed.id==Entry.feed_id).filter(Feed.enabled==1).filter(Feed.daily==1).order_by(desc(Entry.updated)).all():
 | 
					    for feed, feedinfo, entry in entries:
 | 
				
			||||||
        count = count + 1
 | 
					        count = count + 1
 | 
				
			||||||
        body = body + '=> %s - %s\n' % (entry.updated.strftime('%y%m%d-%H%M'), feedinfo.title)
 | 
					        body = body + '=> %s - %s\n' % (entry.firstfetched.strftime('%y%m%d-%H%M'), feedinfo.title)
 | 
				
			||||||
        body = body + '   %s\n' % entry.title
 | 
					        body = body + '   %s\n' % entry.title
 | 
				
			||||||
        body = body + '%s\n' % get_entry_text(entry)[0:100]
 | 
					        body = body + '%s\n' % get_entry_text(entry)[0:100]
 | 
				
			||||||
        body = body + '%s\n\n' % entry.link
 | 
					        body = body + '%s\n\n' % entry.link
 | 
				
			||||||
 | 
					    if count > 0:
 | 
				
			||||||
        today = datetime.now()
 | 
					        today = datetime.now()
 | 
				
			||||||
        subject = '%s (%s) - %d entries' % (today.strftime('%y%m%d'), today.strftime('%A'), count)
 | 
					        subject = '%s (%s) - %d entries' % (today.strftime('%y%m%d'), today.strftime('%A'), count)
 | 
				
			||||||
        if prefix != '':
 | 
					        if prefix != '':
 | 
				
			||||||
            subject = '%s %s' % (prefix, subject)
 | 
					            subject = '%s %s' % (prefix, subject)
 | 
				
			||||||
        send_mail(sender, receiver, subject, body)
 | 
					        send_mail(sender, receiver, subject, body)
 | 
				
			||||||
 | 
					        for feed, feedinfo, entry in entries:
 | 
				
			||||||
 | 
					            entry.sent = datetime.now()
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        print 'no unmailed digest-entries found... not sending mail.'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def mail_single_entry(feed, feedinfo, entry, sender, receiver, prefix):
 | 
					def mail_single_entry(feed, feedinfo, entry, sender, receiver, prefix):
 | 
				
			||||||
    subject = '%s' % (entry.title)
 | 
					    subject = '%s' % (entry.title)
 | 
				
			||||||
@@ -183,11 +196,25 @@ def mail_single_entry(feed, feedinfo, entry, sender, receiver, prefix):
 | 
				
			|||||||
    body = body + '%s\n' % feedinfo.link
 | 
					    body = body + '%s\n' % feedinfo.link
 | 
				
			||||||
    body = body + '%s\n' % entry.link
 | 
					    body = body + '%s\n' % entry.link
 | 
				
			||||||
    send_mail(sender, receiver, subject, body)
 | 
					    send_mail(sender, receiver, subject, body)
 | 
				
			||||||
 | 
					    entry.sent = datetime.now()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def mail_single_entries(session, sender, receiver, prefix):
 | 
					def mail_single_entries(session, sender, receiver, prefix):
 | 
				
			||||||
    print 'mailing single entries...'
 | 
					    print 'mailing single entries...'
 | 
				
			||||||
    for feed, feedinfo, entry in session.query(Feed, Feedinfo, Entry).filter(Feed.id==Feedinfo.feed_id).filter(Feed.id==Entry.feed_id).filter(Feed.enabled==1).filter(Feed.daily==0).all():
 | 
					    count = 0
 | 
				
			||||||
 | 
					    entries = session.query(Feed, Feedinfo, Entry).\
 | 
				
			||||||
 | 
					                filter(Feed.id == Feedinfo.feed_id).\
 | 
				
			||||||
 | 
					                filter(Feed.id == Entry.feed_id).\
 | 
				
			||||||
 | 
					                filter(Feed.enabled == 1).\
 | 
				
			||||||
 | 
					                filter(Feed.daily == 0).\
 | 
				
			||||||
 | 
					                filter(Entry.sent == None).\
 | 
				
			||||||
 | 
					                all()
 | 
				
			||||||
 | 
					    for feed, feedinfo, entry in entries:
 | 
				
			||||||
        mail_single_entry(feed, feedinfo, entry, sender, receiver, prefix)
 | 
					        mail_single_entry(feed, feedinfo, entry, sender, receiver, prefix)
 | 
				
			||||||
 | 
					        count = count + 1
 | 
				
			||||||
 | 
					    if count > 0:
 | 
				
			||||||
 | 
					        print 'sent %d mails' % count
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        print 'no unmailed single entries found... not sending mail.'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def fetch_readability(link):
 | 
					def fetch_readability(link):
 | 
				
			||||||
    text = hn.upgradeLink(link)
 | 
					    text = hn.upgradeLink(link)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user