All international flights to Tehran land at the new Imam Khomeini International Airport based 37 km southwest of Tehran. It has daily flights to many international destinations.
Dubai has scheduled flights to many Iranian cities, including Tehran, Shiraz, Isfahan, Kerman, Lar, Mashhad, Tabriz, Kish Island, Bandar Abbas, Bushehr, Zahedan, Kermanshah, Chah Bahar and is therefore worth considering travelling to Iran from. Flights are operated by Iran Air, Emirates (for Tehran), Iran Aseman Airlines,Taban airlines,Mahan Air and other Iranian companies. Fares are relatively cheap on Iranian carriers.
Iran Air and Mahan Air connect Tehran with some of the major European cities as well as destinations in Asia and Middle East. Some European and other companies landing in Tehran include: Lufthansa, Alitalia, Turkish, Aeroflot, UMB, Saudi Arabian Airlines, Emirates, and Etihad, air Arabia, Oman air, Tajikair, Pegasus, Iraqi airline, Belavia, Shaheenair, Kal air, Airasia, and Golf air so finding a flight to Iran should not be hard.
Due to sanctions there are no direct flights at present from Canada or the USA, but you could travel via either Europe or Persian Gulf States. Non-stop flights from Dubai via JFK, IAD, San Francisco, Los Angeles, Houston or Toronto are good bets. Visitors from Australia or New Zealand can consider travelling via Dubai or Abu Dhabi, or can use a combination of Iran Air and Malaysian Airlines to get from any major city in Australia to Tehran, via Kuala Lumpur. Air Asia also has good deals from Australia and New Zealand to Tehran with a stop in Kuala Lumpur.
Connections are also easily available via Manama, Bahrain using Gulf Air, Qatar airlines via Doha offers several flights to Iran and provides non-stop service to Doha from many US cities, KLM via Amesterdam, British airways via London, Pegasus and Atlasjet via Istanbul,Air Arabia Via Sharjah, Emirate via Dubai ,Air flot via Moscow ,Air Asia via Kuala Lumpur, Shaheen air via Pakistan, Alitalia via Rome and Milan,andKuwaiti airline via Kuwait,
Note that if not staying in Tehran and planning to get to any city other than Tehran upon your arrival, you would have to change airports, from Imam Khomeini to Mehrabad, 40 km away, to get to your domestic flight. Allow at least 3-4 hr between the flights. If going to Mashhad, you may be able to avoid the plane change in Iran using Turkish Airlines, Gulf Air, Kuwait Airways, or Qatar Airways. If you are going to Shiraz, several flights from Persian Gulf States are available. For Tabriz, you can try travelling via Istanbul on Turkish airlines or via Baku on Iran air.
The Trans-Asia Express service runs weekly from Ankara, includes a ferry over Lake Van, crosses the Iranian border then stops at Tabriz before arriving in Tehran. The journey takes 59 hr (2 nights travelling).The Tabriz-Van service (different from Trans-Asia Express service) is a weekly train between Van and Tabriz.
The Mashad-Herat railway which is under construction right now is completed until the city of Khaf near Afghanistan border.
The Khorramshar-Basra railway will be completed in a few months which will connect Iranian railways to Iraq. There will be specially train routes for Iranians going to pilgrim in Najaf and Karbala. There is another project that will be completed later going through Kermanshah to Khanaqin in Iraq.
The Nakhchivan-Tabriz service connects Nakhchivan_(city) with Tabriz and crosses from the Jolfa border. The route used to be a part of Tehran-Moscow railway line which is closed right now due to Azerbaijan-Armenia conflicts.
There is a railway from Baku to the border city of Astara. From there you can walk through the border to Iran. The railway is going to be joined to Tehran via Rasht and Zanjan.
There is a daily service between Mashad and Sarakhs border every day. The train does not go further because of the gauge changes.
Many people drive a car to Iran via Turkey.
This requires a Carnet De Passage unless you wish to pay import tax. A Carnet can be acquired from your local drivers association (such as the RAC in the UK). An international driver’s license is highly recommended with translation into Persian very beneficial.
From Armenia there are daily, modern buses from Yerevan to Tabriz and even further to Teheran. Otherwise the only Iran/Armenia land border at Nuduz/Agarak is very badly served by public transport. On the Armenian side you can get as far as Meghri by one Marschrutka a day from Yerevan. In both directions the Marshrutka leaves quite early in the morning. Kapan and Karajan are more frequently served by marschrutkas but it is a long and mountainous (and therefore expensive) stretch to the border from there. From Meghri it is around 8 km to the border and hitching or a taxi is the only option. On the Iranian side the closest puplic transport can be found around 50 km to the west in Jolfa .
You can find Seir-o-Safar agencies in Istanbul, Antalya and Ankara to buy cheap bus tickets for Tehran.
Dogubeyazit/Bazergan This Turkey/Iran border crossing is easily (and fast) done by public transport. Take a bus to Dogubeyazit and a frequent minibus (ca. 5YTL, 15 min) to the border.
There are also buses from Van to Urmia crossing from Esendere-Sero border.You can also take mini buses to the town Yüksekova near the border and ask for taxis to bring you to the border. Cross the border check point on your own since the taxis won’t cross into Iran.
You can also (depending on the political situation) enter from Pakistan via the border crossing between Taftan (on the Pakistani side) and Zahedan (on the Iranian side) as long as you have a valid visa for Iran.
There are daily buses from Arbil to Urmia, also there are daily buses from Sanandaj and Kermanshah to Sulaymaniyah. From Tehran, there are also buses to Sulaymaniyah and Arbil.
There are daily buses between Herat and Mashad. The buses go through Dogharoun Border.
A bus service also runs between Ashgabat and Mashhad.
There are some scheduled services from Baku to Bandar Anzali on the Caspian Sea and from cities on the Persian Gulf to cities on the Iranian coast. They are usually of low quality. There are also ferries from Bandar Abbas to Dubai and Sharjah in UAE, and also ferries from Bushehr to Qatar, Kuwait and Bahrain.