In opportunistic networks, forwarding based protocols lead to a large amount of data flow to the highly connected nodes and unfairness of the nodes' traffic load, finally, it makes the highly connected nodes suffer congestion and results in the messages were discarded. To solve this problem, a congestion control algorithm based on Social Awareness is proposed in this paper. When choosing the next hop, it will consider the direct social relationship, indirect social relationship and the receiving capability as the transfer utility, then the message was transferred to the node which the transfer utility is high. Besides, the message which the utility value is the lowest will be dropped by comparing the utility value of its own messages when the receiving node congestion occurs. Experimental results show that the proposed method is superior to other methods in reducing the dropping rate of the message and improving the efficiency of data delivery.