Smoak batted .202 with seven homers and 30 RBIs in 80 games with the Mariners last season. Toronto claimed him on waivers on Oct. 28 and declined his $3.65 million option on Nov. 1.
The deal comes Wednesday, a day after Toronto declined to offer Smoak a contract for 2015, making him a free agent.
By signing Smoak after declining to offer him a contract, the Blue Jays were able to avoid a rule that prevents teams from cutting a player's salary by more than 20 percent from the previous year. Smoak earned $2,637,500 last season, meaning he would have had to be offered a deal worth at least $2.11 million for 2015.
In five seasons with Texas and Seattle, Smoak has hit 74 home runs, including a career-high 20 in 2013.
Also Wednesday, the Blue Jays signed outfielder Ezequiel Carrera to a minor league contract. Carrera hit .261 with no homers and two RBIs in 45 games with Detroit last season. The four-year veteran has also played for Cleveland and Philadelphia.