Модераторы: javastic, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> smtp авторизация 
:(
    Опции темы
sergeytar
Дата 7.5.2007, 17:09 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 4.4.2007

Репутация: нет
Всего: нет



Хочу сделать простую программу для отсылки писем через e-mail.  Нашел вот это http://vingrad.ru/JAVA-J2ME-003096. Возникла одна проблема. Где прописать логин и пароль.

Я чайник, и пока не очень разбираюсь. Капался везде, но ничего не получается. 

Код

import javax.microedition.midlet.*;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;
import java.io.*;
import java.util.*;

public class EmailClient implements Runnable {
   private EmailMIDlet parent;
   private Display display;
   private Form f;
   private StringItem si;
   private SocketConnection sc;
   private InputStream is;
   private OutputStream os;
   private String smtpServerAddress;

   private String from, to, subject, msg;

   public EmailClient
      (EmailMIDlet m, String from, String to, String subject, String msg) {
      parent = m;
      this.from = from;
      this.to = to;
      this.subject = subject;
      this.msg = msg;

      display = Display.getDisplay(parent);
      f = new Form("Email Client");
      si = new StringItem("Response:" , " ");
      f.append(si);
      display.setCurrent(f);
   }

   public void start() {
      Thread t = new Thread(this);
      t.start();
   }

   public void run() {
 
      try {
         sc = (SocketConnection)
            Connector.open("socket://"+smtpServerAddress+":25");
         is = sc.openInputStream();
         os = sc.openOutputStream();

         os.write(("HELO there" + "\r\n").getBytes()); 
         os.write(("MAIL FROM: "+ from +"\r\n").getBytes());
         os.write(("RCPT TO: "+ to + "\r\n").getBytes());
         os.write("DATA\r\n".getBytes());
         // stamp the msg with date
         os.write(("Date: " + new Date() + "\r\n").getBytes()); 
         os.write(("From: "+from+"\r\n").getBytes());
         os.write(("To: "+to+"\r\n").getBytes());
         os.write(("Subject: "+subject+"\r\n").getBytes());
         os.write((msg+"\r\n").getBytes()); // message body
         os.write(".\r\n".getBytes());
         os.write("QUIT\r\n".getBytes());

         // debug
         StringBuffer sb = new StringBuffer();
         int c = 0;
         while (((c = is.read()) != -1) ) {
            sb.append((char) c);
         }
         si.setText("SMTP server response - " + sb.toString());      

      } catch(IOException e) {

         Alert a = new Alert
            ("TimeClient", "Cannot connect to SMTP server. Ping the server
              to make sure it is running...", null, AlertType.ERROR);
         a.setTimeout(Alert.FOREVER);
         display.setCurrent(a); 
      } finally {
         try {
            if(is != null) {
               is.close();
            }
            if(os != null) {
               os.close();
            }
            if(sc != null) {
               sc.close();
            }
         } catch(IOException e) {
            e.printStackTrace();
         }
      }    
   } 

   public void commandAction(Command c, Displayable s) {
      if (c == Alert.DISMISS_COMMAND) {
         parent.notifyDestroyed();
         parent.destroyApp(true);
      }
   }
}

Допустим ящик на рамблере: [email protected]
сервер: smtp.rambler.ru
порт: 587
логин: user
пароль: 123456

Поправьте, плиз, если не трудно...
PM MAIL   Вверх
sergeytar
Дата 8.5.2007, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 4.4.2007

Репутация: нет
Всего: нет



уже разобрался. всем спасибо

PM MAIL   Вверх
Samuil
Дата 10.5.2007, 06:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


в(Job)ываю
**


Профиль
Группа: Участник
Сообщений: 705
Регистрация: 26.4.2006
Где: Uzbekistan.Tashke nt

Репутация: 5
Всего: 6



sergeytar, А в чем проблема то была? Поделись smile 


--------------------
Выбор уже сделан, остается его только осознать   
smile    smile 
      smile  

user posted image
PM MAIL ICQ   Вверх
Gershkovich
Дата 10.5.2007, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 243
Регистрация: 8.2.2006

Репутация: нет
Всего: 2



После HELO надо вставить запрос авторизации:

Код

os.write(("AUTH LOGIN" + "\r\n").getBytes()); 
os.write((base64login+ "\r\n").getBytes());
os.write((base64Зpassword+ "\r\n").getBytes());



Предварительно логин а пароль надо конвертнуть в Base64

PM MAIL   Вверх
zalim
Дата 16.5.2007, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 18.1.2007

Репутация: нет
Всего: нет



Цитата

Предварительно логин а пароль надо конвертнуть в Base64

Конвертировать можно здесь

PM MAIL   Вверх
sergeytar
Дата 16.5.2007, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 4.4.2007

Репутация: нет
Всего: нет



Сделал. Вот что получилось: 
Код

import javax.microedition.lcdui.*; 
import javax.microedition.midlet.*; 
import javax.microedition.io.*; 
import java.io.*; 
  
public class EmailMIDlet extends MIDlet implements CommandListener { 
   Display display = null; 
  
   // email form fields      
   TextField dogField = null; 
   TextField kontrField = null; 
   TextField sumField = null; 

   Form form; 
  
   static final Command sendCommand = new Command("Отправить", Command.OK, 2); 
   static final Command clearCommand = new Command("Выход", Command.STOP, 3); 
   String to; 
   String subject; 
   String msg; 
  
   public EmailMIDlet() { 
      display = Display.getDisplay(this); 
      form = new Form("EmailMIDlet"); 
      dogField = new TextField("Номер", "", 5, TextField.NUMERIC); 
      kontrField = new TextField(" ", "", 3, TextField.NUMERIC); 
      sumField = new TextField(" ", "", 4, TextField.NUMERIC); 
      
   } 
  
   public void startApp() throws MIDletStateChangeException { 
      form.append(dogField); 
      form.append(kontrField); 
      form.append(sumField); 
      form.addCommand(clearCommand); 
      form.addCommand(sendCommand); 
      form.setCommandListener(this); 
      display.setCurrent(form); 
   } 
  
   public void pauseApp() { 
   } 
  
   public void destroyApp(boolean unconditional) { 
      notifyDestroyed(); 
   } 
  
   public void commandAction(Command c, Displayable d) { 
      String label = c.getLabel(); 
      if(label.equals("Выход")) { 
         destroyApp(true); 
      } else if (label.equals("Отправить")) { 
         to = ("[email protected]"); 
         subject = ( kontrField.getString() ); 
         msg = ("Заявка № ") + dogField.getString() + (" на ") + sumField.getString() + ("принята."); 
         EmailClient client = new EmailClient 
            (this,"[email protected]", to, subject, msg); 
         client.start(); 
      } 
   } 
}



Код

import javax.microedition.midlet.*; 
import javax.microedition.io.*; 
import javax.microedition.lcdui.*; 
import java.io.*; 
import java.util.*; 
  
public class EmailClient implements Runnable { 
   private EmailMIDlet parent; 
   private Display display; 
   private Form f; 
   private StringItem si; 
   private SocketConnection sc; 
   private InputStream is; 
   private OutputStream os; 
   private String smtpServerAddress; 
  
   private String from, to, subject, msg; 
  
   public EmailClient 
      (EmailMIDlet m, String from, String to, String subject, String msg) { 
      parent = m; 
      this.from = from; 
      this.to = to; 
      this.subject = subject; 
      this.msg = msg; 
      this.smtpServerAddress = ("smtp.rambler.ru"); 
  
      display = Display.getDisplay(parent); 
      f = new Form("Email Client"); 
      si = new StringItem("Response:" , " "); 
      f.append(si); 
      display.setCurrent(f); 
   } 
  
   public void start() { 
      Thread t = new Thread(this); 
      t.start(); 
   } 
  
   public void run() { 
  
      try { 
         sc = (SocketConnection) Connector.open("socket://"+smtpServerAddress+":25"); 
         is = sc.openInputStream(); 
         os = sc.openOutputStream(); 
  
         os.write(("EHLO mail.ru" + "\r\n").getBytes()); 
         os.write("AUTH LOGIN\r\n".getBytes()); 
         os.write("dXNlcg==\r\n".getBytes()); // переводим user в формат base64 
         os.write("MTIzNDU2\r\n".getBytes()); // переводим 123456 в формат base64 
         os.write(("MAIL FROM: "+ from +"\r\n").getBytes()); 
         os.write(("RCPT TO: "+ to + "\r\n").getBytes()); 
         os.write("DATA\r\n".getBytes()); 
          // stamp the msg with date 
         os.write(("Date: " + new Date() + "\r\n").getBytes()); 
         os.write(("From: "+from+"\r\n").getBytes()); 
         os.write(("To: "+to+"\r\n").getBytes()); 
         os.write(("Subject: "+subject+"\r\n").getBytes()); 
         os.write((msg+"\r\n").getBytes()); // message body 
         os.write(".\r\n".getBytes()); 
         os.write("QUIT\r\n".getBytes()); 
  
         // debug 
         StringBuffer sb = new StringBuffer(); 
         int c = 0; 
         while (((c = is.read()) != -1) ) { 
            sb.append((char) c); 
         } 
         si.setText("SMTP server response - " + sb.toString());      
  
      } catch(IOException e) { 
  
         Alert a = new Alert 
            ("TimeClient", "Cannot connect to SMTP server. Ping the server to make sure it is running...", null, AlertType.ERROR); 
         a.setTimeout(Alert.FOREVER); 
         display.setCurrent(a); 
      } finally { 
         try { 
            if(is != null) { 
               is.close(); 
            } 
            if(os != null) { 
               os.close(); 
            } 
            if(sc != null) { 
               sc.close(); 
            } 
         } catch(IOException e) { 
            e.printStackTrace(); 
         } 
      }    
   } 
  
   public void commandAction(Command c, Displayable s) { 
      if (c == Alert.DISMISS_COMMAND) { 
         parent.notifyDestroyed(); 
         parent.destroyApp(true); 
      } 
   } 

  
interface NewInterface { 
}




Как сделать так, чтобы для пользователя вместо лога отображался только результат, отправлено или нет?

И еще, как после завершения отправки вернуться обратно на главную страницу для ввода новых данных? Я там ковырялся, но ничего не получается. :( 


Это сообщение отредактировал(а) sergeytar - 16.5.2007, 19:30
PM MAIL   Вверх
sergeytar
Дата 19.5.2007, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 4.4.2007

Репутация: нет
Всего: нет



Хммм.. никто не знает что ли. Ну у меня только эти проблемы остались. Помогите плиз... Капаюсь, никак не получается. Ну говорю же чайник я.
Нужно:
1. Как после отправки вернуться назад (Из EmailClient.java в EmailMIDlet.java) для ввода новых данных. 
2. Как сделать так, чтобы для пользователя вместо лога отображался только результат, отправлено или нет.

Ну пожалуйста...
PM MAIL   Вверх
Gershkovich
Дата 22.5.2007, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 243
Регистрация: 8.2.2006

Репутация: нет
Всего: 2



sergeytar, Ну чо ?
Разобралсо ?

Я набросал простенький проектик
Он конечно сыроват, но для демонстрацыи подойдет

Если интересно пришли запрос на f.gershkovich цобако mail точка ru

PM MAIL   Вверх
sergeytar
Дата 31.5.2007, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 4.4.2007

Репутация: нет
Всего: нет



Gershkovich, запрос отправил, но, к сожалению, ответа не получил. Плиз, вот мой ящик sergeytar [а] мэйл (.) ру
PM MAIL   Вверх
Gershkovich
Дата 4.6.2007, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 243
Регистрация: 8.2.2006

Репутация: нет
Всего: 2



Выслал.

Странно что запрос не дошол. Адрес я напесал правильно.
Проверь написание - можэт ошибся
 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0969 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.