But before you start, bear in mind that these rules aren't extensive (I'm sure I'm leaving many details out) and also that there are always exceptions for which these rules don't apply.
Consonants
b - /b/
c - /k/ before a, o, u and consonants, /s/ before /e/ and /i/.
ch - /S/
d - /d/ at the beginning of a syllable or after a nasal vowel, /D/ elsewhere, /d/ and /D/ are allophones.
f - /f/
g - before a, o, u: /g/; Before e, i: /Z/
h - mute, see digraphs ch, nh, lh
j - /Z/
l - /l/ at the beginning of a syllable , "dark l" /5/ at the end, both sounds are allophones.
lh - /L/
m - /m/ if at the beginning of a word or between vowels, otherwise it just nasalizes the preceding vowel.
n - /n/ if at the beginning of a word or between vowels, otherwise it just nasalizes the preceding vowel.
nh - /J/
p - /p/
q - /k/
r - /R/ at the beginning of a word or after nasal consonant, /4/ elsewhere.
rr - /R/ (only used between vowels)
s - /s/ at the beginning of a word, /S/ or /Z/ at the end or before consonants, /z/ between vowels
ss - /s/ (only used between vowels)
t - /t/
v - /v/
x - /S/, /ks/, /z/, /s/, /Z/. Always /S/ if at the beginning of a word, always /ks/ if at the end, otherwise there are no particular rules.
z - /z/
Vowels
a - /a/, /6/ if unstressed
e - /E/ or /e/, /1/ or mute if unstressed
i - /i/
o - /O/ or /o/, /u/ if unstressed
u - /u/
ã, an, am (if not at the end of a word) - /6~/
en, em (if not at the end of a word) - /e~/
in, im - /i~/
õ, on, om - /o~/
un, um - /u~/
Diphthongs and Others
There are quite a few diphthongs and triphthongs, but I won't write them all here (most pronunciations are pretty obvious). Here are some of the less obvious ones:
ão, am (at the end of a word)- /6~w~/
ãe, em (alone or at the end of a word) - /6~j~/
õe - /o~j~/
ui (in muito) - /u~j~/
ei - /6j/
Accentuation
´ marks a stressed syllable with an open vowel (also stressed nasals)
^ marks a stressed syllable with a closed vowel
~ marks nasality
` marks the crasis a + a /6/ + /6/
Miscellaneous
- The rule that says that /s/ becomes /z/ between vowels is valid even between different words.
- /s/ becomes /S/ before unvoiced consonants, /Z/ before voiced consonants, the same is valid even between different words.
- An unstressed e usually sounds as /j/ before another vowel.
- When there are several i's in adjacent syllables, the unstressed one usually becomes /1/.
- i becomes /1/ before /S/, /Z/, /L/, /N/
- /e/ before j, ch, nh and lh becomes /6j/
- Initial es- is pronounced /S/ (the 'e' is mute), as is many times initial (h)is-.
- The fact that a vowel is in an unstressed syllable doesn't mean it will be pronounced unstressed (as in Catalan). There can be /a/, /e/, /E/, /O/ and /o/ in unstressed syllables...
And a zillion other things I'm probably forgetting.. I'll edit this post as I remember them.
