Java 如何使用Google App Engine调试服务器测试接收带有附件的电子邮件

Java 如何使用Google App Engine调试服务器测试接收带有附件的电子邮件,java,eclipse,google-app-engine,Java,Eclipse,Google App Engine,我正在使用Eclipse3.6开发环境和用于Eclipse的Google插件。我创建了一个web项目,并按照下面链接中的说明将其配置为接收电子邮件 我想测试接收带有附件的电子邮件。有一个电子邮件发送模拟器,如下所述。是否有人对此模拟器进行了更新,包括附加文件,以便我可以模拟接收带有附件的电子邮件 注意:我部署的应用程序可以接收带有附件的电子邮件。我的目标是能够在测试环境中测试接收带有附件的电子邮件。否则,我无法单步执行代码 “设置应用程序以处理传入电子邮件后,您可以使用开发服务器控制台模拟传入

我正在使用Eclipse3.6开发环境和用于Eclipse的Google插件。我创建了一个web项目,并按照下面链接中的说明将其配置为接收电子邮件

我想测试接收带有附件的电子邮件。有一个电子邮件发送模拟器,如下所述。是否有人对此模拟器进行了更新,包括附加文件,以便我可以模拟接收带有附件的电子邮件

注意:我部署的应用程序可以接收带有附件的电子邮件。我的目标是能够在测试环境中测试接收带有附件的电子邮件。否则,我无法单步执行代码


“设置应用程序以处理传入电子邮件后,您可以使用开发服务器控制台模拟传入电子邮件。您可以通过转到localhost:8888/_ah/admin/(或者如果您的应用程序运行在8888以外的端口上,请改为使用该值)访问开发服务器。”。在开发服务器中,单击左侧的入站邮件,填写出现的表单,然后单击发送电子邮件。“

您不能使用Google App Engine开发服务器测试带有附件的电子邮件。

查看功能请求。

我创建了一个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)
导入操作系统,系统 导入请求 导入urllib2 导入URL解析 从email.MIMEMultipart导入MIMEMultipart 从email.MIMEBase导入MIMEBase 从email.MIMEText导入MIMEText 从email.Utils导入格式日期 从电子邮件导入编码器 def post_邮件(url、发送自、发送至、主题、文本、文件=[]): 断言isinstance(文件、列表) msg=MIMEMultipart() msg['From']=send_From msg['To']=发送至 msg['Date']=formattate(localtime=True) msg['Subject']=主语 msg.attach(MIMEText(text)) 对于文件中的f: part=MIMEBase(“应用程序”、“八位字节流”) 部分设置有效载荷(打开(f,“rb”).read()) 编码器。编码_base64(部分) part.add_头('Content-Disposition','attachment;filename=“%s”'%os.path.basename(f)) 附加信息(部分) m=msg.as_string() 打印发送到 u=urlparse.urljoin(url,“/”ah/mail/“+urllib2.quote(发送到)) 打印u post(u,data=m,headers={'content-type':'multipart/alternative'}) 如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu': 如果len(系统argv)<6: print>>sys.stderr,“用法:test_mail.py urlbase fromaddr to addr subject body file1[…filen]” 打印>>sys.stderr',例如test_mail.pyhttp://localhost:8080 test@example.com something@appname.appspotmail.com“样本主题”“样本正文”文件1.csv文件2.csv” 系统出口(1) url=sys.argv[1] 发送方=sys.argv[2] 接收器=系统argv[3] subject=sys.argv[4] body=sys.argv[5] files=sys.argv[6:] post_邮件(url、发件人、收件人、主题、正文、文件)
在您的
app.yaml
路由处理程序中,在本地开发服务器中测试时,您可能需要注释掉邮件路由的
login:admin

对于最新版本的
email
模块,导入略有不同
从email.mime.multipart从email.mime.base导入MIMEBase从email.mime.text导入MIMEText从email.utils导入formatdate从email导入编码器