반응형
행복한 부자의 재무설계 세 걸음
김기갑의 '싱글 재무 설계' (3)
장기주택마련 금융 상품 - 소득공제 편
한국 재무 설계 김기갑
입력시간 : 2007.12.11 09:06
  • 어느덧 겨울의 매서운 바람 따라 2007년 한해도 지나가고 있다. 한해를 마무리 하는 시점에서 송년회와 각종 모임으로 바쁜 일상 가운데 꼭 챙겨야 할 것이 하나 있는데 그것은 바로 연말정산 (소득공제) 이다.
    효과적 연말정산을 위해서는 어떤 계획이 필요할까?
    가장 첫 번째로 점검할 금융 상품이 장기주택마련에 관한 저축인데, 이는 우리나라 금융 상품 3만여 가지 중 가장 소득공제 효과가 크기 때문이다. 그렇다면 장기주택마련에 관한 금융 상품에 대해 분석해 보자.
  • 장기주택마련에 관한 금융 상품으로는 장기주택마련저축과 장기주택마련펀드 및 장기주택마련보험이 있다. 눈치가 빠른 분들은 파악 하셨듯이 장기주택마련에 관한 금융상품의 주요 판매처로는 ‘장기주택마련 저축’은 은행, ‘장기주택마련펀드’는 증권사, ‘장기주택마련보험’은 보험사이다. 장기주택마련에 관한 금융 상품은 줄여서 ‘장마’라고 부르기도 하고, 각 ‘장마’ 상품이 공통점과 차이점이 있기 때문에 제대로 파악하는 것이 중요하다.
    우선 장기주택마련 금융 상품의 공통점으로는 어떤 것이 있을까?
    첫 번째 공통점으로는 강력한 소득공제 혜택으로 분기별 300 만원을 한도로 납입 한 뒤 40% 소득공제를 받을 수 있다. 이는 연간 750 만원 즉, 월 기준 62만 5000원에 해당한다. 또한 비과세 혜택도 동시에 누릴 수 있는 일석이조 금융 상품이다. 그러나 여기서 주의 할 점 한 가지는 7년을 유지하지 못하면 비과세 혜택이 사라지고 기존 소득공제액도 반납해야 한다는 것이다. 다만, 5년 이상 유지 할 경우는 소득공제를 추징하지 않는다.
    두 번째 공통점으로는 가입조건이다. 장기주택마련 금융상품의 가입은 당초 2006년 12월까지만 신규 가입 할 수 있었으나 2009년 12월로 연장 되었다. 그러나 신규 가입함에 있어 내년부터 바뀌는 부분이 있으니 기억해 두는 것이 좋다. 장기주택마련 금융상품(일명 ‘장마’)은 내년부터 가구원 전체가 무주택자이거나 3억원 이하 1주택 소유로 가입요건이 까다로워진다. 또 가입 기간에 3억원 초과 주택을 취득해도 소득공제 혜택을 받을 수 없게 된다. 올해 안에 가입하면 이런 규정을 피해갈 수 있다. 올해까진 만 18세 이상 근로자이면서 무주택이거나 전용면적 85㎡ 이하 1주택을 소유한 세대주면 가입할 수 있다. 그렇기 때문에 아직 장기주택마련 금융 상품에 가입 하지 않았다면 올해 안에 가입하는 것이 좋다.
    그러면, 각 장기주택마련 금융 상품의 차이점으로는 어떤 것이 있을까?
    첫째, 수익률과 안정성이다.
    장기주택마련 금융 상품은 모두 소득공제 외에도 비과세 혜택이 있다. 비과세 혜택은 금융 상품 만기 시 이자에 대한 이자소득세 15.4%를 면제 해 준다는 것으로 비과세 혜택의 극대화는 금융 상품 만기 시 이자가 많으면 많은 수록 면제를 많이 받기 때문에 수익률이 높은 상품일수록 비과세 혜택의 실효성이 있다. 그렇기 때문에 어차피 동일하게 혜택이 있는 소득공제 이후 비교 대상은 바로 각 금융 상품의 수익률이다. 수익률에 따라 비과세 혜택의 실효성이 틀리기 때문이다.
    장기주택마련저축과 장기주택마련 보험의 경우는 5% 정도의 이율 상품이다. 5% 정도의 이율은 물가 상승률을 적용 할 때 만족할 만한 수익률이라 보기 힘들다. 특히 장기주택마련저축은 3년간만 확정이율로 그 후는 변동금리로 운용된다. 거기에 비해 장기주택마련펀드는 주식의 변동 상황에 따라 수익률이 변하며, 주식 시장의 상승으로 최근 3년간 평균 수익률이 10% 정도를 상회하고 있다. 즉, 수익률 측면에서는 장기주택마련펀드가 가장 유리하기 때문에 비과세 측면에서도 가장 유리하나 주식시장이 악화 된다면 원금손실 가능성이 있기 때문에 안정성 측면에서는 가장 유의가 필요하다. 
    둘째, 중도 해약 시 손실성이다.
    장기주택마련 금융 상품은 위에서 말한 것과 같이 7년을 유지 못하면 비과세 혜택이 사라지고 기존 소득공제액도 반납해야 한다. 다만, 5년 이상 유지했을 경우 소득공제를 추징하지는 않는데, 장기주택마련저축과 장기주택마련펀드와는 달리 장기주택마련보험은 중도 해지 및 2회 이상 납입 하지 않을 경우 소득공제액 추징은 물론, ‘보험해약환급률’에 의해 4년 전에 해약하면 원금을 받지 못하게 되기 때문에 가입 시 이점을 반드시 고려해야 한다.
    셋째, 단리-복리 운용 방법이다.
    장기주택마련 금융 상품의 경우는 금융상품 이름에도 나와 있듯이 7년이라는 적지 않은 기간 동안 투입해야 한다. 기간이 길기 때문에 이자율의 운용 방법이 단리 보다는 복리가 유리하다는 것은 당연하다. 장기주택마련저축의 경우 대체적으로 단리 상품인 경우가 많고, 장기주택마련보험과 장기주택마련펀드의 경우는 복리 형태로 운용되기 때문에 이자율 운용 방법에서는 장기주택마련저축보다는 장기주택마련보험과 장기주택마련펀드가 유리하다.
  • 간단히 소득공제와 비과세가 된다는 것 보다는 모든 금융상품이 그렇듯이 장기주택마련에 관한 금융 상품도 금융 상품의 장단점 및 자신의 투자 성향과 납입의 지속성 등을 고려해서 가입하는 것이 중요하며 자신의 소득과 경제적 여건에 따라 어느 정도의 납입금이 적정한가? 등의 세부적인 부분은 전문가와 상담 후 결정하는 것이 좋다.
    (※ 외부필자의 원고는 싱글N의 편집방향과 일치하지 않을 수 있습니다.)
반응형

실질금리가 마이너스인 요즈음,
필자는 장기주택마련저축을 잘 활용하라는 말씀을 드리고 싶습니다.
재테크에 한 발 앞선 사람은 장기주택마련저축이 왜 중요한지 그 이유를 잘 알 것입니다.

아직까지 장기주택마련저축을 가입하지 않았다면 끝까지 잘 읽어보십시오.


 
* 10억만들기 출발은 장기주택마련저축 가입 
 장기주택마련저축에 가입하면 3가지의 특별한 혜택을 받는다.
우선 금리가 높다.
3년제 가계우대정기적금 금리는 연 4%대이지만 장기주택마련저축은 연 5%를 지급한다.
둘째, 이자소득에 대해서 완전 비과세(이자에 대한 세율 16.5% 면제)가 적용된다.
가장 큰 혜택은 직장인의 경우에 연간불입액의 40%(최고 300만원)를 소득공제 받을 수

있다는 점이다.
즉, 매월 62만 5000원씩 1년동안 불입하면 300만원을 소득공제 받게 되는데, 본인의 급여수준에

따라서 다음해 1월 급여날에 29만원∼118만원이나 되는 많은 세금을 돌려 받을 수가 있다.
이런 여러가지 효과를 감안한다면 장기주택마련저축의 실질수익률은 다른 상품에 비해 2배 이상

높다.
 
 
 
* 단독세대주도 올해부터 소득공제 가능 
  직장인이 장기주택마련저축에 가입해서 소득공제를 받을려면 지난해까지는 배우자 또는

부양가족이 있어야만 가능했다.
나홀로 세대를 구성하고 있는 단독세대주는 소득공제를 받을 수가 없었고, 결혼을 하거나

아니면 나이든 부모님이나 형제를 세대원으로 둬야만 했다.

그러나 올해부터는 단독세대주도 소득공제가 가능하도록 제도가 개편됐다.
따라서 신입사원이나 단독세대주도 장기주택마련저축을 가입해 ″세테크″ 상품으로 적극 활용할 필요가 있다.
 
 
* 최소한 3계좌 이상 중복가입하라


 

 한 사람이 장기주택마련저축을 여러 계좌에 가입할 수 있다.
동일한 은행에서는 물론 서로 다른 은행에서도 통장수에 제한없이 중복가입이 가능하다.

분기당 가입한도 300만원 이내만 지키면 된다.
통장 갯수와 상관없이 저축할 수 있는 총액이 전체 계좌를 합쳐 분기당 300만원을 넘지만 않으면

된다.


필자는 최소한 3개 이상 가입하되, 저축과 신탁에 골고루 투자할 것을 권하고 싶다.

우선 2개는 안전한 은행의 장기주택마련저축(편의상 1, 2번으로 지정)에, 나머지 1개는 주식과

채권에 투자하는 장기주택마련 주식투자신탁(편의상 3번)에 가입하자.
최초 가입액은 1만원(장기주택마련 주식투자신탁은 5만원 이상)이면 된다.

이후부터는 저축방법만 달리하면 된다.

우선 1번(장기주택마련저축)과 3번(장기주택마련 주식투자신탁)

통장만 활용해 (2번 통장은 나중을 위해서 장롱속에 넣어둔다)

매월 불입액을 본인의 투자성향에 맞춰 분산투자를 하자.



 
* 최소 1계좌는 주식에 투자하는 펀드로 가입하라


 
  예를들어 안전한 1번 통장에 매월 저축액의 70-80%, 주식에 투자해 높은 수익률을 기대할 수

있는 3번 통장에 20-30%의 비율로 꾸준히 투자하는 것이다.
물론 1번 통장과 3번 통장 불입액은 매년 소득공제를 받을 수 있다.
이윽고 7년이 경과하면 1번과 3번 통장을 해지해서 내집마련자금이나 자녀결혼자금으로 활용을

한다.
만약 주식시장이 그동안 활황세를 보였다면 적립식펀드로 가입한 3번(장기주택마련 주식투자신탁) 통장의 수익률이 제법 짭짤할 것이다.
1번과 3번 통장을 모두 해지한 이후부터는 장롱속에 묵혀두었던 2번 통장을 꺼내 새롭게 저축을

시작한다.


2번 통장은 최초에 1만원만 가입한 이후 전혀 사용을 하지 않았지만 중도에 해지되지 않으며,

더 중요한 것은 이미 가입일로부터 7년이 경과됐기 때문에 언제 해지하더라도 앞에서 언급한

비과세와 소득공제 혜택을 받을 수 있다는 점이다.
따라서 필요한 기간 동안 불입하면서 비과세와 소득공제 혜택을 누리고 적당한 시기에 해지를

해서 부부의 해외여행자금이나 노후자금으로 활용해도 되지 않을까.

″꿩먹고 알도 먹는″ 알짜 금융상품인 장기주택마련저축, 가입을 망설일 이유가 전혀 없다.
신분증과 최초 불입액 1만원 이상만 가지고 은행을 찾으면 된다.
은행에 따라서는 가입기간이 30∼50년인 장기주택마련저축도 판매하지만 7년만 지나면 아무런

불이익 없이 중도 해지가 가능하다.  

반응형
변액보험, 단기 수익률 휘둘리지 말고 멀리보라
[이투데이] 2008년 04월 27일(일) 오후 12:45   가| 이메일| 프린트
[이투데이] 박정원 기자(pjw@e-today.co.kr)
변액보험은 계약자가 납입한 보험료의 일부로 펀드를 조성하고 그 펀드의 운용실적에 따라 계약자에게 투자이익을 배분함으로써 보험기간 중에도 보험금액, 해약환급금 등이 바뀌는 보험을 말한다.

쉽게 말하면 미래에 받을 보험금이 주식이나 채권에 투자되어 변동되는 보험으로, '투자'와 '보장'이라는 두마리 토끼를 잡으려는 고객에게 안성맞춤인 상품이다.

종류별로는 크게 변액종신과 변액CI, 변액연금, 변액유니버설보험 등이 있으며, 투자대상에 따라 주식형과 채권형, 혼합형(주식혼합형, 채권혼합형) 등이 있다.

2007년말 1897.13p로 마감했던 종합주가지수가 올들어 크게 조정을 받으면서 변액보험에 대한 관심도 커지고 있다.

◆장기 투자 관점에서 리스크 최우선 고려
변액보험 가입자들의 가장 큰 관심사는 수익률이다. 그러나 변액보험은 High risk, High return 상품이다. 물론 최소한의 안전성을 보장하기 위해 최저사망보험금 보증과 최저연금적립금 보증같은 안전판을 마련해놓고 있지만 중도 해지시에는 원금조차 찾지 못할 수도 있다.

따라서 모든 투자가 마찬가지이겠지만 특히 변액보험은 장기 투자 관점에서 만일에 발생할 수 있는 리스크를 최우선시 된다는 게 전문가들의 충고다.

예를 들어 두 가지 운용스타일이 있다고 가정해보자. 하나는 고수익ㆍ고위험을 추구하는 방식이고 또 하나는 중위험ㆍ중수익 방식이 있다.

전자는 첫 해 주식상황이 좋아 +70% 수익을 실현하고, 두번째 해에는 -50%, 세번째 해에는 +10% 수익을 실현한 반면, 후자는 그 절반 수준인 +35%, -25%, +5% 수익을 실현했다고 하자.

3년이 지난 시점에서 어느 방식의 운용 수익률이 더 높을까?
단순평균하면 전자는 +10%(=(70-50+10)/3), 후자는 +5%(=(35-25+5)/3)가 나와 고수익ㆍ고위험 방식의 수익이 더 좋을 것이라고 생각된다.

그러나 결과는 그 반대다. 전자는 처음 100에서 시작해 첫 해 +70% 수익률이 나오면 적립금이 170이 되고 두번째 해 수익률이 -50%로 떨어지면 적립금은 85, 세번째 해 +10% 수익을 내면 적립금이 93.5가 된다.

반면 후자는 첫 해 135로 늘어난 뒤 수익률이 -25%인 두번째 해에는 적립금이 101로, 세번째 해에는 +5% 수익률로 106이 된다. 보수적 운용방식에 의한 수익률이 더 좋게 나오는 것이다.

삼성생명 송병국 특별계정기획파트장은 "이같은 경우는 케이스에 따라 다를 수 있지만 확실한 것은 장기적으로 수익을 내기 위해서는 단기 수익보다는 리스크 관리가 더 중요하다는 점"이라고 말했다.

◆변액보험과 펀드의 차이점 인식해야
변액상품의 보험료에는 위험 보험료(사망 등 위험보장에 소요되는 보험료)와 부가보험료(사업비)이 일부 포함돼 있다. 다시 말하면 이 금액만큼은 펀드에 투자되지 않는다. 따라서 계약을 중도(통상 7년 이내)에 해지하면 납입한 보험료보다 적은 해약환급금을 받을 수 있다.

그러나 10년 이상 장기투자하게 되면 수수료를 부담해야 하는 펀드보다 더 높은 수익률을 거둘 수 있다. 10년 이상 투자하면 보험차익이 비과세되는 점도 수익률을 높이는 요인이다.

삼성생명 관계자는 "유니버설 기능이 있는 상품은 중도인출을 통해 긴급자금을 이용할 수 있어 환매를 해야 하는 펀드보다 유리하다"고 말했다.

따라서 변액보험은 장기적인 물가상승에 따른 보험금의 실질가치 하락을 보전하기 위해 도입됐다는 도입취지를 이해하고 펀드, 특히 주식형 펀드와 차이가 있음을 기억해둬야 한다.

◆가입 상품의 주식편입비율 꼼꼼히 살펴야
변액보험은 펀드와 마찬가지로 상품에 따라 채권과 주식간 투자비율이 다르다. 다만 노후생활보장이라는 안정성이 중요하기 때문에 펀드에 비해 다소 보수적으로 주식을 편입하고 있다.

업계 전체적으로 보면 회사별로 다르지만 최대 주식편입비율이 30%인 회사도 있고 50%, 70%인 회사도 있다. 삼성생명은 주식편입비율이 가장 높은 상품이 50%로 더욱 안정성을 강조하고 있다. 주식편입비율 70% 이상인 펀드는 실제 주식을 운용하는 것과 마찬가지다.

따라서 각 회사의 변액보험 수익률을 비교하려면 주식편입비율이 비슷한 상품끼리 비교하는 게 바람직하다.

채권형 펀드에 가입해놓고 주식형 펀드에 비해 수익률이 낮다거나, 주식형 펀드에 가입해놓고 원금보장이 않는다는 등의 불만은 펀드의 기본조차 인식하지 못하고 가입하는 셈이다.

◆회사의 안정성, 장기운용능력 고려해야
10년이면 강산도 변한다는 말이 있지만 일반기업은 20년 이상 생존할 확률이 10%밖에 안 된다고 한다. 하지만 어린이교육보험만 하더라도 내 아이가 20세가 되기 위해서는 20년 가깝게 기다려야 한다. 따라서 시장이 좋지 않더라도 장기적으로 원금보장, 수익을 낼 수 있는 회사를 선택할 필요가 있다.

펀드의 자산운용방식은 싱글매니저 시스템(한 회사에 자산운용을 전담)보다는 멀티매니저 시스템(여러 회사에 자산운용을 맡기고 운용경쟁을 통해 위험분산)이 있는데 회사별로 다르다. 리스크를 줄이기 위해서는 멀티매니저 시스템이 더 유리하다.

다른 한편으로는 일임운용방식과 수익증권 탑재방식 2가지가 있다.

일임운용방식은 보험사가 운용사에 자금을 맡길 때 사전에 운용지침을 주고 운용사는 주어진 지침범위 내에서 운용하는 형태를 말하며, 수익증권 탑재방식은 개인이 수익증권을 사듯 단순히 펀드에서 수익증권을 사는 방식을 말한다.

문제는 계약자에게 전가되는 비용측면에서 차이가 있다는 점이다. A펀드의 펀드운용보수가 0.7%, B펀드의 펀드운용보수가 0.4%라고 하면 A펀드가 당연히 B펀드보다 더 비싸다고 판단된다.

그러나 A펀드는 일임운용방식이고 B펀드는 수익증권을 100% 탑재했다고 가정하면 얘기는 180도 달라진다.

A펀드는 전체자산 중 운용보수 명목으로 0.7%를 차감하고 고객에게 나머지 99.3%를 돌려주는데 반해 B펀드는 운용보수 명목으로 보험사가 0.4%만 떼지만 나머지 99.6% 중 수익증권 비용으로 1.5%가 추가로 차감돼 결국 고객이 받는 돈은 98.1%에 불과하다. 고객 입장에서는 이를 살펴봐야 하는 것이다.

펀드 선택에 있어 중요한 것 중 또 하나는 업그레이드된 기능이 반영될 수 있는 지 여부, 다시 말해 상품의 확장성이다.

예를 들어 확장성이 높은 상품과 확장성이 낮은 상품이 있는데, 두 상품 모두 A, B, C 세가지 펀드를 제공한다고 가정하자.

그런데 10년이 지나 정말 좋은 새로운 투자수단이 나타날 경우 좋은 상품은 이를 기존 상품에 얹어 펀드가 다양해지는 반면, 특정 펀드 중심으로 변액보험을 운용하는 상품은 기존상품을 없애고 새로운 상품을 만들어 내야 한다.

때문에 장기적으로는 확장성이 높은 상품이 훨씬 좋은 상품이다.

◆펀드 수익률 확인은 협회 및 보험사 홈페이지에서
변액보험 펀드 수익률생명보험협회(www.klia.or.kr)나 각 보험사 홈페이지를 통해 체크할 수 있다. 우선 공시되는 수익률은 원금 대비 수익률이 아니라 위험 및 부가 보험료가 제외된 실제 투자금액 대비 수익률이다.

각 보험사 홈페이지나 콜센터를 이용하면 자신이 낸 보험료 중 실제로 투자된 금액이 얼마인 지를 알 수 있으며 이에 따라 실제수익률을 알 수 있다.

가입시점이나 납입방법에 따라서도 고객별 수익률이 다르게 나타나므로 세부적인 내용까지 꼼꼼히 살펴봐야 한다.

아울러 채권, 주식 등 다양한 투자대상에 투자하기 위해서는 일정 규모 이상의 자산이 필수적이므로 최소한 100억원, 운용기간이 최소 1년 이상인 펀드를 기준으로 삼을 필요가 있다.

그리고 또하나. 변액보험에는 펀드 변경 옵션이 있어 증시 활황기에는 주식형 펀드를, 증기 침체기에는 채권형 펀드로 갈아탈 수 있다는 점도 알아두면 유리하다.
반응형
 
돈 모으기 위해 꼭 해야 할 일은 ‘통장 쪼개기’
재테크의 기본이 되는 ‘통장 쪼개기’는 자금의 사용 목적, 시기, 규모에 따라 통장을 나누는 것을 의미한다. 예를 들면 주택 마련 자금, 결혼 자금, 자녀 교육비, 노후 생활비 등에 따라 나눌 수 있다. 개인에 따라 재무 상태와 인생의 목표가 다르기 때문에 모든 사람이 똑같은 방법으로 할 수도 없고 무조건 많이 나눈다고 좋은 것도 아니다.

통장 쪼개기의 방법 중 하나는 일반 예금과 정기적금 외에 이자율이 높거나, 높은 수익률이 기대되는 통장을 추가하는 것이다. 자금을 7:3의 비율로 나눠 70%는 원금 손실의 위험이 없는 안전성 있는 통장에, 나머지 30%는 원금 손실의 위험은 있지만 높은 수익률을 기대할 수 있는 공격성 통장에 나눠 담는다. 통장 쪼개기를 하면 자금의 목적에 따라 이자가 많이 붙는 통장이 있는가 하면 절세가 되는 통장이 있기 때문에 더 효과적으로 관리할 수 있고 돈을 더 모을 수 있다.

귀 얇은 투자자들을 위한 상품 ‘전환사채(CB)’
전환사채(CB)는 주식이 될 수 있는 채권을 말한다. 채권과 주식을 같이 운용하는 셈. 가령 주식이 약세일 땐 채권으로 이자를 받고, 반대로 주식이 강세일 땐 주식으로 전환해 이윤을 보는 것이다. 채권은 주식과는 달리 기업의 실적에 관계없이 정해진 이자를 받을 수 있고 폐업 이전에는 원금을 회수할 수 있다.

한때 모 건설회사가 전환사채를 발행했을 때 이 채권을 산 사람들이 최고 80%의 수익을 낸 사례가 있다. 따라서 발행 회사만 우수하다면 상당히 높은 금리를 받을 수 있고 주식으로 전환해서 더 높은 이익을 낼 수도 있다. 투자 시에는 발행물량이 많은 상품이 일단 유리한데 한 번쯤은 금융기관과 상의해서 발행 회사의 재무나 경영 상태를 알아보는 것이 좋다.

귀차니스트들에게도 희망 주는 ‘적립식 펀드’
적립식 펀드는 보통 ‘적금식 투자’라고 하는데 자동이체가 돼 매달 신경 쓸 필요가 없고 경기의 오름과 내림에 상관없이 정해진 금액이 이체되기 때문에 마음만 먹으면 시간이 돈을 벌어다 줄 수 있는 펀드다. 정기적금과 비교하면 매달 들어가는 금액은 같지만 적립식 펀드는 그 돈으로 주식이나 펀드를 사서 운용실적에 따라 수익을 정하기 때문에 받는 금액이 달라질 수 있다. 가령, 1000만원을 30년 동안 일반 적금 통장에 넣어둔다면 30년 후 4300만원이 되지만, 적립식 펀드의 경우 2억9900만원까지 불어나는 식이다. 무려 8배 차이가 나는 셈. 따로 신경을 쓸 필요 없이 복리와 시간의 힘으로 돈을 불리는 방법이기 때문에 귀차니스트들도 재테크를 할 수 있다.

단, 위험 요소가 있지만 위험 부담을 없애는 방법도 있다. 매입비용 평균화 효과가 있어 3년 이상 꾸준히 투자하면 위험성이 떨어지기 때문. 가령 처음 투자한 1000만원으로 1만원짜리 주식 1000개를 샀다 치자. 주식 가격이 5000원으로 내려도, 내린 가격만큼 두 배인 2000개를 살 수 있어 위험 부담이 줄어들고 주식과 채권이 회복되었을 때 그만큼의 이익을 보게 되는 것. 보통 경기 회복 사이클이 우리나라의 경우 27개월, 미국의 경우 35개월이기 때문에 3년이면 위험 요소가 거의 사라진다. 그러나 위험 요소가 ‘0’이 아닌 한 투자 시에는 늘 수익률이 떨어질 수 있음도 고려해야 한다.

우리나라는 연 10% 이상으로 꾸준히 성장해왔기 때문에 우리나라의 경제 성장에 대해 믿음을 가진 사람들이 결국 ‘시간’에 투자하는 상품이다.

노후에 연금 더 받을 수 있는 ‘연금 쪼개기’

국민연금관리공단의 통계 자료에 따르면 30대 중반의 남성이 80세까지 산다고 가정할 때, 노후에 필요한 최저 금액(문화비 제외)이 4억5908만원. 고령화 시대로 접어들수록 연금의 중요성은 더욱 커지게 마련이다.

흔히 연금의 종류에는 3가지가 있다. 국가가 실시하는 기본적이고 장기적인 제도인 ‘국민연금’과 개인이 보험회사나 은행에 직접 가입하는 ‘사적 연금’, 마지막으로 기업이 설립한 ‘퇴직연금’이다. 그러나 2000년 이후 금리가 연이어 추락하면서 개인연금 수익률이 은행 이자를 밑도는 현상이 계속돼 요즘에는 주식투자형 개인연금에 관심이 쏠리고 있다.

연금에서 가장 중요한 것은 수령 후의 계획이다. 개인마다 퇴직 시기가 다르고, 자녀들의 교육 시기, 재무 상태에도 차이가 있기 때문에 노후 설계를 통해 연금을 넣을 때도, 또 찾을 때도 쪼개서 넣고 쪼개서 찾는 것이 좋다. 가령 바로 지급되는 1억원짜리 연금보험을 3개 가입할 때 각각 60세, 65세, 70세에 받도록 한다면 거치기간이 길수록 이자가 더 붙기 때문에 연금 개시 때 나오는 금액이 커지게 된다.

연금 쪼개기는 모든 보험회사에서 상담을 받을 수 있으며 은행이나 증권회사에서도 ‘방카슈랑스’란 이름으로 내놓고 있다.

목돈을 단기간 굴리는 데 좋은 ‘재구매 어음’

‘재구매 어음’이란 금융기관이 다시 사주겠다는 조건으로 발행하는 채권으로 환매조건부 채권이라고도 하는데 안전한 어음이다. 가령 60만원어치 어음을 샀다면 금융기관이 2~3개월 후에 얼마의 이자를 더 붙여 다시 사들이겠다고 약속하는 것. 이때의 이율은 확정금리이기 때문에 정기적금의 이율에 육박한다. 따라서 목돈을 짧은 기간 동안 맡길 때 유리한 방법이다. 또 높은 이율에 거의 확실한 보장을 받을 수 있어 금리 상승기에는 가장 인기 있는 투자방법이기도 하다.

따라서 일정 기간이 지난 후 특정일에 꼭 써야 하는 목돈이 있다면 그냥 묵혀두지 말고 재구매 어음에 투자하면 짧은 기간에도 큰 이윤을 얻을 수 있다. 5000만원을 6개월 동안 투자한다면 100만원의 수익차가 발생하는 것이 한 예. 일반 회사에서 발행하는 어음은 회사가 망할 경우 당연히 부도 처리가 되지만 ‘재구매 어음’은 금융기관이 자체 신용으로 발행하는 어음이기 때문에 금융기관이 망하지 않는 한 100%를 모두 받을 수 있다. 즉 어음을 발행하는 금융기관의 신용도가 가장 중요한 투자변수가 된다.

가장 안전한 주식 투자 상품 ‘주식연동계좌(ELS)’
코스닥과 나스닥을 구별할 줄 모르는 주식 문외한이라도 이 상품을 잘 고르면 두 마리 토끼를 다 잡을 수 있다. 여기서의 ‘두 마리 토끼’란 고수익성과 안전성(원금 보장)을 모두 보장한다는 것이다. 2002년부터 본격적으로 시작된 것으로 높은 이율을 위해 예금의 일부를 주식에 투자하는 방법. 예를 들면, 100만원 투자 시 95만원은 국가가 발행한 안전한 채권을 사고 나머지 5만원은 주식이나 고위험 상품에 투자하는 것이다. 설사 5만원이 0원이 되더라도 채권에서 붙은 이자로 원금을 보장하게 된다. 그러나 주식연동계좌를 하던 사람들이 계속 성공하다 보니 보다 공격적으로 투자하면서 약간의 안전성을 포기하고 그만큼 더 큰 수익을 얻을 수 있는 고위험성 상품을 원하는 경향이 높아졌다. 이로 인해 100% 원금 보장은 할 수 없지만 그럼에도 불구하고 가장 안전한 주식 투자 방법으로 꼽힌다. 특정한 목적으로 쓰일 장기 자금을 마련해야 하는 사람들에게 좋다. 따라서 현재 은행, 증권회사, 투자사를 통하여 많은 투자자들이 몰려 지난 8월까지 30조원이 넘는 자금이 유입돼 있는 상황. 주식 투자는 이익이나 손해를 모두 개인이 떠안지만 주식연동계좌는 이익과 손해도 나누는 훨씬 안전한 방법이기 때문에 전문가와 상의한 후에 정확한 투자 비율을 정한다면 저금리 시대에 가장 좋은 투자 방법이다.

1000원만 있어도 부동산 살 수 있는 ‘모둠형 신탁’
‘모둠형 신탁’은 리츠(REITs·부동산투자신탁)라고도 불리는데, 부동산에 투자하기 위해 공모 또는 사모 형태로 소액 투자자들의 자금을 모으는 뮤추얼 펀드다. 이름은 제각기 다르지만 전 금융기관에서 실시하고 있다. 위험은 줄이고 수익은 높이는 부동산 투자 방법으로 모둠형 신탁에 돈을 맡기면 금융기관이 대신해서 투자를 해준다. 금융기관에서 어느 한 빌딩을 산다고 가정하면 나중에 그 빌딩을 팔 경우 그것에서 얻은 차익을 투자자들에게 90% 이상 배당한다. 또 투자한 건물이 장사가 잘돼 임대료가 오를 때도 역시 오른 만큼 투자자들한테 배분하는 제도로 정부에서도 적극적으로 권장하는 방법이다. 해외 부동산 투자 상품의 경우에는 최소 투자금액이 10만~20만원이지만, 일반 서민들이 이용하는 은행이나 금융기관의 경우 1000원 이상이면 투자할 수 있다. 서울 시내의 큰 빌딩 중에 이런 형태로 투자가 이루어진 것들이 많으며 1000원으로 그 건물의 일정 지분을 갖게 되는 셈. 정기적으로 수익현황도 받아볼 수 있다.

출처 : Tong - 해곡님의 부자되기통

반응형
투자성향질문
투자성향 분석결과 입니다.

고객님께서는 자산운용에 있어 안정성에
관심은 있으나 기대수익률을 높이기 위해
일정부분 원금손실위험을 수용할 수 있는
안정성장형 투자성향을 가지고 계십니다.
이와 같은 안정성장형 투자자는 기대수익이
 높은 주식형 상품에 55% 정도를 투자하고
원금손실 가능성이 적은 절세형 금융상품과
채권형 상품에 30%를 현금성 상품에 15%를
 투자하는 것이 바람직 합니다.
시장상황에 따라서는 단기적으로 수익률에
있어 큰 차이를 보일 수 있으므로 장기적인
 재무설계를 바탕으로 한 지속적인 투자가
 중요하겠습니다.


재테크전략
고객님의 연령대는 가까운 장래에 결혼자금 등 목돈을 필요로 하는 시기 입니다.
이시기에는 금융환경 변화에 발 빠르게 적응할 수 있는 젊고 패기 넘치며 실패하더라도 만회 할 수 있는
시간적인 여유가 있다고 볼 수도 있으므로 안정성 보다는 수익성에 중심을 둔 적극적 재테크 전략으로
미래를 준비하실 필요가 있겠습니다.
따라서 주식형 상품 투자 비중을 다소 확대한 투자 포트폴리오가 필요하며, 3년 내외의 중기투자에
 적합한 적립식 펀드 가입을 추천해드립니다.
자산분류 투자과목 상품명 금리 투자금액
주식형
65.0%
펀드-주식형 미래에셋인디펜던스주식형투자회사   325,000원
펀드-주식형 동양투신모아드림적립식주식1호  
채권형
20.0%
펀드-채권형 동양투신HighPlus채권1호   100,000원
펀드-채권형 피델리티코리아글로벌채권형자(E)   2.25
현금성
15.0%
발행어음 발행어음 365일(365~999)   5.00 75,000원
CMA CMA ( 365일 예치시) 4.50
CMA 알뜰프리미엄   5.60
펀드-MMF 동양투신세이프신종MMF1-2호   4.88
주식형
미래에셋인디펜던스주식형투자회사
대형 우량주 중심의 장기 투자로 안정적인 수익을 추구하는 주식형 상품
동양투신모아드림적립식주식1호
성장가능성이 큰 대향 우량주 및 중소형 가치주 위주의 공격적 투자를 통해 수익을 추구 하는 적립식 상품
채권형
동양투신HighPlus채권1호
저 평가된 회사채 (BBB)중심의 투자로 국공채 펀드 이상의 수익을 추구 하는 상품
피델리티코리아글로벌채권형자(E)
현금성
발행어음 365일(365~999)
CMA ( 365일 예치시)
알뜰프리미엄
동양투신세이프신종MMF1-2호
반응형
top 이미지
date   지난 뉴스레터 보기
hot clip

시스템 관리 툴킷: 프로세스 관리 기법
hot clip 이미지 이 기사는 유닉스 시스템 관리자 입장에서 프로세스 정보를 추출하는 방법을 소개합니다. 프로세스 목록에서 원하는 정보를 원하는 형식으로 추출한다면 시스템 관리가 한결 수월해집니다. 또한 표준 명령으로는 얻기 힘든 요약 정보를 찾아보고, 다양한 유닉스 플랫폼에서 동일한 방식으로 정보를 얻어내는 표준화 기법도 소개합니다.

로컬 컨텐츠
고전 탐험 3탄: 소프트웨어 공학 서적 2선 dW Column
초보 개발자 코드 트레이닝, Part 3 - 데이터 추상화 Special Issue
컴퓨팅 기술의 원형 탐험, Part 3 Special Issue
Yaws와 ErlyWeb을 이용한 얼랭 웹 개발, Part 1 Open dW
[기획기사] 웹 서비스 힌트와 팁

SW 다운로드
IBM Lotus Quickr 8.1
Rational AppScan Standard Edition V7.7
Rational Software Analyzer Developer Edition V7.0
WebSphere Extended Deployment Compute Grid V6.1

기술자료 & 튜토리얼
eBay의 이클립스, Part 1
로그 파일 이해하기
루프 때문에 당황하지 말자!
리눅스 동기화 메서드 분석
CSS와 자바스크립트, JSF를 사용하여 Ajax 애플리케이션 만들기, Part 2
QEMU로 시스템 에뮬레이션하기
XStream으로 자바 객체를 XML로 직렬화하기
유닉스 명령행 도구 인터페이스 통일하기
리눅스 커널 가상 기계 탐험
웹 사이트를 유지보수 가능한 상태로 만들기
DB2 pureXML을 사용해 XML 스키마 개선하기
PHP를 이용한 자신만의 온디맨드 비디오 사이트 구축, Part 1튜토리얼
자신만의 언어 구문 분석기 만들기튜토리얼

공지사항
Eclipse 개발 리더,
Erich Gamma와의 만남
Eclipse 개발리더인 Erich Gamma가 직접 한국 고객만을 위한 실시간 인터뷰(6월 3일 오전 10시)를 진행합니다. dW에서는 여러분들이 직접 Erich Gamma에게 질문할 수 있는 기회를 드립니다. 궁금했던 사항을 5월 30일(금)까지 보내주세요.
 
Academic Initiative 배너
 
dW 커뮤니티 배너
 
기획기사 배너
 
SOA Sandbox 배너
 
dW 컬럼 배너

뉴스레터 추천하기

반응형
사용자 삽입 이미지

도메인을 연장신청 하였다.. pmguda.com

벌써 이 도메인을 사용한지 1년이 다 되어간다.. ㅎㅎ

블로그를 여러가지 자료 정리용으로 사용한지 1년이 되어간다는...

원래는 guda.com 이라는 구다닷컴  의 도메인을 사용하고 싶었지만..

도메인을 사용중이라... pmguda.com 으로 신청을 했었는데...

1년이 지난 지금 구다닷컴은 신청하지 못하고 있다... ㅋㅋ

구다닷컴 빨리 회사명을 바꾸던지 망해버렷 ㅋㅋ 내가 사용하게 ㅎㅎ
반응형
V. 메일 수신 예제
=================

 이 장에서는 JavaMail API를 이용한 메시지 수신 예제인 MailReciever.java에 대하여 다루겠다.
MailReciever는 간단하게 POP3를 이용하여 수신함에서 메일 메시지를 가져다가 local disk에
저장하는 프로그램이다.  전체 코드는 MailReciever.java 화일로 첨부해놓았으며, 여기서는
주로 전체적인 기능 및 부분 코드로 설명하겠다.

  MailReciever를 실행 시키려면 우선 다음과 같이 메일 호스트, 사용자 아이디, 암호 그리고
메일을 저장할 디렉토리이름을 main 메소드 에서 변경하여 바꾼 후에 컴파일 하여 실행 시키면 된다.

MailReciever reciever = new MailReciever();
reciever.setHost("www.xxxx.yyyy");
reciever.setUser("aaaa");
reciever.setPassword("bbbb");
reciever.setHomeDir("c:/mail");
        
reciever.recieve();


1. constructor
-----------------------------------------

  MailReciever의 Constructor에서는 우선 다음과 같이 메일 처리를 위한 Session 객체를 
생성하고 있다. Session 객체는 member variable인 session에 대입하여 놓는다.

Properties props = System.getProperties();
session = Session.getDefaultInstance(props, null);


2. recieve()
-----------------------------------------
  실제 메일을 수신하는 메소드는 recieve() 메소드 이다.  recieve() 메소드는 session으로 부터
pop3 Store 객체를 생하고 INBOX folder를 생성하여 message를 수신한다.

......

// Get folder
Folder folder = store.getFolder("INBOX");
    
// Open read-write
folder.open(Folder.READ_WRITE);
    
// Get message
Message message[] = folder.getMessages();
......

메일을 목록을 저장할 index화일과 메시지들을 저장할 디렉토리를 생성한 후에 
각각의 메시지들을 processMessage() 메소드를 호출하여 처리한다.

// index open
File indexFile = File.createTempFile("list", ".idx", new File(getHomeDir()));
FileOutputStream fout = new FileOutputStream(indexFile.getPath(), true);
indexWriter = new BufferedWriter(new OutputStreamWriter(fout));
        
// make folder
mailFolderName = getHomeDir() + "/" + indexFile.getName() + ".dir";
File mailFolder = new File(mailFolderName);
mailFolder.mkdir();
        
// process message
for(int i=0; i < message.length; i++) {
    processMessage(message[i]);
}

.......


3. processMessage()
---------------------------------------
  processMessage() 메소드는 각각의 메시지에 대한 발신자, 제목, 발신일, 저장할 폴더 등
목록에 해당하는 내용을 만든다.

.............

 // from
 sarr = message.getHeader("From");
 if(sarr == null || sarr.length == 0) {
   from = "";
 }
 else {
  from = decodeString(sarr[0]);
 }
            
 // subject
 sarr = message.getHeader("Subject");
 if(sarr == null || sarr.length == 0) {
   subject = "";
 }
 else {
   subject = decodeString(sarr[0]);
  }
            
// send date
sendDate = message.getSentDate();

.................


  메시지의 내용을 저장할 message+msgIndex 디렉토리를 만든다.  메시지의 내용과 
첨부 화일을 저장해야 함으로 내용을 저장할 $content.message 화일은 미리 open해 놓는다.
message는 여러부분의 Part로 구성될 수 있으므로 processPart 메소드를 호출하여 처리한다.
메시지를 처리한 후에 index 부분을 write한다.

        
// open content writer
FileOutputStream fout = new FileOutputStream(msgFolderName + "/" + "$content.message");
contentWriter = new BufferedWriter(new OutputStreamWriter(fout));
        
//process part
System.out.println(message.getSubject());
processPart(message);        
        
// header white
indexWriter.write(from + "\t");
indexWriter.write(subject + "\t");
indexWriter.write(sendDate +"\t");
indexWriter.write(msgFolderName + "\t");
indexWriter.write(appendCount + "\n");

// close content writer
contentWriter.close();


4. processPart()
--------------------------------------
  processPart()는 우선 Part의 내용을 화일로 저장할지 아니면 메시지 내용으로 write할 지를
결정한다.

String fileName = part.getFileName();
String disposition = part.getDisposition();
boolean isAttachement = false;
        
if (fileName != null || disposition != null) {
  isAttachement = true;
}

......

  mime type에 따라 Part의 내용을 처리하되 "text/*" 일 경우는 내용 저장, "multipart/*" 일 경우는
이를 다시 Part로 나누어 재귀적으로 processPart() 메소드를 호출, 그리고 "message/rfc822" 일 경우는
다시 processPart()를 다시 호출 한다.  나머지 경우는 내용을 저장한다.


if (part.isMimeType("text/*")) {
    
  if(isAttachement) {
    saveFile(fileName, part.getContent());
    appendCount++;
  }
  else {
    saveContent(part.getContent());
  }
                            
} else if (part.isMimeType("multipart/*")) {
            
  Multipart mp = (Multipart)part.getContent();        
  for (int i = 0; i < mp.getCount(); i++) {
    processPart(mp.getBodyPart(i));
  }
    
} else if (part.isMimeType("message/rfc822")) {
            
  processPart((Part)part.getContent());
            
} else {
            
  Object obj = part.getContent();
        
  if(isAttachement) {
    saveFile(fileName, obj);
    appendCount++;                
  }
  else {
    saveContent(obj);
  }

}


5. saveFile()
--------------------------------------
  화일이름과 내용을 담은 Object를 주면 중복되지않게 화일 이름에 일련번호를 붙여
내용을 저장한다.  내용 Object 가 InputStream일 경우는 stream을 읽어 내용을 저장하고
아닐 경우는 String으로 만들어 저장한다.


6. saveContent()
--------------------------------------
  내용을 담은 Object를 받아들여 이미 열려있는 contentWriter에 내용을 write한다.
내용 Object 가 InputStream일 경우는 stream을 읽어 내용을 저장하고
아닐 경우는 String으로 만들어 저장한다.


7. 기타 methods
--------------------------------------
  toHangle 메소드는 문자열을 한글체계로 바꾸는 메소드이고, decodeString은
메일 메시지의 헤데 문자열이 encoding되어 있을 때 MimeUtility를 이용하여
decode 하는 메소드이다.  searchPattern은 encoding되어 있는 문자열을 구분해내는
역할을 한다. 
반응형
IV. 메일 메시지 수신
======================

  메일 메시지의 수신은 우선 POP3나 IMAP은 지원하는 메일 서버가 있다는 전제로
될 수 있다.  그리고 메일서버에 메일을 수신할 수 있는 계정이 만들어져있고
수신함 즉 "INBOX"가 존재하여 타인이 메일 서버로 메시지를 보낼 때 이 수신함에
그 메시지가 저장이 되어야 한다. 

  이러한 환경이 설정되어 있어야 JavaMail API를 이용하여 메일 서버의 수신함에
저장된 메시지를 가져올 수 있다.  메일 서버와 통신을 하여 수신함에서 수신된 
메시지를 꺼내올 수 있는 실제 클레스들은 기본적으로 com.sun.mail.imap 과 
com.sun.mail.pop3 패키지로 제공되는데 만일 다른 제공자의 클레스를 사용하고자 
한다면 Session의 프로퍼티를 설정해야 한다.

  다음은 POP3 프로토콜을 이용하여 수신함에서 메시지를 가져와 발신자와
제목을 화면에 보여주는 예제이다.


String server = "www.xxx.zzz";
String user   = "aaaa";
String pass   = "bbbb";

// 프로퍼티 
Properties props = new Properties();

// 세션 객체 생성 
Session session = Session.getDefaultInstance(props, null);

// POP3 Store 연결
Store store = session.getStore("pop3");
store.connect(server, user, pass);

// INBOX Folder 가져옮
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_ONLY);

// 수신된 메시지들을 Folder에서 가져옮
Message message[] = folder.getMessages();

for (int i=0, n=message.length; i<n; i++) {
   System.out.println(i + ": " + message[i].getFrom()[0] 
     + "\t" + message[i].getSubject());
}

// 연결을 끊는다.
folder.close(false);
store.close();
  
  위의 예에서 보듯이 POP3를 지원하는 메일 서버 주소, 아이디, 패스워드만 있으면
Stroe 객체를 통하여 서버와 연결하여 Folder객에체서 Message 객체들을 얻어와 메일을 수신할 
수 있다.  Message 객체는 메일을 구성하는 수신자, 발신자, 제목, 내용등이 모두들어
있다.

  Message객체에서 getFrom 메소드를 호출하면 발신자 경로를 추적할 수 있는 Address
Array를 받을 수 있다.  최종 발신자는 0 번째에 있다.  메일 메시지의 제목을 얻으려면
Message의 getSubject 메소드를 호출하면 된다.  이러한 수신자, 발신자 또는 제목 등은
메일은 헤더에 해당하는데, 이는 getHeader 메소드를 통하면 원본 String을 얻을 수 있다.

  String from = message.getHeader("From");
  String subject = message.getHeader("Subject");

위의 예제에서 원본 String은 MIME 규칙에 의해 Encoding되어 있는 경우가 있는데 이럴때는
java.mail.internet.MimeUtility의 decodeWord 메소드를 이용하여 원본을 복구해내야 한다.

  메시지의 내용을 받는 방법은 기본적으로 Message 클레스의 getContent 메소드를 이용하도록
되어 있다.  getContent 메소드는 Part 인터페이드에 정의 되어 있다.  하지만 메시지의
내용이 어떤형태로 구성되어 있는냐를 고려해야 한다.  

  메시지 내용의 MIME type이 "text/plain" 또는 "text/html"일 경우는 비교적 간단하게
처리할 수 있다.  getContent로 얻은 객체를 toString 메소드를 이용하여 문자열로 받을 수도
있고 또다를 방법은 getText 메소드를 이용하여 내용을 문자열로 받을 수 있다.  
내용이 어떠한 MIME TYPE을 하고 있는지는 isMimeType 메소드로 비교할 수 있다. 다음은
text로 구성된 메시지의 내용을 받은 예제이다.

  Message[] message = folder.getMessages();

  for(int i=0; i < message.length; i++) {

    if(message[i].isMimetype("text/*")) {
      String content = message[i].getContent().toString();
      System.out.println(content);
    }
    else if(message[i].isMimeType("multipart/*)) {
      ...
    }
    else {
      ...
    }

  }

 메시지의 내용이 첨부화일을 갖는 경우는 보통 MIME type이 "multipart" 로 되어 있다.
이러한 경우는 Message 객체 의 content를  Multipart 객체로 casting해야 처리할 수 있다.
Multipart는 여러가지 Part가 모여있는 형태임으로 각각의 BodyPart를 추출하여 기본 내용 
텍스트로 쓸 것인지 첨부화일로 쓸 것인지를 판단한다.

Part의 내용을 처리하는 기준은 getDisposition 함수를 이용하여 얻을 수 있는데 비교할 수 있는
Constants는 Part에 있는 Part.ATTACHMENT 와 Part.INLINE이다.  Part.ATTACHMENT는 첨부
화일이라는 의미이고 Part.INLINE은 내용을 화면에 표시한다는 의미이다. 다음은 본문은
화면에 표시하고 첨부는 화일에 저장하는 예제이다.

// 메시지가 multipart인 경우
if(message.isMimeType("multipart/*")) {

  // 내용을 Multipart로 만듬
  Multipart mp = (Multipart)message.getContent();

  // 각각의 part를 순서데로 처리
  for (int i=0, n=multipart.getCount(); i<n; i++) {

    // 처리될 body part
    Part part = multipart.getBodyPart(i));

    // 처리 기준을 가져옴
    String disposition = part.getDisposition();
    String filename    = part.getFileName();
    
    // disposition이 Attachment이거나 file name이 있으면 저장
    if((disposition != null && disposition.equals(Part.ATTACHMENT)) ||
       (filename != null)) {
      saveFile(filename, part.getInputStream());
    }
    // 본문 처리
    else {
      .......
    }

  }
}

else {
  ....
}

위의 예제는 Message의 MIME type이 "multipart/*" 일 때 처리하는 로직이며
saveFile 메소드는 이미 있다고 가정한다.  그리고 본문처리 로직은
적절히 화면이 보여주거나 다른 곳이 저장한다고 가정한다.

POP3 프로토콜을 수신함에 있는 메시지를 삭제하는 기능도 정의하고 있다.
따라서 다음과 같이 수신함에 있는 메시지를 받아온 다음 수신함에서 해당 메시지를 
삭제할 수도 있다.

메시지 삭제는 다음과 같은 메시지 상태 flag를 바꾸어줌으로서 가능한데 각가의 flag는
Flags 클레스에 정의되어 있다.

- Flags.Flag.ANSWERED 
- Flags.Flag.DELETED 
- Flags.Flag.DRAFT 
- Flags.Flag.FLAGGED 
- Flags.Flag.RECENT 
- Flags.Flag.SEEN 
- Flags.Flag.USER 

위의 flag들은 모든 메일 서버가 지원하는 것은 아니다.  각각의 메일 서버마다 지원하는
flag가 있고 지원하지 않는 flag가 있다.  그리고 POP3 프로토콜에서는 DELETED flag만을
지원하도록 되어 있다. 어떠한 flag들이 지원되는지 알려면 Folder 객체의 getPermanentFlags()
메소드를 이용하면 된다.

메시지의 삭제 방법은 우선 Folder 객체를 READ/WRITE 형으로 연 다음  Message 객체의 flag을 
DELETED 상태로 바꾼다.

folder.open(Folder.READ_WRITE);
.......
message.setFlag(Flags.Flag.DELETED, true);

실제 메시지가 삭제되는 시점은 folder를 close하는 시점인데 다음과 같이 파라미터에 true를
준다.

folder.close(true);

메시지를 수신하는 전반적인 방법은 다음 장에 Reciever.java 예제로 다시한번 설명하겠다. 
반응형
III. 메일 메시지 발신
======================

  메일 메시지를 보내려면 우선 보낼 서버, 수신자, 발신자, 제목, 내용 등이 필요한다.
우선 서버의 지정은 Session을 생성할 때 넘겨주는 Properties에 "mail.smtp.host" 라는
키로 서버 주소를 지정함으로서 SMTP 전송을 처리하는 메일 서버를 지정한다.

  수신자, 발신자, 제목, 내용 등을 지정하려면 우선 이들을 하나의 메시지에 묶는
Message 객체가 필요한데, Message는 추상 클레스이므로 javax.mail.internet 패키지에
있는 MimeMessage를 이용한다.

  발신자는 Message 객체의 setFrom 메소드로 지정하되 InternetAddress 객체를 생성하여
지정한다.  수신자는 Message 객체의 addRecipient 메소드로 지정하되 Message.RecipientType
을 참고하여 지정한다.

  최종적 전송은 Transport 클레스의 static 메소드인 send로 한다.  다음은 일반 텍스트를 
SMTP를 이용하여 간단히 전송하는 예제이다.


String host = "xxx.zzz.com";
String from = "hong@xxx.zzz";
String to = "chun@aaa.bbb";

// 서버 프로퍼티 설정 
Properties props = System.getProperties();
props.put("mail.smtp.host", host);

// Session 객체 생성
Session session = Session.getDefaultInstance(props, null);

// 메시지 생성
MimeMessage message = new MimeMessage(session);
InternetAddress addr = new InternetAddress(from, "홍길동", "euc-kr");

message.setFrom(addr);
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject("Test Mail");
message.setText("This is a Test Mail");

// 메시지 전송 
Transport.send(message);


  메일 내용을 HTML로 보내려면 Message 객체의 setContent 메소드를 사용하면 된다. setContent
메소드는 Part인터페이스에 정의되어 있는데 Message 클레스는 이를 Implement하도록 되어 있다.
다음은 message 객체에 "text/html" 형식으로 내용을 주는 예제이다.


String content = "<FONT COLOR=BLUE SIZE=20> 안녕하십니까 ? " +
                 "<A HREF=WWW.JAVANURI.COM> 자바누리입니다. </A> </FONT>";
message.setContent(content, "text/html; charset=\"euc-kr\"");


  첨부 화일을 보내는 경우는 Message의 내용을 MultiPart 객체로 설정해야 한다.  MultiPart 클레스는
메시지 내용을 여러가지 부분(BodyPart)으로 구성할 수 있게 해준다.  각각의 내용부분의 BodyPart와
화일부분의 BodyPart를 생성한 후에 이들을 MultiPart에 추가하여 하나의 메시지가되도록 병합한다.
이 MultiPart를 Message의 content로 설정한 후 전송하면 여러개의 첨부화일을 간단히 처리할 수 있다.

  JavaMail API에서 화일을 처리할 경우 FileDataSource, DataHandler 등의 JAF 패키지 클레스들을
사용하게되는데 이는 JAF(JAVABEANS ACTIVATION FRAMEWORK)의 표준 자료 처리방식을 지원하는 클레스들
이다. 

  다음은 MultiPart 및 BodyPart를 구현하는 구체적 클레스 MimeMultiPart, MimeBodyPart를 이용하여
첨부 화일을 전송하는 예제이다.

SendAttachement.java
==============================================================================================
import java.io.*;
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

public class SendAttachement {

  //-------------------------------------------
  // main
  //-------------------------------------------
  public static void main (String args[]) throws Exception {

    // 메일서버, 수신자, 발신자, 화일이름
    String host = "www.xxx.com";
    String from = "aaa@javanuri.com";
    String to = "zzz@javanuri.com";      
    String fileName = "mydoc.txt";
      
    // 프로퍼티 설정
    Properties props = new Properties();
    props.put("mail.smtp.host", host); 
  
    // Session 생성
    Session session = Session.getDefaultInstance(props, null);

    // MimeMessage 메시지 생성
    MimeMessage message = new MimeMessage(session);
    InternetAddress addr = new InternetAddress(from, "홍길동", "euc-kr");        
    message.setFrom(addr);
    message.setSubject("첨부 테스트 메일");        
    message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));

    // Multi Part 생성
    Multipart multipart = new MimeMultipart();        
        
    // 메시지 BodyPart 생성 및 Mutil Part에 추가 
    BodyPart messageBodyPart = new MimeBodyPart();
    messageBodyPart.setText("테스트 첨부화일 입니다.");    
    multipart.addBodyPart(messageBodyPart);

    // 첨부 화일 BodyPart 생성 및 Multi Part에 추가 
    BodyPart fileBodyPart = new MimeBodyPart();
    DataSource source = new FileDataSource(fileName);
    fileBodyPart.setDataHandler(new DataHandler(source));
    fileBodyPart.setFileName(fileName);
    multipart.addBodyPart(fileBodyPart);
        
    // Multi Part 메시지에 content로 설정
    message.setContent(multipart);

    // 메일 메시지 전송
    Transport.send(message);
    

  }
   
}

+ Recent posts