Отправка электронной почты в Java без API JavaMail - PullRequest
0 голосов
/ 31 июля 2011

Я занимаюсь разработкой приложения, в котором пользователи имеют возможность отправлять электронную почту на указанный адрес электронной почты каждые x минут.

Я не хочу полагаться на JavaMail (то есть полагатьсяо том, добавили ли мои пользователи банку JavaMail в их путь к классам).

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

Как мне продолжить отправку электронной почты в этом случае?

Существуют ли какие-либо онлайн-услуги и т. Д. (Платные или бесплатные), которые предоставляют решение для этого?Например, подключившись к ним и указав адрес электронной почты и сообщение получателя, они будут обрабатывать отправку электронной почты.

Существуют ли какие-либо разумные и / или достаточно простые способы отправки электронной почты с использованием пакетов Java Core?

Спасибо:)

Майк.

Ответы [ 2 ]

2 голосов
/ 31 июля 2011

Вы можете - открыв сокет для сервера smtp и затем записав в него сокет.

Socket socket=new Socket("your.smtp.server",25);
br= new BufferedReader(newInputStreamReader(socket.getInputStream()));
os = socket.getOutputStream();
    smtp("HELLO " + toEmailAddress);
smtp("MAIL FROM: "+ fromEmailAddress);
smtp("DATA");
smtp(yourContent");

и ваш метод smtp будет просто читать из буферизованного читателя и записывать в сокет

    public void smtp(String command) { 
           br.readLine();
           os.write(command.getBytes());
    }
1 голос
/ 31 июля 2011

Вот какой-то старый код, который у меня лежал, и который может помочь вам начать:

import java.io.*;
import java.net.*;

class EMail2
{
    public static void main(String args[])
    {

        if ( args.length != 5 )
        {
            System.out.print("usage: java EMail2 <smtp-host> <fromName> <toAddress>");
            System.out.println(" <subject> <body>");
            System.exit(-1);
        }

        try
        {
            send(args[0], args[1], args[2], args[3], args[4]);
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }

        System.exit(0);
    }

    public static void send(String host, String from, String to, String subject, String message)
    {
        try
        {
            System.setProperty("mail.host", host);
//          System.setProperty("mail.smtp.starttls.enable","true"); // not sure it this works or not

          // open connection using java.net internal "mailto" protocol handler
          URL url = new URL("mailto:" + to);
          URLConnection conn = url.openConnection();
          conn.connect();

          // get writer into the stream
          PrintWriter out = new PrintWriter(new OutputStreamWriter(conn.getOutputStream() ) );

          // write out mail headers
          // From header in the form From: "alias" <email>
          out.println("From: \"" + from + "\" <" + from + ">");
          out.println("To: " + to);
          out.println("Subject: " + subject);
          out.println(); // blank line to end the list of headers

          // write out the message
          out.println(message);

          // close the stream to terminate the message
          out.close();
        }
        catch(Exception err)
        {
          System.err.println(err);
        }
      }
}
...