The "dative alternation" that exists in the Germanic languages is completely absent from French. You can't alternate between:
Il envoie un message à sa sœur
* Il envoie sa sœur un message
It has to be
Il envoie à sa sœur un message.
This is true, contra the previous answer, with pronouns too:
Il lui envoie un message à elle
Il lui envoie à elle un message
* Il lui envoie elle un message
It's true that the pronoun lui doesn't take a preposition in the above examples, but that's because prepositions mark phrases, and the weak pronouns of French aren't independent words, but clitics that are parts of the verb phrase "il lui envoie".
There is however a construction in French that allows an indirect object to appear without a preposition, and that's when it's fronted as the topic of a sentence and echoed by a clitic pronoun on the verb:
(À) sa sœur, il lui envoie un message
In this case, the préposition is optional, and generally only present when establishing a contrast (i.e. you'd use à in this sentence to insist that he sent a message to his sister, but not to someone else)
If the topic is backgrounded instead and dislocated after the verb, the preposition is obligatory:
Il lui envoie un message, *(à) sa sœur
One last case where a preposition (in this case de instead of à) would be ungrammatical is with the relative pronoun dont, that is case-marked enough as it is that *de dont never appears.