Как проверить получение электронной почты с вложением с помощью сервера отладки Google App Engine - PullRequest
2 голосов
/ 23 января 2011

Я использую среду разработки Eclipse 3.6 с плагином Google для Eclipse. Я создал веб-проект и настроил его на получение электронной почты, следуя инструкциям по ссылке ниже.

Я хотел бы проверить получение электронного письма с приложением. Существует симулятор отправки электронной почты, как описано ниже. У кого-нибудь есть обновление для этого симулятора, которое включает в себя прикрепление файлов, чтобы я мог имитировать получение электронной почты с вложением.

Примечание. Мое развернутое приложение получает электронную почту с вложениями. Моя цель - иметь возможность проверять получение писем с вложениями в тестовой среде. В противном случае я не могу пройти через код.

http://code.google.com/appengine/docs/java/mail/receiving.html

"После того как вы настроили свое приложение для обработки входящей электронной почты, вы можете использовать консоль сервера разработки для имитации входящих сообщений электронной почты. Вы можете получить доступ к серверу разработки, перейдя по адресу localhost: 8888 / _ah / admin / (или если ваше приложение работает на порте, отличном от 8888. Используйте это значение.) На сервере разработки щелкните Входящая почта с левой стороны, заполните появившуюся форму и нажмите Отправить электронную почту. "

Ответы [ 2 ]

1 голос
/ 08 сентября 2014

Я создал скрипт Python для имитации отправки вложений:

import os, sys
import requests
import urllib2
import urlparse

from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.Utils import formatdate
from email import Encoders

def post_mail(url, send_from, send_to, subject, text, files=[]):
    assert isinstance(files, list)

    msg = MIMEMultipart()
    msg['From'] = send_from
    msg['To'] = send_to
    msg['Date'] = formatdate(localtime=True)
    msg['Subject'] = subject

    msg.attach( MIMEText(text) )

    for f in files:
        part = MIMEBase('application', "octet-stream")
        part.set_payload( open(f,"rb").read() )
        Encoders.encode_base64(part)
        part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(f))
        msg.attach(part)

    m = msg.as_string()
    print send_to
    u = urlparse.urljoin(url, "/_ah/mail/" + urllib2.quote(send_to))
    print u
    requests.post(u, data=m, headers={'content-type':'multipart/alternative'})


if __name__ == '__main__':
    if len(sys.argv) < 6:
        print >> sys.stderr, "Usage: test_mail.py urlbase fromaddr toaddr subject body file1 [..filen]"
        print >> sys.stderr, 'E.g. test_mail.py http://localhost:8080 test@example.com something@appname.appspotmail.com "Sample Subject" "Sample Body" file1.csv file2.csv'
        sys.exit(1)

    url = sys.argv[1]
    sender = sys.argv[2]
    receiver = sys.argv[3]
    subject = sys.argv[4]
    body = sys.argv[5]
    files = sys.argv[6:]

    post_mail(url, sender, receiver, subject, body, files)

В ваших app.yaml обработчиках маршрута вам может понадобиться закомментировать login: admin для почтового маршрута при тестировании на локальном сервере разработки.

1 голос
/ 23 января 2011

Вы не можете проверить электронную почту с вложением, используя сервер разработки Google App Engine.
Обратите внимание на запрос .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...