Pessoal, não sei se postei no local correto, estou trabalhando em um sw de envio de Newsletters automático para canais do hotsite da empresa e estou usando as api citadas. Para ficar mais difícil tem dois tipos de e mail um eu estou usando com o commons mail que serve para enviar o anexo no corpo do e mail para isso criei um indicador de tipo de email com um código 02 e outro email é simples padrão o texto no corpo e o anexo padrão de gmail e etc. neste usei a api javamail. São enviados em média 200 emails por dia mas é manualmente. Eu criei um método com o JCIFS que pega o arquivo de e mail no servidor geralmente são em html, e copia no local para o envio e após e mail ser enviado o arquivo é deletado. Ok isso manualmente funciona. Criei um form de JinternalFrame que faz uma consulta no banco e somente sobe os dados dos canais que que serão enviados, são os dados como nome, e mail, caminho do arquivo no servidor, tipo de e mail, mensagem e a especie da new( teatro, cinema, etc).
Como eu faria para enviar isso em massa e temporizado, por exemplo envio 50 espero 3 minutor e envio mais 50. Grato
[code]
import automaticnewsletter.IO.IO;
import automaticnewsletter.IO.SmbIO;
import automaticnewsletter.IO.SmbInterface;
import automaticnewsletter.createNews.News;
import automaticnewsletter.createNews.Newsletter_interface;
import automaticnewsletter.createNews.newsletter;
import automaticnewsletter.emailserver.SendMail;
import java.beans.PropertyVetoException;
import java.io.IOException;
import javax.swing.JOptionPane;
/**
*
-
@author pedro
*/
public class Remessa extends javax.swing.JInternalFrame implements SmbInterface ,Newsletter_interface
{/**
- Creates new form Remessa
*/
public Remessa()
{
super(“Lista de Newsletter”,true);
initComponents();
init();
this.setResizable(false);
this.setDefaultCloseOperation(HIDE_ON_CLOSE);
this.pack();
db.n=this.n;
}
public void getDesktopSize(int widht, int height) //auto-redimensionamento
{
jButton3.setSize(widht-80, 25);
jButton2.setSize(widht-80, 25);
jButton1.setSize(widht-80, 25);
this.setSize(widht-80, height-110);
this.setBounds(40, 50, widht-80, height-110);}
private void init()
{
db = new DB();
db.consultadb(“SELECT t.canal_id, t.*, e.canal_id, e.message FROM tb_canal_hotsite t INNER JOIN tb_message e ON e.canal_id = t.canal_id”);//“Select * from tb_canal_hotsite order by nome_canal”);
jTable1.setModel(db.modelo);
}/**
-
This method is called from within the constructor to initialize the form.
-
WARNING: Do NOT modify this code. The content of this method is always
-
regenerated by the Form Editor.
*/
@SuppressWarnings(“unchecked”)
// <editor-fold defaultstate=“collapsed” desc=“Generated Code”>
private void initComponents() {jPanel1 = new javax.swing.JPanel();
jButton3 = new javax.swing.JButton();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jScrollPane2 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable() {public boolean isCellEditable(int rowIndex, int colIndex)
{ //Se a coluna for diferente de 3 ele deixa editar.
return false;
}
};jPanel1.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
jPanel1.setLayout(new java.awt.BorderLayout());jButton3.setIcon(new javax.swing.ImageIcon("/home/pedro/NetBeansProjects/AutomaticNewsletter/package/enviar.png")); // NOI18N
jButton3.setText(“Enviar Newsletters”);
jButton3.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
jButton3.setPreferredSize(new java.awt.Dimension(162, 25));
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
jPanel1.add(jButton3, java.awt.BorderLayout.PAGE_START);jButton1.setIcon(new javax.swing.ImageIcon("/home/pedro/NetBeansProjects/AutomaticNewsletter/package/1342466818_Preview01.png")); // NOI18N
jButton1.setText(“Preview”);
jButton1.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
jButton1.setPreferredSize(new java.awt.Dimension(78, 25));
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jPanel1.add(jButton1, java.awt.BorderLayout.CENTER);jButton2.setIcon(new javax.swing.ImageIcon("/home/pedro/NetBeansProjects/AutomaticNewsletter/package/1342463759_cancel.png")); // NOI18N
jButton2.setText(“Sair”);
jButton2.setPreferredSize(new java.awt.Dimension(112, 25));
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jPanel1.add(jButton2, java.awt.BorderLayout.PAGE_END);jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
“Title 1”, “Title 2”, “Title 3”, “Title 4”
}
));
jTable1.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_NEXT_COLUMN);
jTable1.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
jScrollPane2.setViewportView(jTable1);javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 726, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 377, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
);pack();
}// </editor-fold>
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
if (evt.getSource() == jButton1)
{
//EVENTO PREVIEW
if(jTable1.getSelectedColumn()==-1 || jTable1.getSelectedRow()==-1)
{
JOptionPane.showMessageDialog(null, “Por favor selecione algum canal do hotsite\nda tablea clicando na linha que ele estiver!”,“Info 02”,JOptionPane.INFORMATION_MESSAGE);
System.gc();
}
else if(jTable1.getSelectedColumn()<jTable1.getColumnCount() || jTable1.getSelectedRow()><jTable1.getRowCount())
{
boolean _ok = getFiles();
if (_ok == true)
{
try
{
doPreview();
this.setSelected(false);
}
catch (PropertyVetoException ex)
{
System.err.println(ex);
}
}
else
{
JOptionPane.showMessageDialog(null, "Não foi possível localizar\nos arquivos para o preview! ", “Erro 03”, JOptionPane.INFORMATION_MESSAGE);
}
}
}
}private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
//GERA LOTE DE ENVIO DE EMAIL
massMail();
}private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
//FECHA O FRAME
db=null;
this.doDefaultCloseAction();
this.setVisible(false);
}protected boolean getFiles()
{
if(jTable1.getSelectedRow()!=-1 && jTable1.getSelectedColumn()><9)
{
local= io.getSystempath();
id =jTable1.getValueAt(jTable1.getSelectedRow(), 0).toString();
local=local.concat("/ASP/");
local=local.concat(id+"/");
file = jTable1.getValueAt(jTable1.getSelectedRow(), 7).toString();
System.out.println(local+file);
url=jTable1.getValueAt(jTable1.getSelectedRow(), 6).toString();
System.out.println(url);
try
{
isCopy =copia(url, "//UNIX/"+id+"/"+file);
System.out.println(isCopy);
}
catch (ClassNotFoundException | IOException ex)
{
System.err.println(ex);
}
}
else{}
return isCopy;
}private void doPreview()
{
if(isCopy==true)
{
view = new preview();
view.setVisible(true);
if(file.contains("html"))
{
view.exibeHTML(local+file);
}
else if(file.contains("pdf"))
{
view.exibePDF(local+file);
}
else if(file.contains("jpg") || file.contains("Jpeg"))
{
view.exibeJPEG(local+file);
}
else
{
}
}
else
{}
}//copia("//192.168.50.4/ABEQ/index.html","//unix/ASP/index2.html");
@Override
public boolean copia(String diretorio, String destino) throws ClassNotFoundException, IOException
{
isCopy=false;
smbIO=new SmbIO();
isCopy=smbIO.copia(diretorio,destino);
return isCopy;
}public void massMail()
{
int row,linha=0;
for(row=0;row<db.modelo.getRowCount();row++)
{if(db.modelo.getValueAt(row, 0)==null) { } else { linha=linha+1; } } //System.out.println(linha); matriz_email = new Object[linha][9]; /* * {"ID Canal","Nome Canal","Contato","E-mail" ,"Período","Dia Semana","Caminho","Arquivo" ,"Tipo mail","Email Resp. Bilheteria","Resp. Bilheteria"} */ for(row=0;row<linha;row++) { matriz_email[row][0]=db.modelo.getValueAt(row, 0); matriz_email[row][1]=db.modelo.getValueAt(row, 2);//Nome contato canal matriz_email[row][2]=db.modelo.getValueAt(row, 3);//email canal matriz_email[row][3]=db.modelo.getValueAt(row, 6);//URL matriz_email[row][4]=db.modelo.getValueAt(row, 7);//File matriz_email[row][5]=db.modelo.getValueAt(row, 8);//Tipo mail matriz_email[row][6]=db.modelo.getValueAt(row, 9);//Email resp. bilheteria matriz_email[row][7]=db.modelo.getValueAt(row, 10); matriz_email[row][8]=db.modelo.getValueAt(row, 11); System.out.println(matriz_email[row][0]); System.out.println(matriz_email[row][1]); System.out.println(matriz_email[row][2]); System.out.println(matriz_email[row][3]); System.out.println(matriz_email[row][4]); System.out.println(matriz_email[row][5]); System.out.println(matriz_email[row][6]); System.out.println(matriz_email[row][7]); System.out.println(matriz_email[row][8]); //getAttachment(matriz_email[row][3].toString(), matriz_email[row][0].toString(), matriz_email[row][4].toString()); } //"//UNIX/"+getCanal_id()+"/"+getAttach(); //return send;
}
protected boolean getAttachment(String url, String id, String localFile)
{
boolean fileExists=false;
String newFile="";
newFile= newFile.concat("//UNIX/"+id+"/"+localFile).trim();
System.out.println(“my new file”+newFile);
System.out.println("my url “+url);
try
{
fileExists =true;//copia(url, localFile);
System.out.println(fileExists);
}
catch (Exception ex)
{
System.err.println(ex);
}
if(fileExists==true)
{
//envia(“dest”, “messag”, “tipi mail”);
//fileExists= envia("pedro.deus@yahoo.com”, “Teste envio newsletter”, “1”);
}
else
{
}
return fileExists;
}protected boolean envia(String destinatário, String message, String tipo_mail)
{
try
{
isOK=false;
String path = " “;
path = path.concat(io.getSystempath()+”/ASP/"+getCanal_id()+"/"+getAttach()).trim();
System.out.println(“path “+path);
if(!path.trim().equalsIgnoreCase(””) || !path.equalsIgnoreCase(null))
{
sm= new SendMail();
sm.setSendMail(“smtp.bilheteria.com”, “25”);
sm.sendMail("newsletter@bilheteria.com");
sm.setUser("newsletter@bilheteria.com", “teatro”);
sm.Authentication();
// if 1 email com anexo
if(tipo_mail.equalsIgnoreCase(“1”) || getAttach().contains(“pdf”))
{sm.setMessage("newsletter@bilheteria.com", destinatário, message); sm.setAttachment(path,"Newsletter"); sm.Envia(); isOK=true; } // if 2 email com anexo no corpo else if(tipo_mail.equalsIgnoreCase("2") || !getAttach().contains("pdf")) { //_htmlMail(String anexo, String _to, String to_name, String message) sm._htmlMail(path,destinatário,"",message); isOK=true; } } else { isOK=false; } } catch (Exception ex) { isOK=false; System.err.println(ex); } return isOK;
}
- Creates new form Remessa
[/code]>