Incomplete gmail proxy URL in email open tracking via 1x1 image way - email

My tracking URL after sending the mail in Gmail looks like this
<img src="https://ci5.googleusercontent.com/proxy/M0eT59-eQFXoo_sSnCIg9Xye-ZXIwyMulKSFO-m_i0PvlwtKsLn5WYr9Nqxq25TDGhOhnGCUeA8d0r4fCZtZ61V1fR-dEtgHO7E8SoJ2FMjs86GLYtlueZ75C4cxoQogEIsqfg=s0-d-e1-ft#http://xyz.abc.com:9099/MailMongo/trackmail/5b8cc4d738770a701aa1709b" alt="" class="CToWUd">
But gmail is sending 2 server requests like https://ci5.googleusercontent.com/proxy/M0eT59-eQFXoo_sSnCIg9Xye-ZXIwyMulKSFO-m_i0PvlwtKsLn5WYr9Nqxq25TDGhOhnGCUeA8d0r4fCZtZ61V1fR-dEtgHO7E8SoJ2FMjs86GLYtlueZ75C4cxoQogEIsqfg=s0-d-e1-ftwhich return 404.
Why is it removing my tracker URL in network request? Help Pls.
My real tracker URL is like http://xyz.abc.com:9099/MailMongo/trackmail/5b8cc4d738770a701aa1709b. I can convert it into something like http://xyz.abc.com/trackmail?id=5b8cc4d738770a701aa1709b if custom port is an issue.

Related

How do mail trackers make the original email different for the recipient and the sender?

I was exploring the mailtrack.io mail tracker for Gmail, which attaches an image at the end to track emails.
There was a difference in the original HTML source code of the message for the sender and the receiver, ensuring the mail tracker does not get triggered when the sender himself opens the email. This is what the tracker does:
Sender
<img width="0" height="0" alt="" style="display:flex" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=">
Receiver
<img width="0" height="0" alt="" style="display:flex" src="https://mailtrack.io/trace/mail/random-token.png?u=random">
For the sender, the tracker pixel image is encoded in Base64 form, and the original tracking link is sent only to the receiver.
How can a mail tracker do this if I send the email using a typical Gmail web client? I know that a copy of the email is saved in the sent folder via IMAP, which is definitely handled internally by Gmail and can't be modified by the mail tracker. But in this case, the mail tracker has modified the original email content.
It's a browser extension. It can intercept the HTTP response when you load the sent item and rewrite it before it gets to the Gmail web app's JavaScript.

POST request to url that has query string parameters

System I have to update has http-handlers that are accessible via address like
http://<server>/handlers?name=some-handler-name
I added http form with action tag that directs to one of this handlers like this:
<form ... action="/handlers?name=some-handler-name" >
My form is a part of a system and located right on the same server. Basically its accessible via adress like
http://<server>/handlers?name=my-handler-with-form
But when I submit my form - nothing is posted to some-handler-name handler because my http-request receives code 302 (redirect).
Do I use correct address in action method (what I want is my form data to be posted to address like http://server/handlers?name=some-handler-name)?
Is it possible to post data to url that has query string parameters?
I guess that system intercept my postback and for some reason redirects it
Correct address is important
Yes, it is possible to post data with query params
There would be some redirect rule set at the server side. You would need to work with server side dev or read server side deployment/code documentation.

Mailchimp No Host Exception when Subscribing Email to A List

I'm trying to send a subscription call, but got an error saying the the URL is invalid.
This is the URL I used:
https://us14.api.mailchimp.com/3.0/lists/<list-id>/members/
then I get this back in the response:
<HTML>
<HEAD>
<TITLE>Invalid URL</TITLE>
</HEAD>
<BODY>
<H1>Invalid URL</H1>
The requested URL "http://%5bNo%20Host%5d/3.0/lists/41e44e1bde/members/", is invalid.
<p>
Reference #9.cc6a1db8.1483891456.16189371
</BODY>
</HTML>
which translates to:
http://[No Host]/3.0/lists/<list-id>/members/
us14 is definitely the right data center according to the documentation so I'm not quite sure what's wrong.
It turned out that if you set HTTP header field "Host" in the request, it will always return this error. I tested this out by removing every fields one-by-one and this was the only one that caused an issue.
Many environments use the Host header for stuff like virtual sites where you are running more than one website behind the same IP Address (i.e. api.mailchimp.com and www.mailchimp.com could be on the same server) It is definitly possible for an error to be received if you set an invalid host since their proxies can't route it correctly. Normally, the host header is set automatically by the browser or HTTP client and usually not something you would override.
Are you still having trouble? If so, would be useful to see a screenshot of something like PostMan or https://ApiRequest.IO to see what your inputs are.

Does clicking a link in Gmail send a referer header?

This is mainly for privacy concerns. If I open up an email on Gmail (or any other email provider) containing a link to a website and I end up clicking on the link, does Gmail send out a referer header? (ie. Will the destination website know that I came from Gmail? And would they know the email address that I was using when I clicked on the link?)
Lastly, if they do, is there any way to disable it?
No, if you use gmail's web interface referrer header won't be set, but destination may still guess that you came from gmail.
Here's what happens when you click http://example.com/something link in gmail:
actual destination is changed to GET https://www.google.com/url?hl=en-GB&q=http://example.com/something&source=gmail&ust=TIMESTAMP&usg=HASH.
In reply to this HTTP GET google.com replies 302 Moved with Location header to redirect to actual link: Location: http://example.com/something. When processing this reply chrome will request something like this:
GET /something HTTP/1.1
Host: example.com
... regular headers ...
X-Client-Data: %HASH%
If you make that request by typing the URL in address bar the request will be identical except there won't be that X-Client-Data header. It seems that this X-Client-Data header is set by Chrome while accessing Google servers and it seems that no such header is set when using non-chrome browsers. If you open your browser in incognito/private mode and click that link in gmail then X-Client-Data header isn't set and on server side it looks as if you typed the URL in your address bar directly.

How to modify GET request size (IIS Express)

I have coded a web application that runs on IIS Express. I want to send large data set to server(over 4MB) and get response. (I have implemented this as a REST service).
When i tried ,i realize that I can only have 311bytes long URL.
So how can i change that?
as i know IE allows 2083 length URL as default. and there should be a way to configure IIS express via web.config or applicationhost.config right?
can anybody help me?
You need to use an http post verb to send the data, instead of trying to send it encoded in the URL as a GET. In straight HTML, this would involve having a form tag with a submit button. What framework are you coding this in? (asp.net, mvc, php, etc?)