I think the primary way to share a contact should be a vCard file.
On Android when you go into a three dot menu displayed in the contact profile, there is a Share option, the first one. It allows you to share a vCard (.vcf file) into any chat. It looks like this when you receive a vCard on desktop:
Clicking on a vCard results in a dialog proposing to start a 1:1 chat:
Normally contact has a display name, so email address is not shown:
For contacts that have a key the vCard contains the key inside, so when you start a chat by importing a vCard you can directly send encrypted messages. This works even if you are on a chatmail server and cannot send unencrypted messages.
On Desktop there is no Share option in the profile. I think it should be added for consistency. You can however share a contact by clicking on the “attach” button and selecting “contact”:
The result is that message draft gets the contact attached:
This UI can be improved by making it more consistent across platforms and allowing to share a vCard directly outside the application in case you want to send a vCard using another messenger or a social network. I opened Make it possible to Share a contact from the contact profile · Issue #4833 · deltachat/deltachat-desktop · GitHub in desktop issue tracker.
There are two other options to get a contact: invite links (represented as URLs or QR codes) and email address.
Invite links are designed to setup a contact in a secure way, not to share the contacts. You cannot obtain an invite link for some other contact except by asking the contact. Users keep sharing invite links publicly and forwarding them because being able to copy-paste the link is convenient, but the invite links are not designed to be shared publicly: Trust design: perhaps an invite link shouldn't always be trusted (maybe it's a good idea to ask the user?)
Email addresses are not working for chatmail users because they don’t contain the key or the way to obtain it, so there is no way to send a message to the email address after importing it. We are going to keep the ability to have contacts without the key and identified by the email address to avoid breaking existing users setups, but we expect that the ability to create contacts without keys and send unencrypted messages is not going to be used by the majority of users.