2011-02-08 3 views
0

저는 파이썬에서 약간의 실험을하고 있습니다. 나는 새 항목에 대한 RSS 피드를 확인한 다음 전자 메일을 통해 항목의 제목과 링크를 보내는 스크립트를 만들고 있습니다. 스크립트를 실행하면 특정 레벨로 작업 할 수 있습니다. 링크를 실행하면 최신 항목의 링크 + 제목이 표시되고 이메일에 관계없이 이미 해당 파일을 이메일로 전송합니다. 나는 2 가지를 추가 할 필요가있다 : 한 번에 여러 항목을 얻는 방법 (그리고 하나씩 이메일로 보내기), 그리고 그들이 이미 보내 졌는지 확인하는 방법. 어떻게하면 좋을까요? 나는 이것이 내가 지금까지 가지고 무엇을, feedparser 사용하고 있습니다 : 다음이메일 제목과 rss-feed의 링크를 이메일로 보내십시오.

d = feedparser.parse('http://feedparser.org/docs/examples/rss20.xml') 
link = d.entries[0].link 
title = d.entries[0].title 

그리고 거기에 "링크"와 "제목"으로 이메일을 보내 라인의 몇. 나는 Etag를 사용해야 할 것임을 알고 있지만, 어떻게 해결할 수 없었으며, 이메일을 1로 보내려면 어떻게해야합니까?

답변

0

피드 파싱 부분에 대해서는 How to detect changed and new items in an RSS feed?에 관한이 질문에 제공된 조언을 따르는 것이 좋습니다. 기본적으로 각 항목의 내용을 해시하고이를 ID로 사용할 수 있습니다.

예를 들어 프로그램을 처음 실행하면 각 항목의 해시가 계산되고 해시가 저장되며 메일로 이러한 새 항목이 전송됩니다. 다음에 실행하면 각 항목의 내용을 다시 해시하고 이전에 발견 된 해시와 비교합니다 (이미 구문 분석되어 전송 된 항목으로 개발할 때 일종의 데이터베이스를 사용해야하거나 적어도 메모리 사전/목록에 사용해야합니다) . 프로그램이 이전 실행에서 생성되지 않은 위치에서 해시를 발견하면 새 전자 메일을 조합하여 "새로운"항목으로 보냅니다.

귀하의 이메일 조립 부분에 관해서는 Sending HTML email in Python이 도움이 될 수 있습니다. 텍스트 만 보내고 HTML 버전을 보내십시오.

+0

본질적으로 ETag가 해시 자체가 아닌가? 그래서 내가 그것을 구한다면, 나는 다른 것을 해시하는 것과 같은 결과를 얻게 될 것입니다. 그리고 이메일을 보내는 것은 문제가되지 않습니다. 내가 어떻게 해야할지 모르겠지만, 이메일을 1 개씩 보내면됩니다. 지금 당장은 RSS 피드의 최신 항목을 사용하여 한 번에 1 개의 이메일 만 보낼 수 있습니다. – HankSmackHood

+0

당신은 최신 항목으로 한 번에 하나의 이메일 만 보낼 수 있으며, 하나씩 메일을 보내고 싶다고하셨습니다. 만약 당신이 그 중 어느 것이 더 있는지 알 수 없다는 것을 의미합니다. –

+0

내가 틀린 것이 아니라면, etag은 전체 피드를 나타냅니다. 즉, 두 개의 etags를 비교하면 피드가 변경되었음을 알 수 있지만 어떤 피드가 새로운 것인지 알 수 없습니다. etags를 사용하여 피드가 변경되었는지 확인할 수 있으며, 피드가 변경되었다는 것을 알게되면 새 항목에 대한 피드 항목을 확인합니다 (각 항목의 내용에 대한 해싱 기술 사용). 그리고 당신의 우편물을 보내는 새로운 항목마다. –

0

가장 간단한 방법은 파이썬 smtplib documentation example을 참조하십시오. (나는이 코드를 반복하지 않을 것이다.) 기본적인 이메일 전송에 필요한 모든 것.

더 좋고/더 복잡한 전자 메일 내용을 보려면 파이썬의 email module을 살펴보십시오.

+0

그래, 나는 이미 이메일을 보내고있다. 내가 아직 일할 수없는 부분이다. – HankSmackHood

관련 문제