Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > SMTP server?


Автор: Гость_unkis 15.4.2005, 23:42
у меня возник такой вопрос, если я хочу отправит е-маил, то для етого мне нугно указат smtp сервер, а если у меня его нет.
т.е можно ли создат на java свой собственний смтп(не зависяший от провайдера)?


Автор: Domestic Cat 16.4.2005, 00:13
https://aspirin.dev.java.net/
http://www.jps.at/java/tools/mailserver.html
http://jsmtpd.sourceforge.net/

Автор: Guest 18.4.2005, 01:26
спасибо большое,

толко чт-то ничего немогу запустит. smile
немогу понят как к примеру ползоватся вот етим сервером http://www.jps.at/java/tools/mailserver.html

если кто знает как его с конфигурироват и как запустить, зарания благодарен.

smile


Автор: Domestic Cat 18.4.2005, 04:12
Не приходилось как-то. Если разберешься- всем будет интересно посмотреть.

Автор: tux 19.4.2005, 07:46
Еще есть James в проекте Jakarta, может быть с ним будет проще...
http://james.apache.org/

Автор: Zandr 19.4.2005, 07:50
Ага smile ставь сервер. Перед этим купи у провайдера постоянный IP, потом в адресной канцелярии доменное имя (в принципе это необязательно, но тогда любое твое письмо скорее всего будет классифицировано как спам). А вот потом ставь сервер (ты же не собираешься только по локалке мыло пересылать?), настраивай (если в адресной канцелярии не заказал услуги по обеспечению сервиса DNS, ставь и конфигурируй DNS сервер), заводи пользователя (или пользователей), и указывай теперь свой сервер своему приложению.

Только тебе скорее всего ничего такого делать не нужно. А делать нужно вот что:
Если у тебя есть аккаунт на каком-нибудь фришном почтовом серваке (типа mail.ru), то не грей голову - иди туда и смотри как настраивать почтового клиента. Там найдешь адрес SMTP сервера. Вот через него и отсылай письма (используя свои логин и пароль естественно).

Автор: unkis 20.4.2005, 22:56
Цитата(tux @ 19.4.2005, 07:46)
Еще есть James в проекте Jakarta, может быть с ним будет проще...
http://james.apache.org/

я вот тут попробывал настроить james
по вот этой статейки. http://www-106.ibm.com/developerworks/java/library/j-james1.html
но проблема в том что когда я пытаюстьсь запустить через java то получаю вот такой вот результат


Код

Clear INBOX for red@localhost

Clear INBOX for green@localhost

Clear INBOX for blue@localhost

java.lang.NoClassDefFoundError: javax/activation/DataSource
at emailtest.MailClient.sendMessage(MailClient.java:49)
at emailtest.JamesConfigTest.main(JamesConfigTest.java:19)
SENDING message from red@localhost to [email protected]

Exception in thread "main"


почему такая ошибка возникла?
чтоя делаю не правельно.

а вот и код


Код

public class JamesConfigTest
{
  public static void main(String[] args)
    throws Exception
  {
    // CREATE CLIENT INSTANCES
    MailClient redClient = new MailClient("red", "localhost");
    MailClient greenClient = new MailClient("green", "localhost");
    MailClient blueClient = new MailClient("blue", "localhost");

    // CLEAR EVERYBODY'S INBOX
    redClient.checkInbox(MailClient.CLEAR_MESSAGES);
    greenClient.checkInbox(MailClient.CLEAR_MESSAGES);
    blueClient.checkInbox(MailClient.CLEAR_MESSAGES);
    Thread.sleep(500); // Let the server catch up

    // SEND A COUPLE OF MESSAGES TO BLUE (FROM RED AND GREEN)
    redClient.sendMessage(
      "[email protected]",
      "Testing blue from red",
      "This is a test message");
    greenClient.sendMessage(
      "blue@localhost",
      "Testing blue from green",
      "This is a test message");
    Thread.sleep(500); // Let the server catch up

    // LIST MESSAGES FOR BLUE (EXPECT MESSAGES FROM RED AND GREEN)
    blueClient.checkInbox(MailClient.SHOW_AND_CLEAR);
  }
}





и
Код


import java.io.*;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;

public class MailClient
  extends Authenticator
{
  public static final int SHOW_MESSAGES = 1;
  public static final int CLEAR_MESSAGES = 2;
  public static final int SHOW_AND_CLEAR =
    SHOW_MESSAGES + CLEAR_MESSAGES;

  protected String from;
  public Session session;
  protected PasswordAuthentication authentication;

  public MailClient(String user, String host)
  {
    this(user, host, false);
  }

  public MailClient(String user, String host, boolean debug)
  {
    from = user + '@' + host;
    authentication = new PasswordAuthentication(user, user);
    Properties props = new Properties();
    props.put("mail.user", user);
    props.put("mail.host", host);
    props.put("mail.debug", debug ? "true" : "false");
    props.put("mail.store.protocol", "pop3");
    props.put("mail.transport.protocol", "smtp");
    session = Session.getInstance(props, this);
  }

  public PasswordAuthentication getPasswordAuthentication()
  {
    return authentication;
  }

  public void sendMessage(
    String to, String subject, String content)
      throws MessagingException
  {
    System.out.println("SENDING message from " + from + " to " + to);
    System.out.println();
    MimeMessage msg = new MimeMessage(session);
    msg.addRecipients(Message.RecipientType.TO, to);
    msg.setSubject(subject);
    msg.setText(content);
    Transport.send(msg);
  }

  public void checkInbox(int mode)
    throws MessagingException, IOException
  {
    if (mode == 0) return;
    boolean show = (mode & SHOW_MESSAGES) > 0;
    boolean clear = (mode & CLEAR_MESSAGES) > 0;
    String action =
      (show ? "Show" : "") +
      (show && clear ? " and " : "") +
      (clear ? "Clear" : "");
    System.out.println(action + " INBOX for " + from);
    Store store = session.getStore();
    store.connect();
    Folder root = store.getDefaultFolder();
    Folder inbox = root.getFolder("inbox");
    inbox.open(Folder.READ_WRITE);
    Message[] msgs = inbox.getMessages();
    if (msgs.length == 0 && show)
    {
      System.out.println("No messages in inbox");
    }
    for (int i = 0; i < msgs.length; i++)
    {
      MimeMessage msg = (MimeMessage)msgs[i];
      if (show)
      {
        System.out.println("    From: " + msg.getFrom()[0]);
        System.out.println(" Subject: " + msg.getSubject());
        System.out.println(" Content: " + msg.getContent());
      }
      if (clear)
      {
        msg.setFlag(Flags.Flag.DELETED, true);
      }
    }
    inbox.close(true);
    store.close();
    System.out.println();
  }
}

Автор: LSD 20.4.2005, 23:00
NoClassDefFoundError значит, что класс не найден. Скорее всего ошибка при конфигурировании, CLASSPATH не правильно указан или еще что.
Добавлено @ 23:02
Или какие дополнительный библиотеки не поставил.

Автор: unkis 20.4.2005, 23:07
да нет вроди все добавил.

Автор: LSD 20.4.2005, 23:15
Проведи FAR-ом или TotalCommander-ом поиск по диску с опцией искать в архвах файла DataSource.class, тебе нужен тот что лежит в подпапке javax/activation. И добавь этот jar в CLASSPATH.

Автор: unkis 20.4.2005, 23:33
странно нашёл я его добавил всё равно тоже самое.


Добавлено @ 23:37
я добовлял его в билдоре activation.jar через свойство проектов, а как добавить прямо в classpath без jbuildera ?
не в path , ф именно в clathpass. может в этом ошибка.

Автор: unkis 20.4.2005, 23:45
интересная штука получается, изменил в jbuilder что нужно использовать другую библиотеку java version 1.4.2_04-b05 а не 1.5 и все заработало. smile

Автор: unkis 21.4.2005, 10:15
Беда по локалке отправляет.
Только как отправить e-mail к примеру [email protected] а не только на red@localhost?

Автор: Zandr 21.4.2005, 11:17
[censored][censored]! Написал же еще позавчера все по этому поводу!

Тебе нужен реальный почтовый сервак, у которого есть постоянный IP-шник, который зарегистрирован в DNS (и в прямой и в обратной зонах, иначе твои письма молча срежутся как спам на большинстве серверов получателей).

И у тебя два варианта:
1) делать (покупать, настраивать, регистрировать, подключать к прровайдеру и прочии заморочки) свой сервак
2) воспользоваться готовым (платным, бесплатным, с_твоей_работы) сервером

Первый вариант тебе явно пока на [censored] не нужен. Поэтому:
1) регистрируйся на каком-нибудь почтовом серваке (платном, бесплатном, по[censored] )
2) смотри на том серваке как настроить почтового клиента (до тех пор пока не найдешь имя SMTP сервера)
3) теперь у тебя есть адрес SMTP, username, password (и естественно Reply-to адрес - это твой адрес, он же From).

Вопросы остались?

smile

Автор: Guest 21.4.2005, 12:36
остались, у меня уге есть имя unkis.de, так как мне к етому имени привязат мой e-mail сервер, цтоби я мог отпровлят писма?
Что мне для етого нжно знать, и как мне настроить?


Зарания благодарен.

Автор: Zandr 22.4.2005, 06:25
Ну очень просто. Нужно на машину, которая откликается на unkis.de поставить почтовый сервер.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)