2013-02-20 2 views
4

아래의 코드가 작동하지 않는 이유는 무엇입니까? 전자 메일이 수신되고 올바른 파일 이름 (.png 파일)을 통해 파일이 제공됩니다. 그러나 파일을 열려고 시도하면 올바르게 열리지 않습니다 (Windows 갤러리에서 그 파일이 can't open this photo or video이고 그 파일이 the file may be unsupported, damaged or corrupted).GAE에서 blobstore의 데이터를 전자 메일 첨부 파일로 보내십시오.

blobstore_handlers.BlobstoreDownloadHandler (기본적으로 GAE 문서의 정확한 처리기) 및 동일한 BLOB 키의 하위 클래스를 사용하여 파일을 다운로드하면 모든 것이 잘 작동하고 Windows에서 이미지를 읽습니다.

정보가 하나 더 있습니다. 다운로드 및 이메일의 바이너리 파일은 매우 유사하지만 길이는 약간 다릅니다.

아무에게도 GAE blobstore에서 보내는 전자 메일 첨부 파일을 보내는 방법에 대한 아이디어가 있습니까? 다른 사람들이이 문제를 제기했음을 시사하는 S/O에 대한 비슷한 질문이 있지만 결론이없는 것 같습니다.

from google.appengine.api import mail 
from google.appengine.ext import blobstore 

def send_forum_post_notification(): 
blob_reader = blobstore.BlobReader('my_blobstore_key') 
blob_info = blobstore.BlobInfo.get('my_blobstore_key') 
value = blob_reader.read() 
mail.send_mail(
    sender='[email protected]', 
    to='[email protected]', 
    subject='this is the subject', 
    body='hi', 
    reply_to='[email protected]', 
    attachments=[(blob_info.filename, value)] 
) 

send_forum_post_notification() 

답변

1

이 코드는 dev_appserver에서 작동하지 않지만 프로덕션 환경으로 푸시 될 때 작동한다는 것을 알게되었습니다.

1

왜 첨부 파일에 튜플을 사용하는지 이해가되지 않습니다. 내가 사용 :

message = mail.EmailMessage(sender = ...... 
message.attachments = [blob_info.filename,blob_reader.read()] 
+0

내가 튜플을 사용 send_mail에서'attachments' 필드는 2 차원의 목록으로, 메시지의 첨부 파일'에 해당 각 튜플에 대해 하나의 튜플을 반환합니다. 각 튜플은 파일 이름을 첫 번째 요소로, 파일 내용을 두 번째 요소로 포함합니다 .' – HorseloverFat

1

Python Google App Engine 애플리케이션에서 blobstore를 사용하여 비슷한 문제가 발생했습니다. 내 응용 프로그램은 이미지 대신 PDF 파일을 처리하지만 위의 코드와 비슷한 코드를 사용하여 "파일이 지원되지 않거나 손상되었거나 손상되었을 수 있습니다."라는 오류가 표시됩니다.

이 방법으로 문제에 접근 해보십시오. BlobInfo 객체에서 open()을 호출 한 후에 바이너리 스트림을 읽습니다. 이 두 라인 ...

value = blob_reader.read() 

:이 줄을 교체

bstream = blob_info.open() 
value = bstream.read() 

그런 다음이 선을 제거 할 수 있습니다, 너무 :

blob_reader = blobstore.BlobReader('my_blobstore_key') 

... bstream 위가 될 것이기 때문에 BlobReader 유형의. 구글에서

관련 문서는 여기에 있습니다 : 워드 프로세서를 인용, 때문에 가 https://cloud.google.com/appengine/docs/python/blobstore/blobinfoclass#BlobInfo_filename

관련 문제