Отправка электронной почты с использованием SMTP - PullRequest
0 голосов
/ 19 июля 2011

Я пишу простую Java-программу для отправки почты, но получаю ошибки. Вот код:

package mypackage;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

// Send a simple, single part, text/plain e-mail
public class Sendmail {

    public static void main(String[] args) {

        // SUBSTITUTE YOUR EMAIL ADDRESSES HERE!!!
        String to = "atul.krbhatia@gmail.com";
        String from = "atul.krbhatia@gmail.com";
        // SUBSTITUTE YOUR ISP'S MAIL SERVER HERE!!!
        String host = "smtp.gmail.com";

        // Create properties, get Session
        Properties props = new Properties();

        // If using static Transport.send(),
        // need to specify which host to send it to
        props.put("mail.smtp.host", host);
        // To see what is going on behind the scene
        props.put("mail.debug", "true");
        Session session = Session.getInstance(props);

        try {
            // Instantiatee a message
            Message msg = new MimeMessage(session);
            System.out.println("in try blk");
            //Set message attributes
            msg.setFrom(new InternetAddress(from));
            InternetAddress[] address = {new InternetAddress(to)};
            msg.setRecipients(Message.RecipientType.TO, address);
            msg.setSubject("Test E-Mail through Java");
            msg.setSentDate(new Date());

            // Set message content
            msg.setText("This is a test of sending a " +
                        "plain text e-mail through Java.\n" +
                    "Here is line 2.");

            //Send the message
            Transport.send(msg);
        }
        catch (MessagingException mex) {
            // Prints all nested (chained) exceptions as well
            System.out.println("in catch block");
            mex.printStackTrace();
        }
    }
}//End of class

Вот ошибки:

221 2.0.0 closing connection d1sm3094152pbj.24
in catch block
com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. d1sm3094152pbj.24
at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2057)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1580)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1097)
at javax.mail.Transport.send0(Transport.java:195)
at javax.mail.Transport.send(Transport.java:124)
at mypackage.Sendmail.main(Sendmail.java:48)

Ответы [ 4 ]

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

Gmail поддерживает только SMTP через SSL / TLS.

Добавить

props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.fallback", "false");

Вам также необходимо войти на сервер:

props.put("mail.smtp.host", "smtp.gmail.com");

Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() {
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication("username", "password");
    }
});
1 голос
/ 19 июля 2011

Простой поиск в Google для "javamail gmail" даст множество примеров использования JavaMail с GMail, например этот . У Google также есть страница конфигурации , в которой перечислены необходимые настройки подключения, чтобы вы могли дважды проверить настройки.

1 голос
/ 19 июля 2011
0 голосов
/ 19 июля 2011

Похоже, сервер ожидает SSL. Здесь есть еще несколько вопросов, где люди также пытаются отправлять почту через Gmail, используя Java, я рекомендую взглянуть на них.

Как я могу отправить электронное письмо с помощью приложения Java, используя GMail, Yahoo или Hotmail?

Сначала необходимо выполнить команду STARTTLS. Отправка электронной почты с помощью Java и Google Apps

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...