I'm trying to send an email with an inline image. I've set the Content-ID and added a <img src="cid:image1#myemail"> to my html. The image arrives properly as an attachment, but mail clients show a broken image.
What am I doing wrong? The full source of the message is below:
Return-Path: <igal#lucee.org>
Received: from 128.149.80.230
by smtp.googlemail.com with ESMTPSA id i7sm9313707paf.9.2016.09.01.11.15.59
for <igal#lucee.org>
(version=TLS1 cipher=ECDHE-RSA-AES128-SHA bits=128/128);
Thu, 01 Sep 2016 11:15:59 -0700 (PDT)
Date: Thu, 1 Sep 2016 11:15:54 -0700 (PDT)
From: igal#lucee.org
To: igal#lucee.org
Message-ID: <489410968.5.1472753755600.JavaMail.Admin#IS16>
Subject: [Test] LDEV-545 html 5.0.0.200
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="----=_Part_4_247149912.1472753754816"
X-Mailer: Lucee Mail
------=_Part_4_247149912.1472753754816
Content-Type: multipart/alternative;
boundary="----=_Part_3_913848408.1472753754815"
------=_Part_3_913848408.1472753754815
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
Text Message
------=_Part_3_913848408.1472753754815
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 7bit
Inline Image: <img src="cid:image1#myemail">
------=_Part_3_913848408.1472753754815--
------=_Part_4_247149912.1472753754816
Content-Type: image/jpeg; name=test-image.jpg
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename=test-image.jpg
Content-ID: image1#myemail
/9j/4AAQSkZJRgABAQEAYABgAAD/4QBoRXhpZgAATU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUA
AAABAAAARgEoAAMAAAABAAIAAAExAAIAAAARAAAATgAAAAAAAABgAAAAAQAAAGAAAAABcGFpbnQu
bmV0IDQuMC4xMAAA/9sAQwAKBwcJBwYKCQgJCwsKDA8ZEA8ODg8eFhcSGSQgJiUjICMiKC05MCgq
NisiIzJEMjY7PUBAQCYwRktFPko5P0A9/9sAQwELCwsPDQ8dEBAdPSkjKT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09/8AAEQgAIgBDAwEiAAIRAQMRAf/E
AB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAE
EQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZH
SElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1
tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEB
AQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXET
IjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFla
Y2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG
x8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A9mooqvNfQW95bWsj
kTXO7ylwfm2jJ57cU0m9gLFFUdK1qx1uGWXT5xMkUhif5SpDDtggetGnazY6sbkWM4l+yymGUgEB
WHXk9fqKt0pxveL038hcyL1FUdL1ix1mxN5YTrLbhmUvgjBHXrVaHxRpk80aRSzMkjiOOf7PJ5Ls
TgASbdpyenPNP2NS7XK9N9Ng5l3NeisuPxFZTXr2sK3cskc3kOyWkrIr9wXC7RjPXNalTKEofErA
mnsFFFFQMKwtX/5Gvw/9bj/0XW7RWlOfI7+TX3poTVzzLSGutB0y3uLBCzawJbUYHC3PnP5bn22s
2fZBV4xto9l4g03TR/pEs9vY22TglmgRdxPrjcxPtXfUV3SzDmk5OO++u+qav6JWMlSsrXOANlf2
iavpC2cdl/aViWtIYp/MG+NAjAHaOSu38iauyeI0a50eHSNRjRZJooJdOMI82Nf4s55XAGOldlij
AznHPrUPGRl8cP6tbqn2XnvrqP2bWzOK0C+trfXtTim1xLd31SULYsYx5pOADyN3J9D2rtqTFLXP
XrKrLmSt/Xoi4x5VYKKKKwKCiiigAooooAKKKKACiiigAooooA//2Q==
------=_Part_4_247149912.1472753754816--
I found the problem. It is missing Content-Type: multipart/related;
Related
Apologies in advance for a rather abstract problem description.
I have an outlook mailbox to which I send a message with an attached PNG image through a built-in API call.
When the email arrives at to outlook mailbox (on web app or desktop app), I see no attachments.
If I send the same email with a PNG attached to my GMAIL account using the same API call, that email with the PNG attachment arrives as expected.
Could someone please advise why GMAIL and OUTLOOK mailboxes could behave differently? Could there be a problem with the API call or the server?
MIME
Delivered-To: mtester#test.com
Received: by 2002:ac8:124d:0:0:0:0:0 with SMTP id g13csp604452qtj;
Thu, 30 Sep 2021 06:30:46 -0700 (PDT)
X-Google-Smtp-Source: ABdhPJzSSm54VUI64FiCNLMp63/T5SNi8pdUZMcX/nmZbGSLcew6JodBKWDkj1fUGv0YmUOQYDFA
X-Received: by 2002:aa7:8ecc:0:b0:434:d4fe:311b with SMTP id b12-20020aa78ecc000000b00434d4fe311bmr4582925pfr.22.1633008645701;
Thu, 30 Sep 2021 06:30:45 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1633008645; cv=none;
d=google.com; s=arc-20160816;
b=MUVw5NvEuomZzBCy12ORQVZ+4WbYC4T8pWZkJYjomePfPsAcq42wKK1ceNZjuC5bgp
GLNK3cgGk5eXk7N+wdTy7PN3qoEr0x4d/kmipkuI9v/mf1M86ht/Z2C9j+Bb8hOfR4D4
+PTJs+5lBRWM9H571HDl4Cewa7Suc/krmjWnpw4pIDew3IbXEFkq80uVnyWHxQx6QC1l
+K1h7NnyByCKp79WYsVz3Hlc2BNAYlGh+jNbwpA9ZPHCHRqNFvlmx75Vb+IdY5e4Nf4J
Bs+S1i2RcxLELUU5+WSyzAX8vQY1oEZushVgIffIahQ9DN6m5AVVvClXSCyjaxBHy3Z0
dB5g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816;
h=list-id:list-unsubscribe:notification-stream-id:mime-version
:subject:message-id:to:from:date:dkim-signature;
bh=pFR40JQ2902/VixP+mqdG3A+OXkafDmmSdbRRZHIjrU=;
b=U1jrKrN5u11bI9CxXg8eOSGALfm2Q2IsPt4HlBhSyIwwCQvTxD+f6zCBPXyyzhDdTQ
d7tsb5boag+5hFXmi+VAbOvTbY34K+NvFKzHbuzRbWoCbPljwBaL02DCjVmsrgMvYaGu
K4LjiSzpfyYP5Jf2IcPk5tIiijpeUMcItrmgv7Kx157/tyLyw3YYoBLbT2sBb1vPBJg3
8APG/0FdaREtcLRqt22JivPTG/EATpUODR3m4qBB24ytEvHGcnmYS5r27xt03egAedfo
0rxNL4Lhh+Tlv6nA9dQfKmzGaGkcc2Ux38jRS7FuWmbXqhLu1w1bIcIVEfe3ourr27oC
JMgg==
ARC-Authentication-Results: i=1; mx.google.com;
dkim=pass header.i=#development.test.com header.s=scph1119 header.b=aplxpcYW;
spf=pass (google.com: domain of msprvs1=18907xmukpyxm=bounces-21811-12061#spmailtechnol.com designates 192.174.90.181 as permitted sender) smtp.mailfrom="msprvs1=18907xMUKpYxM=bounces-21811-12061#spmailtechnol.com";
dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=development.test.com
Return-Path: <msprvs1=18907xMUKpYxM=bounces-21811-12061#spmailtechnol.com>
Received: from mta-90-181.sparkpostmail.com (mta-90-181.sparkpostmail.com. [192.174.90.181])
by mx.google.com with ESMTPS id x6si3536741pfb.329.2021.09.30.06.30.45
for <mtester#test.com>
(version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
Thu, 30 Sep 2021 06:30:45 -0700 (PDT)
Received-SPF: pass (google.com: domain of msprvs1=18907xmukpyxm=bounces-21811-12061#spmailtechnol.com designates 192.174.90.181 as permitted sender) client-ip=192.174.90.181;
Authentication-Results: mx.google.com;
dkim=pass header.i=#development.test.com header.s=scph1119 header.b=aplxpcYW;
spf=pass (google.com: domain of msprvs1=18907xmukpyxm=bounces-21811-12061#spmailtechnol.com designates 192.174.90.181 as permitted sender) smtp.mailfrom="msprvs1=18907xMUKpYxM=bounces-21811-12061#spmailtechnol.com";
dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=development.test.com
X-MSFBL: 71kOGDf9zf9xI2yo3tHvW/RTob2jTP/CmzLRto9+IBM=|eyJyIjoibWdlaWRyaWN oaXNAbnltYnVzLmNvbSIsInRlbmFudF9pZCI6InNwYyIsIm1lc3NhZ2VfaWQiOiI 2MTUxMDRiYzU1NjFkZDMwOWI4MiIsInN1YmFjY291bnRfaWQiOiIxMjA2MSIsImN 1c3RvbWVyX2lkIjoiMjE4MTEifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=development.test.com; s=scph1119; t=1633008645; i=#development.test.com; bh=pFR40JQ2902/VixP+mqdG3A+OXkafDmmSdbRRZHIjrU=; h=Date:From:To:Message-ID:Subject:Content-Type; b=aplxpcYWKZQDDNs2ie3UAJQRm43XWzz3+d2vCLU6/pvuE++Ho7IuVHjhkTT2Hfwca
nIYG35q3O9NvorZFMF3YIOgEBnvkd4fFGq9yYWASRil57uFA+9JMMcIxFQX0FbZaw+
9W9SVN8rdm2Aid7YQHSrlSphGljqsFDMARrpbv0I=
Authentication-Results: aa.mta1vlct.cc.prd.sparkpost smtp.user=<hidden>; auth=pass (LOGIN)
Received: from [64.106.167.126] ([64.106.167.126:34426] helo=mail-002.development.test.com) by aa.mta1vlct.cc.prd.sparkpost (envelope-from <dev40#development.test.com>) (ecelerity 4.4.0.17957 r(msys-ecelerity:tags/4.4.0.5)) with ESMTPSA (cipher=AES-256-GCM) id B9/28-33277-40CB5516; Thu, 30 Sep 2021 13:30:45 +0000
Received: from testing-868f87487d-nh4tt (worker03.testings01.development.test.com [10.0.204.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail-002.development.test.com (Postfix) with ESMTPSA id E21013AB for <mtester#test.com>; Thu, 30 Sep 2021 09:30:43 -0400 (EDT)
Date: Thu, 30 Sep 2021 09:30:43 -0400 (EDT)
From: dev40#development.test.com
To: mtester#test.com
Message-ID: <1302160953.5570.1633008643871#testing-868ff9787d-nh4tt>
Subject: test email from testhub
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="----=_Part_5568_1264138795.1633008643847"
Notification-Stream-Id: EmailNotificationStream:1633008643484-0
List-Unsubscribe: <mailto:unsubscribe#unsub.spmta.com?subject=unsubscribe:CXvq00rTSMSrVDS7ikX5WwGZH1qnGJMttd8rMfKeGsw~|eyAicmNwdF90byI6ICJtZ2VpZHJpY2hpc0BueW1idXMuY29tIiwgInRlbmFudF9pZCI6ICJzcGMiLCAiY3VzdG9tZXJfaWQiOiAiMjE4MTEiLCAibWVzc2FnZV9pZCI6ICI2MTUxMDRiYzU1NjFkZDMwOWI4MiIsICJzdWJhY2NvdW50X2lkIjogIjEyMDYxIiB9>
List-Id: <spc.21811.12061.sparkpostmail.com>
------=_Part_5568_1264138795.1633008643847
Content-Type: multipart/related; boundary="----=_Part_5569_1922131613.1633008643847"
------=_Part_5569_1922131613.1633008643847
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit
<html><body><h1>TEST html email from testhub controller</h1></body></html>
------=_Part_5569_1922131613.1633008643847
Content-Type: image/png; name="Capture 2.PNG"
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename="Capture 2.PNG"
Content-ID: <Capture%202.PNG>
------=_Part_5569_1922131613.1633008643847--
------=_Part_5568_1264138795.1633008643847--
The HTML body and the image are grouped into a multipart/related group, so Outlook probably hides the image attachment - this is usually done for the HTML images referenced by the body (which is not your case).
Try to get rid of that part:
...
Content-Type: multipart/mixed; boundary="----=_Part_5568_1264138795.1633008643847"
------=_Part_5568_1264138795.1633008643847
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit
<html><body><h1>TEST html email from testhub controller</h1></body></html>
------=_Part_5568_1264138795.1633008643847
Content-Type: image/png; name="Capture 2.PNG"
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename="Capture 2.PNG"
Content-ID: <Capture%202.PNG>
------=_Part_5568_1264138795.1633008643847--
My code only extracts text types in an email, and forwards the email.
My code:
msg=email.message_from_string(raw_email.decode('utf-8')) #raw_email = fetched[0][1]
content = ''
content_type = None
if msg.is_multipart():
for part in msg.walk():
if part.get_content_maintype() == 'text':
thispart = part.get_payload(decode=True)
if isinstance(thispart, bytes):
thispart = thispart.decode()
content = thispart
content_type = part.get_content_subtype()
else:
if msg.get_content_maintype() == 'text':
thispart = msg.get_payload()
if isinstance(thispart, bytes):
thispart = thispart.decode()
content = thispart
content_type = msg.get_content_subtype()
my_mail = email.message.EmailMessage()
my_mail.set_content(content)
But some emails contain pictures, so what I want more is to forward pictures also.
It comes like this:
Received: from [127.0.0.1] ()
by xxxx () with ESMTP id xxxx
for <xxx#xxx>; Wed, 27 May 2020 18:09:34 +0900
Content-Type: multipart/alternative;
boundary="--_NmP-ebdbfeeb1622aae7-Part_1"
X-FireEye: Clean
From: xxxx#xxxx
To: xxx#xxx
Subject: =?UTF-8?Q?XXXXX?=
Message-ID: <XXXXXX#XXX>
Date: Wed, 27 May 2020 09:09:34 +0000
MIME-Version: 1.0
----_NmP-ebdbfeeb1622aae7-Part_1
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
CONTENT Link </a><br>URL : <a =href></a><br><br><br>
----_NmP-ebdbfeeb1622aae7-Part_1
Content-Type: multipart/related; type="text/html";
boundary="--_NmP-ebdbfeeb1622aae7-Part_3"
----_NmP-ebdbfeeb1622aae7-Part_3
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable
CONTENT Link </a><br>URL : <a =href></a><br><br><br> <img src=3D"cid:unique"/>
----_NmP-ebdbfeeb1622aae7-Part_3
Content-Type: image/png; name=image.png
Content-ID: <unique>
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=image.png
LOTS_OF_WIERD_CHARACTERS
----_NmP-ebdbfeeb1622aae7-Part_3--
----_NmP-ebdbfeeb1622aae7-Part_1--
This mail is multiparted, and there are lots of weird characters which seem to represent an image.
How can I create a multipart email that contains an image, and how can I represent that image with the received weird characters??
Thanks:)
I'm a bit baffled by this. It works fine in everything I've tested, except Outlook
my #all_parts;
push #all_parts, Email::MIME->create(
body_str => $text,
attributes => {
encoding => 'quoted-printable',
content_type => "text/plain",
disposition => "inline",
charset => "UTF-8"
}
);
my $email = Email::MIME->create(
header_str => [
From => $from,
To => [ $to ],
Subject => $subject
],
parts => \#all_parts,
attributes => {
content_type => "multipart/mixed"
}
);
print "Content-type: text/html \n\n";
print "<pre>" . $email->as_string . "</pre> ";
Which outputs this message:
From: delicia#x.com
To: andy.newby#hotmail.com
Subject: webform delicia Menu
Date: Sat, 21 Mar 2020 04:22:57 -0700
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="15847897770.621258BEF.22006"
Content-Transfer-Encoding: 7bit
--15847897770.621258BEF.22006
Date: Sat, 21 Mar 2020 04:22:57 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
foo bar=
--15847897770.621258BEF.22006--
For some reason it shows up buggered:
I must be missing something really stupid - but I can't see it. Maybe a missing header?
The full source of an incoming email looks like:
Return-path: <x#x.com>
Envelope-to: support#mysite.co.uk
Delivery-date: Sat, 21 Mar 2020 15:33:16 +0000
Received: from gt-van-cus5.nmsrv.com ([208.70.247.69])
by admin.foo.com with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.86_2)
(envelope-from <x#x.com>)
id 1jFg7e-0006lZ-G5
for support#mysite.co.uk; Sat, 21 Mar 2020 15:33:16 +0000
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=x.com; h=message-id
:from:to:subject:date:mime-version:content-type
:content-transfer-encoding; s=mail; bh=TUrwl9pmlEV+CwP8vMMqxIQa9
Bg=; b=G2DuFVkwBF8qkCi7zM3hnwl18nkdIW83JbAoheLTAG9Xh6Ix2bxdPVsP7
3wI1cjUDjWGhTUlMLHGKP5kHT4FPKFkhMclIv+KZ1jU65BaMjRuwWz/FkTRg7v6I
oClvU/PXXn5gqfRiYZHR4L8qgCQaGhuXncxNgtaELqoQosU+gc=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=x.com; h=message-id
:from:to:subject:date:mime-version:content-type
:content-transfer-encoding; q=dns; s=mail; b=VHNvnP4AnMZxow+CoUj
3Xxj5KkIWJtUOJf21kf+E/vhvKWbbb7IEWHFNuQGATCAG+WX529rMQ83l9KsDB9d
G9gRo0Hsw7CK2D56wv7m22ur6QeaCgZNF7xHEECxZkaT9jlI9JFLU8pSXaFvSEcC
YgqKlm2b+zs0Q4mW8mH89xiQ=
Received: (qmail 23888 invoked by uid 1000); 21 Mar 2020 15:33:12 -0000
X-AntiVirus: Clean
Message-ID: <20200321153311.23887.qmail#gt-van-cus5.nmsrv.com>
From: x#x.com
To: support#mysite.co.uk
Subject: =?UTF-8?B?d2ViZm9ybSA=?=
Date: Sat, 21 Mar 2020 08:33:11 -0700
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="15848047911.6F3Ff.23881"
Content-Transfer-Encoding: 7bit
X-Spam-Score: 16
X-Spam-Bar: +
X-Spam-Report: Spam detection software, running on the system "admin.foo.com",
has NOT identified this incoming email as spam. The original
message has been attached to this so you can view it or label
similar future email. If you have any questions, see
##CONTACT_ADDRESS## for details.
Content preview: Date: Sat, 21 Mar 2020 08:33:11 -0700 MIME-Version: 1.0 Content-Type:
multipart/alternative; boundary="15848047910.05Ba9cd88.23881" [...]
Content analysis details: (1.6 points, 4.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
-0.0 SPF_HELO_PASS SPF: HELO matches SPF record
1.1 TRACKER_ID BODY: Incorporates a tracking ID number
0.0 T_TVD_MIME_NO_HEADERS BODY: No description available.
0.5 T_DKIM_INVALID DKIM-Signature header exists but is not valid
0.0 T_MIME_MALF Malformed MIME: headers in body
--15848047911.6F3Ff.23881
Date: Sat, 21 Mar 2020 08:33:11 -0700
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="15848047910.05Ba9cd88.23881"
Content-Transfer-Encoding: 7bit
--15848047910.05Ba9cd88.23881
Date: Sat, 21 Mar 2020 08:33:11 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
foo bar=
--15848047910.05Ba9cd88.23881
Date: Sat, 21 Mar 2020 08:33:11 -0700
MIME-Version: 1.0
Content-Type: text/html; charset="UTF-8"
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
some message=
--15848047910.05Ba9cd88.23881--
--15848047911.6F3Ff.23881
Date: Sat, 21 Mar 2020 08:33:11 -0700
MIME-Version: 1.0
Content-Type: image/jpeg; name="logo.jpg"
Content-Disposition: attachment; filename="logo.jpg"
Content-Transfer-Encoding: base64
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
--15848047911.6F3Ff.23881--
The really weird part - is that the EXACT same code sends fine from one of my other servers. Yet, the MIME headers all look the same (minus having different part ids and date stamps obviously :)). I've got the host looking into this - in case its an Exim issue on their end, rather than my code. Seems very odd though!
I'm trying to send a raw email message with Amazon SES API to include attachment.
SES reponse with 400 status code and I not sure what I'm doing wrong, here is the response:
<ErrorResponse xmlns="http://ses.amazonaws.com/doc/2010-12-01/">
<Error>
<Type>Sender</Type>
<Code>InvalidParameterValue</Code>
<Message>Duplicate header 'Content-Type'.</Message>
</Error>
<RequestId>ad8cb17c-a8a0-11e4-8898-8924aa87abfa</RequestId>
</ErrorResponse>
The request signed and work OK with other request, so I think it must only my email message issue. Here is my message data:
Cc: my-verified-email-1#gmail.com
Subject: Hello testing email hahahahaha
Mime-Version: 1.0
Date: 30 Jan 15 23:54 +0700
Content-Type: multipart/mixed; boundary=7f1a313ee430f85a8b054f085ae67abd6ee9c52aa8d056e7f7e19c6e2887
From: my-verified-email-2#gmail.com
To: my-verified-email-3#gmail.com
--7f1a313ee430f85a8b054f085ae67abd6ee9c52aa8d056e7f7e19c6e2887
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Hello <b>testing email</b> with some =E4=B8=96=E7=95=8C and Vi=E1=BB=87t ng=
=E1=BB=AF.
--7f1a313ee430f85a8b054f085ae67abd6ee9c52aa8d056e7f7e19c6e2887
Content-Type: text/plain; charset=utf-8; name="test1.txt"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="test1.txt"
dGVzdGluZyBzdHJpbmcgd2l0aCBWaeG7h3Qgbmfhu68K
--7f1a313ee430f85a8b054f085ae67abd6ee9c52aa8d056e7f7e19c6e2887--
OK, I just figure out that I was missing a new line before the first boundary line. The message should instead be:
Cc: my-verified-email-1#gmail.com
Subject: Hello testing email hahahahaha
Mime-Version: 1.0
Date: 30 Jan 15 23:54 +0700
Content-Type: multipart/mixed; boundary=7f1a313ee430f85a8b054f085ae67abd6ee9c52aa8d056e7f7e19c6e2887
From: my-verified-email-2#gmail.com
To: my-verified-email-3#gmail.com
--7f1a313ee430f85a8b054f085ae67abd6ee9c52aa8d056e7f7e19c6e2887
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Hello <b>testing email</b> with some =E4=B8=96=E7=95=8C and Vi=E1=BB=87t ng=
=E1=BB=AF.
--7f1a313ee430f85a8b054f085ae67abd6ee9c52aa8d056e7f7e19c6e2887
Content-Type: text/plain; charset=utf-8; name="test1.txt"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="test1.txt"
dGVzdGluZyBzdHJpbmcgd2l0aCBWaeG7h3Qgbmfhu68K
--7f1a313ee430f85a8b054f085ae67abd6ee9c52aa8d056e7f7e19c6e2887--
I try to upload a simple image via REST webservice to the jasper server.
This is the HTTP request/response, I'm getting "400 Bad Request: Invalid resource descriptor".
I tried to copy a valid resource descriptor from the repository and re-upload it but it gives the same error!
(The dots represent \r\n and \t chars.)
T 10.84.6.166:36057 -> 10.84.6.166:8080 [AP].
PUT /jasperserver/rest/resource/reports/Customers/3221/image01.gif HTTP/1.1.
User-Agent: useragent.
Host: 10.84.6.166:8080.
Accept: */*.
Cookie: JSESSIONID=5D8D24835E61ED65ABD982964243C06B.
Content-Type: multipart/form-data; boundary="72e01e9922f8bb1669638258c2a2a155".
Content-Length: 23796.
Expect: 100-continue.
.
T 10.84.6.166:8080 -> 10.84.6.166:36057 [AP]
HTTP/1.1 100 Continue.
.
T 10.84.6.166:36057 -> 10.84.6.166:8080 [AP]
--72e01e9922f8bb1669638258c2a2a155.
Content-Disposition: form-data; name="ResourceDescriptor".
Content-Length: 811.
Content-Type: text/plain; charset=UTF-8.
Content-Transfer-Encoding: 8bit.
.
<resourceDescriptor name="s2" wsType="img" uriString="/reports/Customers/3221/s2.png" isNew="true">.
.<label><![CDATA[serverattacks_13-06-01.png]]></label>.
.<creationDate>1373470272965</creationDate>.
.<resourceProperty name="PROP_RESOURCE_TYPE">.
..<value><![CDATA[com.jaspersoft.jasperserver.api.metadata.common.domain.FileResource]]></value>.
.</resourceProperty>.
.<resourceProperty name="PROP_PARENT_FOLDER">.
..<value><![CDATA[/reports/Customers/3221]]></value>.
.</resourceProperty>.
.<resourceProperty name="PROP_VERSION">.
..<value><![CDATA[0]]></value>.
.</resourceProperty>.
.<resourceProperty name="PROP_HAS_DATA">.
..<value><![CDATA[true]]></value>.
.</resourceProperty>.
.<resourceProperty name="PROP_IS_REFERENCE">.
..<value><![CDATA[false]]></value>.
.</resourceProperty>.
</resourceDescriptor>.
--72e01e9922f8bb1669638258c2a2a155.
Content-Disposition: form-data; name="/reports/Customers/3221/s2.png".
Content-Length: 22544.
Content-Type: application/octet-stream.
Content-Transfer-Encoding: binary.
.
<long binary png contents>
--72e01e9922f8bb1669638258c2a2a155--.
T 10.84.6.166:8080 -> 10.84.6.166:36057 [AP]
HTTP/1.1 400 Bad Request.
Server: Apache-Coyote/1.1.
Pragma: No-cache.
Cache-Control: no-cache.
Expires: Thu, 01 Jan 1970 01:00:00 CET.
P3P: CP="ALL".
Content-Type: text/xml;charset=UTF-8.
Content-Length: 27.
Date: Thu, 11 Jul 2013 08:42:09 GMT.
Connection: close.
.
Invalid resource descriptor
Update:
I still don't know what's wrong but I finally got it working and released a Jasper PHP Library on github: http://blog.flowl.info/2013/jasper-php-library-on-github/
I tried to update jrxml on jasperServer. I found and buld java tests. I found working example of updating image on JasperServer.Mаy it is help уou.(With help of this example i wrote request for updating jrxml on jasperServer. And it is works!)
POST http://repsuite.cheby.ru:8080/jasperserver/rest/resource/SAMPLE_REST_FOLDER/JUNIT_IMAGE_FILE HTTP/1.1
Content-Length: 5560
Content-Type: multipart/form-data; boundary=dzFSpJmyJB0pL6bHxKgtqI4VmaKgL9pTWCrLeJv
Host: repsuite.cheby.ru:8080
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
Cookie: JSESSIONID=E485652B97C69549403D8CEEA0DC0855
Cookie2: $Version=1
--dzFSpJmyJB0pL6bHxKgtqI4VmaKgL9pTWCrLeJv
Content-Disposition: form-data; name="ResourceDescriptor"
<resourceDescriptor name="JUNIT_IMAGE_FILE" wsType="img" uriString="/SAMPLE_REST_FOLDER/JUNIT_IMAGE_FILE" isNew="true">
<label>jaspersoft logo</label>
<description>jaspersoft logo</description>
<creationDate>1308696383000</creationDate>
<resourceProperty name="PROP_RESOURCE_TYPE">
<value>com.jaspersoft.jasperserver.api.metadata.common.domain.FileResource</value>
</resourceProperty>
<resourceProperty name="PROP_PARENT_FOLDER">
<value>/SAMPLE_REST_FOLDER</value>
</resourceProperty>
<resourceProperty name="PROP_VERSION">
<value>0</value>
</resourceProperty>
<resourceProperty name="PROP_IS_REFERENCE">
<value>false</value>
</resourceProperty>
<resourceProperty name="PROP_HAS_DATA">
<value>true</value>
</resourceProperty>
</resourceDescriptor>
--dzFSpJmyJB0pL6bHxKgtqI4VmaKgL9pTWCrLeJv
Content-Disposition: form-data; name="/SAMPLE_REST_FOLDER/JUNIT_IMAGE_FILE"; filename="jasperSoftLogo_2.jpg"
Content-Type: application/octet-stream
----Binary content of image----