Emails sent to Apple devices sometimes have broken links [closed] - ios

Closed. This question needs debugging details. It is not currently accepting answers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 5 years ago.
Improve this question
My company sends out various newsletters (all double opt-in and CAN-SPAM compliant of course) and we're having an issue with Apple devices. All of the links in the emails become corrupted in nearly the same way, but all other code/content remains untouched. Here is some key information:
So far we've only seen this on Apple products (iPads, iPhones)
Not every user on the same device has the issue (Our two company iPads don't get it, but users with iPads have reported it, so it may have to do with the iOS version)
For users which the issue it affects, it doesn't affect every newsletter they receive. Also, either all the links work or all the links are corrupted; never a mix.
The newsletters are built automatically by pulling articles from our various websites and inserting them into a template
The issue happens regardless of the email service/client being used. Eg: from an iPad using a gmail account via the gmail app or via gmail.com in a browser.
If the user accesses the same email using a non Apple products, the links are not corrupted.
If the user forwards the corrupted email to someone who accesses it via a non Apple device, the corruption remains.
Here is a sample of how the URL changes:
correct:
http://www.example.com/path/link.php?M=5009308&N=21109&L=34170&F=H
corrupted:
http://www.example.com/path/link.php?MQ80105&N!109&L4170&F=H
correct:
http://www.example.com/path/link.php?M=5009308&N=21109&L=34087&F=H
corrupted:
http://www.example.com/path/link.php?MQ80105&N!109&L4087&F=H
correct:
http://www.example.com/path/link.php?M=5009308&N=21109&L=34137&F=H
corrupted:
http://www.example.com/path/link.php?MQ80105&N!109&L4137&F=H
All of the links on all newsletters follow the exact same pattern. The only difference between newsletters and links would be the numbers for the query variables (M, N, and L).
It only affects the query part of the URL
It seems to center around the "=" sign on each URL when it's followed by a number:
"=5009308" became "Q80105"
"=21109" became "!109"
"=34137" became "4137"
Part of it seems like it's a character encoding issue but you'd think it would affect more than just the query part of links (ie, you'd see text in other parts of the HTML/content changed also).
Does anyone have any idea what could be causing this extremely strange bug? Any help or ideas would be greatly appreciated!

At least part of it is caused by something between your mail server and their device deciding that you're using quoted printable encoding and "fixing" it. That would account for =21 being replaced by ! and for =34 being replaced by 4. I don't know what triggers this but based on your description I would suspect that something in your outgoing email headers is telling the device it needs to do this. If your URLs always contain = but are only corrupted some of the time, your headers may be inconsistent. If the URLs only contain = some of the time and are corrupted every time they do, then the issue is always there but only visible with the right data.
Try your original URLs at the online quoted printable decoder, you'll get exactly the same changes.

Related

Anatomy of a Porch.com SMS lead alert

I would like to design the SMS referral link for a lead alerts application. (So the pro would receive the SMS message on their device with a link to click through to the job request details.) I'd like to make it secure and scalable. The link below arrives in the SMS as a shortened URL. That much I understand.
Porch.com does something similar and I'd like to know what the strategy is behind each segment in the URL (or your best estimation). Can someone help me understand?
Here is an example: (Thanks Porch.com)
https://porch.com/pro/project/3fd55669-d7cf-4655-892e-252080c34a79?c=50145918&email=12345#yahoo.com&referrerSource=sms
Twilio developer evangelist here.
First of all, this isn't really a question for Stack Overflow. This is a place for asking questions about code that doesn't work in order to get it to work.
Having said that, the more I looked at the URL as I was commenting on this question, the more I feel I worked out. This is my idea of what the URL is saying.
Here's the URL again: https://porch.com/pro/project/3fd55669-d7cf-4655-892e-252080c34a79?c=50145918&email=12345#yahoo.com&referrerSource=sms
The random string in the URL, 3fd55669-d7cf-4655-892e-252080c34a79, looks like it is the identifier for the project itself. It's long and random, like a uuid, so it would be hard to guess, but can uniquely identify the project.
The email is presumably the email address of the pro that the SMS was sent to, so that the return on sending SMS projects to them can be measured.
The referrerSource is then used to measure how each of their referring sources is performing.
The only parameter that is impossible to really guess at is the c. Removing it (in fact, removing any or all of the query parameters) didn't change the result of loading the page. This implies that it is just another tracking parameter.
Hope that helps.

Adobe Analytics Click Map

I'm trying to find out if the Adobe Analytics click map plugin fails because it is ancient und apparently not maintained, or if I need to change something in my (not up to date, but not quite as ancient - H.27 ) s_code.
Now the instructions say "requires IE6 or FF3", so there is a good chance the plugin has died of old age without Adobe taking notice.
But then the documentation says
The Page ID (ClickMap) and Object ID (ClickMap) variables must be
present within a given image request after you click on at least one
link. These variables are also known as the pid and oid variables.
Generally, if s.trackInlineStats is set to true, these will
automatically populate
and while s.trackInlineStats is set to true I do not see a "pid" or "oid" parameter in the server calls. So my question is: Are there any other changes I need to make to the s_code to get the thing working, or is this broken and won't work no matter what I do ?
The error I'm getting is "invalid address" and a description of what an url is supposed to look like. I'm using Firefox (albeit not Version 3 but the lastest version) and I am logged in to the Adobe account connected to that page.
I've come across several scenarios where it broke AA tracking. Weirdness that involved things like the plugin appending "undefined" to certain various url params in the AA request, some of them causing Adobe servers to reject the hit (for example, one case was it appended "undefined" to currencyCode value and if you do not have a valid currency code value, Adobe rejects the entire hit).
I've gone to Adobe ClientCare several times over ClickMap shenanigans and eventually I was told (by Adobe) to not use the plugin, because it's always been buggy, and they basically stopped supporting it a long time ago.
As #sky pointed out, Adobe recently released their new ActivityMap reports and plugin, but it does require you to upgrade to AppMeasurement 1.6+

Adobe Analytics Slicing Tags

I have an iOS app where I have analytics setup (as most people do) that tracks a whole set of different scenarios. In a few of them, the data I send with the tag doesn't all get sent. What I mean by this is best demonstrated with an example. If I send the following data as a tag in one of my analytics:
User successfully logged into the app and hit the homescreen
Now, I wouldn't normally send all of that in just one tag, it would get broken up, but for example purposes, pretend that's what I want to send. For quite a few users, tags like this will get sliced up into all sorts of different tags, so when I actually look in SiteCatalyst, I end up seeing a bunch of tags that may resemble something like so:
successfully logg
nd hit the homescreen
User successfully logged into the app and hit the homescreen
User successfully logg
And so on. It breaks it up into a bunch of different parts, and then displays them all as separate tags. The ones that are affected get broken up into 15-20 different tags all of which are different parts of the full tag.
Here is the hard part: I can't reproduce the issue. I'm trying, but haven't been able to yet. I also am not very well versed in Adobe analytics and am not sure how the backend setup is for us on SiteCat.
Because of my inexperience with analytics, I'm not sure what more data may be helpful. My code doesn't do any truncation, it simply calls trackAppState:withContextData:, and the tags in my contextData get truncated like I showed.
Does anyone know why this is happening? Has anyone seen anything similar? Or could anyone point me in a direction that may get me started looking into this issue? I'm really at a loss of how to go about debugging this issue.
Edit: One piece of info that just hit me! I build up the tag in question (at least the current one I'm trying to reproduce, for all I know there are other tags that get truncated that aren't built up like this, I haven't gotten a chance to look into all of them yet.) using `-[NSString stringWithFormat:] and take the errorMessage that is returned as my message, so it's a dynamic tag.
It may have something to do with the stringWithFormat: message? Again, very lost as to where to even start with this one.
can you give us a sample of the code you use to call the trackAppState?
If it can help you you can enable debug logging for the Adobe Analytics library calling the method [ADBMobile setDebugLogging:YES]; in the appDidFinishLaunchingWithOption.
In this way you can see in the console how Adobe send the data.
You can also use the tool "Bloodhound" which is a proxy App developed by Adobe expecially for osx in order to let you sniff all the info sent by your App in real time, you can find it in the help section of the mobile marketing interface.
Thanks,
Claudio.

Phone number based Devise authentication for mobile apps [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 8 years ago.
Improve this question
We all know that Devise is de facto standard for implementing authentication on rails based apps.
By default it uses email as ID but also allows you to use usernames instead. It also has "Confirmable" module which lets you confirm the email address by sending an email and clicking through the link to verify your email.
I was looking for something similar for phone numbers--basically accepting phone numbers as primary ID instead of emails, and then confirm the phone number by sending an auth code as SMS message to the user's number via something like Twilio, and then let the user confirm it by entering the code (or even let the user click through a generated link to verify just like they do with emails)
The reason I was expecting there to be a popular devise module for this functionality was because it seems as if most mobile social apps accept phone numbers and confirm the number nowadays. There's gotta be someone who thought this was a problem and open-sourced a module for this. However I couldn't find any popular ones. Actually to be precise, here are the only three relevant links I've found on this:
https://github.com/giano/devise_sms_activable
https://github.com/baranov-sv/devise_sms_confirmable
Rails register User using phone number and confirmation
None of them leads to a working solution (I've tried devise_sms_activable but it doesn't work for rails 4, plus I'm wary of the low number of stars) So I wanted to ask if there's any viable solution to this. Am I missing something? Has this topic been brought up among the Devise developer community? I'm curious about the solution but if there is none, I would at least appreciate any answer on why this is not readily available.
[UPDATE]
I think the question might have been a bit misleading. While I can just build it myself, I don't like to re-invent the wheel.
Basically my intention with this question was:
If there's any package that does this (like all the modules such as confirmable, token_authentcatable, etc. Maybe not even a Devise module and it could be entirely a different thing)
Or, if there is no such pre-built solution, why there isn't one. I just can't comprehend why there is no such solution I can find when everyone seems to be doing this.
I will gladly accept when I get an answer to either #1 or #2. Thanks!
i've looked into that before... but the project requirements changed... so all of the following are relative links found on the devise wiki
this how to allows you to sign in and authenticate with different fields other than the email address
A Simple Token Authentication Service for Mobile Devices Using Rails 3 and Devise.
you can use the previous tuts in conjunction with some thing like Twilio to send the created custom auth token and authenticate user with phone number other than email.
[UPDATE]
since you mentioned an already working solution, I think this is what you are looking for. Active Model OTP and this blog post it's new and i didn't have the chance to test drive it :D
I also found Two factor authentication Devise extension
[UPDATE Aug/2017]
Based on a project that I was recently working on, I found that Tinfoil/devise-two-factor provides a really good/extensible integration with devise (and is highly customizable)... using the internal ROTP gem, you can provide different length codes based on different authentication methods (APP/SMS) and different window/drift allowed per method without having to write the whole thing from the ground up. (highly recommended if you want full power over complex workflow)
I'm the OP, and since I asked this question, I've come across a gem called active_model_opt https://github.com/heapsource/active_model_otp
This gem is not exactly a devise plugin but it does exactly what i was looking for. Basically by adding it to your user model it generates one time passwords that are valid for a certain amount of time. It even has a built-in function to "authenticate" using the one time password.
Anyway I hope anyone who stumbled upon this question may find this answer useful.
Probably not exactly what the OP was looking for, but for Rails developers in China, now there's a gem called china_sms which automatically integrates various Chinese SMS sending services into your Rails app. I'll just add it here in case anybody shall find it useful.
https://github.com/saberma/china_sms
https://ruby-china.org/topics/12407

Formatting of #HtmlTextBoxFor MVC Visual Basic Webpage

This is my first post here although I use this forum all the time and it usually provides me with a solution, however I've searched all over the web for an answer to this and I can't find anything.
I'm developing a website which provides software support. Users log on to it and add a "support call" which a member of a support team will answer.
The problem I am facing is that when users describe their problem (inside the TextBoxFor shown below), they can type out their problem, and format the text as they please, however when the call is submitted, sometimes (it appears randomly) the formatting just disappears, e.g. some spacing and paragraph use just disappears, here is an example:
Correct formatting:
Hi I'm having difficulty with x, and y and I need some assistance.
Could somebody help me out?
How it appears sometimes:
Hi I'm having difficulty with x,and y and I need some assistance.Could somebody help me out?"
This, of course is highly simplified, and some people have to write many paragraphs and text lines.
Here is the code for the textbox (in the view):
#Html.TextBoxFor(Function(model) model.SupportCall.Subject, New With {.maxLength = "254", .style = "width:500px;"})
It is worth mentioning that when a support call is submitted, it goes to a folder which is picked up by another internal piece of software, which then creates a database record for the call, meaning that an email notification can be sent to the support team, then the list of calls to be answered is updated from that database model, therefore I'm pretty sure it's possible that this process could be what is changing the text formatting.
A reason why this is happening is just as useful as a solution to me so any input is welcome.
use
<pre></pre>
prepend and append it.

Resources