I would try with the following steps
- Provide a new guest page (or make the existing one smarter) so that it can accept the mailingcode and the profile key
- When this data is available, a serverscript can identify the contact (based on the unique and random
CONTACTS.MAILINGCODE value) and with the key of the Profile, the relation can be edited and updated.
- Assemble the URL - with fields - inside the e-mail template.
In any case, don't work with the contact key. That is not secure.