quinta-feira, 8 de dezembro de 2011
Como configurar o postgres linux ubuntu 10.04
sudo apt-get install postgresql-8.2 postgresql-client-8.2 postgresql-contrib-8.2
sudo apt-get install pgadmin3
This will install the database server/client, some extra utility scripts and the pgAdmin GUI application for working with the database.
Configuring postgresql in Ubuntu
Now we need to reset the password for the ‘postgres’ admin account for the server
sudo su postgres -c psql template1
template1=# ALTER USER postgres WITH PASSWORD ‘password’;
template1=# \q
That alters the password for within the database, now we need to do the same for the unix user ‘postgres’:
sudo passwd -d postgres
sudo su postgres -c passwd
Now enter the same password that you used previously.
from here on in we can use both pgAdmin and command-line access (as the postgres user) to run the database server. But before you jump into pgAdmin we should set-up the PostgreSQL admin pack that enables better logging and monitoring within pgAdmin. Run the following at the command-line
we need to open up the server so that we can access and use it remotely - unless you only want to access the database on the local machine. To do this, first, we need to edit the postgresql.conf file:
sudo gedit /etc/postgresql/8.2/main/postgresql.conf
Now, to edit a couple of lines in the ‘Connections and Authentication’ section
Change the line
#listen_addresses = ‘localhost’
to
listen_addresses = ‘*’
and also change the line
#password_encryption = on
to
password_encryption = on
Then save the file and close gedit.
Now for the final step, we must define who can access the server. This is all done using the pg_hba.conf file.
sudo gedit /etc/postgresql/8.2/main/pg_hba.conf
Comment out, or delete the current contents of the file, then add this text to the bottom of the file
DO NOT DISABLE!
# If you change this first entry you will need to make sure that the
# database
# super user can access the database using some other method.
# Noninteractive
# access to all databases is required during automatic maintenance
# (autovacuum, daily cronjob, replication, and similar tasks).
#
# Database administrative login by UNIX sockets
local all postgres ident sameuser
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# “local” is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
# Connections for all PCs on the subnet
#
# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
host all all [ip address] [subnet mask] md5
and in the last line, add in your subnet mask (i.e. 255.255.255.0) and the IP address of the machine that you would like to access your server (i.e. 138.250.192.115). However, if you would like to enable access to a range of IP addresses, just substitute the last number for a zero and all machines within that range will be allowed access (i.e. 138.250.192.0 would allow all machines with an IP address 138.250.192.x to use the database server).
That’s it, now all you have to do is restart the server
sudo /etc/init.d/postgresql-8.2 restart
That’s it you can start using postgresql in Ubuntu
Create a Database from command line
You can also use pgadmin3 for all postgresql related
To create a database with a user that have full rights on the database, use the following command
sudo -u postgres createuser -D -A -P mynewuser
sudo -u postgres createdb -O mynewuser mydatabase
fonte: http://www.ubuntugeek.com/howto-setup-database-server-with-postgresql-and-pgadmin3.html
Configurar o usuário postgres instalado pelo synaptic
cd /etc/init.d/
Logue no postgresql usando a conta root:
sudo -u postgres psql template1
Depois quando estiver no psql digite o seguinte comando SQL:
ALTER USER postgres WITH PASSWORD ‘***password***’;
onde ***password*** é a sua nova senha.
Saia do console do postgresql digitando \q
fonte: http://public-void-main.blogspot.com/2008/03/alterar-senha-do-postgresql-no-ubuntu.html
Como configurar o proxy no ubuntu 10.04
/etc/apt/apt.conf
Acquire::http::proxy "http://usuario:senha@ipproxy:port/";
Acquire::ftp::proxy "ftp://usuario:senha@ipproxy:port/";
Acquire::https::proxy "usuario:senha@ipproxy:port/";
e adicione as seguintes linhas no arquivo
/etc/profile
export http_proxy="http://usuario:senha@ipproxy:port"
export ftp_proxy="ftp://usuario:senha@ipproxy:port"
terça-feira, 6 de dezembro de 2011
Uma lição para vida - placa de rede !
Quando você tem um computador que quando você pluga na rede de seu trabalho ele funciona normalmente mas quando ele é plugado em qualquer switch ou roteador ele não funciona (aparece cabo não conectado) um dos possíveis problemas é configuração da velocidade da sua placa.
Para resolver isso vetifique:
Painel de Controle\Rede e Internet\Conexões de Rede-> Propriedades da Conexão de rede -> Configurar -> Avançado -> Duplex e Velocidade de Conexão ->
e no campo valor coloque "negociação automático".
Boa Sorte!
Obrigado Sergio pela dica !
terça-feira, 4 de outubro de 2011
Ler xml dom java 6 exemplo
------------------------------------------------
</
lista_cras>
---------------------------------------
CPFcoordenadorCRAS: 222.222.222-22
Windows Phone MarketPlace do Brasil lançado
Tinha uma conta com um usuário americano do xbox. Fiz a transferência para o Brasil depois de atualizar para o Mango.
O MarketPlace abriu com tranquilidade. Contudo, ficaram somente os links para compra de aplicativos e games. O Zune que comercializa video e música desapareceu.
Outro problema que deve ser resolvido em breve foi a pouca quantidade de aplicativos disponíveis para brasileiros. Um número extremamente inferior ao do mercado americano.
Abraços.
segunda-feira, 3 de outubro de 2011
Ler XML JAVA 6 com SAX
Este código foi implementado utilizando: http://www.guj.com.br/articles/15
import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class LerXMLDOM {
/**
* @param args
* @throws SAXException
* @throws ParserConfigurationException
* @throws IOException
*/
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
// TODO Auto-generated method stub
SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
InputSource input = new InputSource("RelatorioCrasMensal.xml");
parser.parse(input, new XMLHandler());
}
}
class XMLHandler extends DefaultHandler {
/** o galho atual */
private StringBuffer galhoAtual = new StringBuffer(200);
/** o valor da tag atual */
private StringBuffer valorAtual = new StringBuffer(100);
/** comeca um documento novo */
/** termina o documento */
public void endElement(String uri, String localName, String tag)
{
// mostra o valor
System.out.print(valorAtual.toString().trim());
// e limpa
valorAtual.delete(0, valorAtual.length());
// seta o galho atual
galhoAtual.delete(
galhoAtual.length() - tag.length() - 1,
galhoAtual.length());
}
public void startElement(
String uri,
String localName,
String tag,
Attributes atributos)
{
// seta o galho atual
galhoAtual.append("/" + tag);
// mostra a tag
System.out.print(
"\n<"
+ galhoAtual.substring(1)
+ (atributos.getLength() != 0 ? " +ATRIBUTOS" : "")
+ ">");
// limpa a tag atual
valorAtual.delete(0, valorAtual.length());
}
/** recebe os dados de uma tag */
public void characters(char[] ch, int start, int length) {
// adiciona ao valor atual
valorAtual.append(ch, start, length);
}
}
----------------------------------------------------------------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<relatorio_mensal_cras_v1>
<hora_geracao>11</hora_geracao>
<minuto_geracao>15</minuto_geracao>
<segundo_geracao>55</segundo_geracao>
<dia_geracao>03</dia_geracao>
<mes_geracao>10</mes_geracao>
<ano_geracao>2011</ano_geracao>
<mes_referencia>04</mes_referencia>
<ano_referencia>2011</ano_referencia>
<numero_unidade>1234</numero_unidade>
<a1>100</a1>
<a2>200</a2>
<b1>300</b1>
<b2>400</b2>
<b3>500</b3>
<b4>600</b4>
<b5>700</b5>
<b6>800</b6>
<c1>900</c1>
<c2>1000</c2>
<c3>1100</c3>
<c4>1200</c4>
<c5>1300</c5>
<d1>1400</d1>
<d2>1500</d2>
<d3>1600</d3>
<d4>1700</d4>
<d5>1800</d5>
<d6>1900</d6>
<d7>2000</d7>
</relatorio_mensal_cras_v1>
-----------------------------------------------------------------------------------------------------------------------------------------------
Resultado
<relatorio_mensal_cras_v1>
<relatorio_mensal_cras_v1/hora_geracao>11
<relatorio_mensal_cras_v1/minuto_geracao>15
<relatorio_mensal_cras_v1/segundo_geracao>55
<relatorio_mensal_cras_v1/dia_geracao>03
<relatorio_mensal_cras_v1/mes_geracao>10
<relatorio_mensal_cras_v1/ano_geracao>2011
<relatorio_mensal_cras_v1/mes_referencia>04
<relatorio_mensal_cras_v1/ano_referencia>2011
<relatorio_mensal_cras_v1/numero_unidade>1234
<relatorio_mensal_cras_v1/a1>100
<relatorio_mensal_cras_v1/a2>200
<relatorio_mensal_cras_v1/b1>300
<relatorio_mensal_cras_v1/b2>400
<relatorio_mensal_cras_v1/b3>500
<relatorio_mensal_cras_v1/b4>600
<relatorio_mensal_cras_v1/b5>700
<relatorio_mensal_cras_v1/b6>800
<relatorio_mensal_cras_v1/c1>900
<relatorio_mensal_cras_v1/c2>1000
<relatorio_mensal_cras_v1/c3>1100
<relatorio_mensal_cras_v1/c4>1200
<relatorio_mensal_cras_v1/c5>1300
<relatorio_mensal_cras_v1/d1>1400
<relatorio_mensal_cras_v1/d2>1500
<relatorio_mensal_cras_v1/d3>1600
<relatorio_mensal_cras_v1/d4>1700
<relatorio_mensal_cras_v1/d5>1800
<relatorio_mensal_cras_v1/d6>1900
<relatorio_mensal_cras_v1/d7>2000
segunda-feira, 26 de setembro de 2011
Algoritmo do Soundex
quarta-feira, 21 de setembro de 2011
Redes sociais com perfis livres é o futuro?
domingo, 18 de setembro de 2011
SmartPhones um câncer para o modelo atual de telefonia
O modelo de telefonia hoje é baseado em telefones que não tinham as mínimas condições de acesso a Internet onde os aplicativos mais sofisticados eram calendário, despertador e calculadora. As empresas de telefonia tinham como principal receita tarifição por ligações, tarifação por SMS e venda de aplicativos em Java Micro Edition.
O modelo de Smartphones adotados hoje utilizam quase que obrigatoriamente a Internet através da rede 3g, 2g ou via rede wifi. Estes telefones trouxeram um novo paradigma, pois serviços que eram ofertados diretamente pelas companias telefonicas podem ser criadas por terceiros.
A venda de aplicativos em Java Micro Edition praticamente foi extinta para esta nova geração de celulares. Tanto Apple, Google e Microsoft se negaram a utilizar a tecnologia da Oracle. Ou seja, elas querem ficar com a receita da venda de aplicações para celulares, por meio de seus marketplaces.
Os famosos SMS vem sendo substituídos aos poucos por aplicações que utilizam a internet do celular para enviar mensagens. WhatsApp, Gtalk, Facebook e outros oferecem para seus usuários ferramentas que substituem o SMS.
E por fim, as chamadas telefonicas. Quando vi pela primeira vez um Skype instalado em um Smartphone soube que o modelo de telefonia vai mudar nos próximos anos. O Skype permite realização de ligações via Internet (Voz sobre IP) não obrigando o usuário a utilizar a tarifação da companhia telefonica.
As companhias telefonicas provavelmente terão que se adaptar a este novo paradigma nos próximos anos. Ainda fico me perguntando se um dia o celular somente terá acesso Internet. Talvez ainda demore anos ou mesmo décadas para isso acontecer. Visto que ainda existe o modelo de telefone fixo que não evoluiu em nada nas últimas décadas.
segunda-feira, 12 de setembro de 2011
Matriz de Informação Social
http://aplicacoes.mds.gov.br/sagi/mi2007/
Constituição e a política social
Art. 6. São direitos sociais a educação, a saúde, o trabalho, a moradia, o la-
zer, a segurança, a previdência social, a proteção à maternidade e à infân-
cia, a assistência aos desamparados, na forma desta Constituição.
Art. 7. São direitos dos trabalhadores urbanos e rurais, além de outros que
visem à melhoria de sua condição social:
...
IV - salário mínimo, fixado em lei, nacionalmente unificado, capaz de aten-
der a suas necessidades vitais básicas e às de sua família com moradia,
alimentação, educação, saúde, lazer, vestuário, higiene, transporte e
previdência social, com reajustes periódicos que lhe preservem o poder
aquisitivo, sendo vedada sua vinculação para qualquer fim;
...
XXV - assistência gratuita aos filhos e dependentes desde o nascimento até
5 (cinco) anos de idade em creches e pré-escolas
...
Art. 23. É competência comum da União, dos Estados, do Distrito Federal e
dos Municípios:
...
II - cuidar da saúde e assistência pública, da proteção e garantia das
pessoas portadoras de deficiência.
Art. 194. A seguridade social compreende um conjunto integrado de ações
de iniciativa dos Poderes Públicos e da sociedade, destinadas a assegurar
os direitos relativos à saúde, à previdência e à assistência social.
Os Artigos 203 e 204, da seção IV da Constituição, regem a assistência social
no Brasil (BRASIL, 2009f):
Art. 203. A assistência social será prestada a quem dela necessitar, inde-
pendentemente de contribuição à seguridade social, e tem por objetivos:
I - a proteção à família, à maternidade, à infância, à adolescência e à velhi-
ce;
II - o amparo às crianças e adolescentes carentes;
III - a promoção da integração ao mercado de trabalho;
IV - a habilitação e reabilitação das pessoas portadoras de deficiência e a
promoção de sua integração à vida comunitária;
V - a garantia de um salário mínimo de benefício mensal à pessoa portadora
de deficiência e ao idoso que comprovem não possuir meios de prover à
própria manutenção ou de tê-la provida por sua família, conforme dispu-
ser a lei.
Art. 204. As ações governamentais na área da assistência social serão rea-
lizadas com recursos do orçamento da seguridade social, previstos no art.
195, além de outras fontes, e organizadas com base nas seguintes diretri-
zes:
I - descentralização político-administrativa, cabendo a coordenação e as
normas gerais à esfera federal e a coordenação e a execução dos res-
pectivos programas às esferas estadual e municipal, bem como a enti-
dades beneficentes e de assistência social;
II - participação da população, por meio de organizações representativas, na
formulação das políticas e no controle das ações em todos os níveis.
quinta-feira, 8 de setembro de 2011
Notebook, netbook, tablet ou smartphone
Muitas pessoas me perguntam qual desses equipamentos comprar.
Aqui está minha opinião.
A primeira pergunta que faço é:
É para trabalhar? Se a resposta for sim quase sempre a pessoa precisa de um notebook ou um netbook.
As ferramentas de escritórios ainda não tem concorrentes de peso no mundo dos tablets e smatphones.
Se for utilizar por muitas horas, precisar de alto desempenho ou você só quer comprar um único equipamento eletrônico prefira um notebook.
Caso você já tenha um bom desktop em casa eu recomendo um netbook porque ele ganha em mobilidade mas perde em desempenho que você tem no seu desktop.
Os smartphones e tablets não substituem os pcs e apesar de milhares de aplicaçōes disponíveis ainda os notes e nets executam muito mais aplicativos e possuem sistemas em navegadores mais confiáveis. Sempre entro em páginas no meu smartphone ou no meu tablet que não funcionam bem ou são extremamente difíceis de usar, pois foram desenhadas para serem usadas com um teclado e mouse.
Quando você tiver seu primeiro pc (um net, note ou mesmo um desk) recomendo comprar um smartphone. Eles são muito práticos, cabem no seu bolso :-) e fazem quase tudo que um tablet faz . Os tablets somente recomendo para quem gosta de ler ou ficar vendo tv grudado na internet. Eles também são muito bons para levar pra cama e para se divertir em um avião sem a comissária de bordo pegar no seu pé dizendo que você está com um celular. Mas a maioria dos tablets não vem com celular, por isso você vai precisar também de um celular baratinho.
Agora se você gostar muito de tecnologia e tenha uma graninha sobrando compre os quatro e seja feliz! :-)
Internet 3G brasileira
Quando a internet via celular 3g foi lançada era possível escolher planos com velocidades entre 300k, 600k, 1mb e mesmo 7mb de velocidade. Sem limite de download ou tempo de conexão. Desde seu lançamento os planos para este tipo de acesso a internet vem somente piorando.
O grande problema foi que parte dos usuários que utilizavam este tipo de internet não conseguiam atingir a velocidade vendida e colocavam as operadoras na justiça. E claro as operadoras se juntaram para dificultar a vida dos usuários ao invés de resolver os problemas técnicos. E claro que a ANATEL concordou com as exigências delas. Ou SEJA, os planos hoje são cheios de pagadinhas e surpresas no final do mês.
No Brasil internet ilimitada significa:
1.Não existe velocidade estabelecida para download, se a internet estiver lenta a operadora não é responsabilizada. O problema é seu companheiro. Quem manda morar longe da estação rádio base.
2.Quando você baixar mais de uma determiada quantidade de bytes, geralmente 1 giga byte ou menos, eles reduzem a velocidade para 1/10 da velocidade max que é alcançada pela operadora, em alguns planos chega a 30k. Esta velocidade é mais lenta que utilizar um conexão discada em 1994. Fora que se sair um service pack do windows provavelmente seu plano irá acabar antes de você atualizar seu sistema operacional.
Funciona mais ou menos assim eles te dão uma ferrari, mas você só pode usar dois litros de gasolina. Depois disso você fica com um fusquinha com pneu furado. Prefiro ter um carro 1.4 o tempo todo, e você?
3. Bem, se quiser continuar utilizando a internet com velocidade normal ao invés de reduzida você pode continuar usando sendo que é cobrado uma taxa para cada Mega baixado. Fiz uns calculos se baixar 200 MB após meu limite de1 gb vou pagar 200 reais a mais na sua conta ou 3x o valor do plano por 1/5 de quantidade de dados.
Isso é a internet 3g ilimitada do Brasil. Parabéns ANATEL por ajudar as empresas de telefonias. Afinal elas lucram tão pouco neste país. Enfim, como elas iriam investir aqui... vou adorar ver os planos da internet 4g...
terça-feira, 6 de setembro de 2011
windows phone 7 e Andorid 3
Finalmente, tive a oportunidade de utilizar o windows phone 7 (wp7) no celular htc hd7 e o android 3 no acer iconia.
O wp7 me surpreendeu muito com uma usabilidade melhor, na minha opinião, que a do android 2.2 e arrisco a dizer no nível do ios. Realmente a Microsoft fez um trabalho digno para entrar na guerra dos smartphones. Todos os menus e navegação estão suaves e organizados. Um problema que tive foi que o marketplace ainda não estava disponível para emails brasileiros, mas resetei o aparelho apagando todos os seus dados e consegui colocar um endereço dos estados unidos.
Já o android não me surpreendeu muito. Ficou faltando um algo novo, algo que não tivesse visto no ipad pelo menos com relação ao software. Achei os menus mal organizados. existem mais de 6 aplicativos para multimedia me lembrou a confusão das distribuiçōes do linux. Contudo o hardware parece que vai ser um diferencial dos tablets com android. Este Acer tem porta hdmi para plugar na tv, usb para plugar um teclado por exemplo, conector micro usb para plugar o tablet no pc, saída para fone de ouvido, wifi, duas câmeras e expanção para cartão de memória.
quarta-feira, 31 de agosto de 2011
A guerra dos SmartPhones
- Agora o nível é este aqui! Quem vai encarar?
Me lembrou as bombas nucleares americanas lançadas no Japão para dar fim a segunda guerra mundial.
A Apple em 2007 lançou seu famoso iPhone com um sucesso espetacular. Ele conseguiu modificar e aperfeiçoar o conceito dos antigos Palms integrando com um telefone e uma experiência de usabilidade nunca antes tida pelos usuários de telefones. Simplesmente ela deixou um único botão algo inimaginável para smartphones com milhares de botões da época e não satisfeita jogou no lixo o conceito da canetinha de plástico da palm. Deixando a interação com o usuário através de uma tela de alta qualidade e com ótima resposta ao toque. (http://pt.wikipedia.org/wiki/IPhone)
Além de criar um telefone esplendido no conjunto de hardware e software também trouxe junto um marketplace onde milhares de desenvolvedores independentes e empresas poderiam distribuir suas aplicações. Muito baseado no conceito de venda de música do antigo iPod sendo que agora ela vendia aplicações.
Todas as empresas de celulares olhavam para o iPhone, e pelo jeito parecia impossível competir com um sistema operacional com uma ótima experiência com o usuário, uma legião de aplicações desenvolvidas e pessoas fascinadas por ele. Os celulares da Nokia, Motorola, BlackBerry, Sony, LG, Samsung, HTC e os chings lings pareciam defasados pelo menos uns 10 anos.
Várias tentativas foram realizadas por essas empresas em busca de chegar perto em qualidade do iPhone. Contudo, o iPhone reinava soberano e absoluto. Um dia a HTC fez um lançamento tímido chamado de o Celular do Google (http://tecnopot.com.br/htc-g1-novo-celular-google-com-android/). Na verdade era um celular com o sistema operacional Android. O Android é um sistema em código livre baseado em linux.
Após algum tempo Motorola, Sony, Samsung e cia começaram a produzir celulares com o Android. Com exceção da Nokia que investia muito no seu sistema o Sybiam e da BlackBerry com seu RIM. E ficou assim a gerra no mundo dos Smartphones. iPhone iOS, um conjunto de companhias com Android, Nokia com Symbian e Black Berry com o RIM.
Foi nesse ponto que a guerra mudou. Para mim a Google usou uma tática que a Microsoft tinha usado na época do lançamento dos primeiros PCs com DOS e Windows. Ou seja, dar o sistema operacional o Android (equivalente ao Dos/Windows) e ajudar essas empresas a construir Smartphones (PCs na época) em um nível tão bom ou similar ao iPhone (Macs). Enquanto isso a Nokia e a BlackBerry estavam patinando e perdendo mercado.
No final de 2010 e incio de 2011 o Android passa iOS em número de aparelhos vendidos. Nessa mesmo época a gigante Microsoft que já tinha entrado no mercado de sistemas operacionais para smartphones a muito tempo contudo sem muito sucesso finalmente começa a querer entrar nessa guerra. Junto com ela a HP que adquiriu a Palm com WebOS também quer moder parte do mercado.
A Microsoft firmou uma parceria de exclusividade com a Nokia para inserir seu novo sistema no mercado o Windows Phone 7. Essa parceria ainda não teve frutos, mas é uma grande aposta. O Windows Phone 7 tem uma vantagem sobre o Android. Quem cuida das atualizações dele é a própria Microsoft assim como ela faz com os PCs. Quem já teve um Android sabe o quanto é ruim e frustante é esperar atualizações vindas unicamente dos fabricantes e não do Google.
Enquanto isso a HP, que parecia ter entrado como uma opção, decepcionou a pouco tempo desistindo dos seus clientes e descontinuando o WebOS. Ela talvez fosse uma ótima opção, contudo ela parece ter preferido gastar sua força em outra guerra, a da computação nas nuvens. Uma pena mesmo, pois se ela seguisse o exemplo da Microsoft com seu XBox talvez tivesse lucrado no segunda ou terceira geração de seu produto.
Vamos esperar o que acontece.
Abraços.
segunda-feira, 29 de agosto de 2011
Exemplo simples do uso do java mail
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import java.io.*;
import java.util.Properties;
public class MailClient
{
public void sendMail(String mailServer, String from, String to,
String subject, String messageBody,
String[] attachments) throws
MessagingException, AddressException
{
// Setup mail server
Properties props = System.getProperties();
props.put("mail.smtp.host", mailServer);
// Get a mail session
Session session = Session.getDefaultInstance(props, null);
// Define a new mail message
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject(subject);
// Create a message part to represent the body text
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText(messageBody);
//use a MimeMultipart as we need to handle the file attachments
Multipart multipart = new MimeMultipart();
//add the message body to the mime message
multipart.addBodyPart(messageBodyPart);
// add any file attachments to the message
addAtachments(attachments, multipart);
// Put all message parts in the message
message.setContent(multipart);
// Send the message
Transport.send(message);
}
protected void addAtachments(String[] attachments, Multipart multipart)
throws MessagingException, AddressException
{
for(int i = 0; i<= attachments.length -1; i++)
{
String filename = attachments[i];
MimeBodyPart attachmentBodyPart = new MimeBodyPart();
//use a JAF FileDataSource as it does MIME type detection
DataSource source = new FileDataSource(filename);
attachmentBodyPart.setDataHandler(new DataHandler(source));
//assume that the filename you want to send is the same as the
//actual file name - could alter this to remove the file path
attachmentBodyPart.setFileName(filename);
//add the attachment
multipart.addBodyPart(attachmentBodyPart);
}
}
public static void main(String[] args)
{
try
{
MailClient client = new MailClient();
String server="pop3.mydomain.com";
String from="myname@mydomain.com";
String to = "someuser@somewhere.com";
String subject="Test";
String message="Testing";
String[] filenames =
{"c:\somefile.txt"};
client.sendMail(server,from,to,subject,message,filenames);
}
catch(Exception e)
{
e.printStackTrace(System.out);
}
}
}