Java отправить почтовому боту пользовательское сообщение с помощью JOptionPane

#java #email #joptionpane

#java #Адрес электронной почты #joptionpane

Вопрос:

Я не очень опытный программист, но я учился. Прямо сейчас я нахожусь в процессе написания тестового почтового бота для, ну, отправки электронных писем. Я столкнулся с проблемой, когда попытался сделать так, чтобы вы могли вводить сообщение и тему электронного письма в диалоговом окне JOptionPane.

Вот код, посмотрите на строки вверху и messageobjs внизу..

 import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.swing.JOptionPane;

public class Ebot2 
{


   public static void main(String[] args) 
   {

      String Dest;
      Dest = JOptionPane.showInputDialog("Who would you like to message?");

      String Subject;
      Subject = JOptionPane.showInputDialog("What is the message subject?");

      String Message;
      Message = JOptionPane.showInputDialog("What is the message?");




      String sendrmailid = "email@gmail.com";
      final String uname = "email";
      final String pwd = "pass";

      Properties propvls = new Properties();
      propvls.put("mail.smtp.auth", "true");
      propvls.put("mail.smtp.starttls.enable", "true");
      propvls.put("mail.smtp.host", "smtp.gmail.com");
      propvls.put("mail.smpt.port", "25");

      Session sessionobj = Session.getInstance(propvls,
         new javax.mail.Authenticator()
         {
            protected PasswordAuthentication getPasswordAuthentication()
            {
               return new PasswordAuthentication(uname, pwd);
            }
         });

      try 
      {
         Message messageobj = new MimeMessage(sessionobj);
         messageobj.setFrom(new InternetAddress(sendrmailid));
                                                                                              messageobj.setRecipients(Message.RecipientType.TO,InternetAddress.parse(Dest));
     messageobj.setSubject(Subject);
     messageobj.setText(Message);

     Transport.send(messageobj);
     System.out.println("Your email sent successfully....");
  } 
  catch (MessagingException exp) 
  {
     throw new RuntimeException(exp);
  }
 }
}
  

извините за дерьмовое форматирование, с блоком кода было сложно. В любом случае, ошибка, с которой я столкнулся, началась после того, как я изменил setSubject и setText на строки, которые вводятся через JOptionPane. И ошибка такова..

 Ebot2.java:53: error: cannot find symbol
          messageobj.setRecipients(Message.RecipientType.TO,InternetAddress.parse(Dest));
                                    ^
symbol:   variable RecipientType
location: variable Message of type String
1 error
  

Спасибо всем, кто отвечает, мне действительно нужна помощь в этом!

Комментарии:

1. Проверьте свой импорт? Сообщение отсутствует

2. Добавить import javax.mail.Message.RecipientType;

3. Я добавил импорт типа получателя почтового сообщения Java, но на самом деле это ни на что не повлияло. Я все еще получаю ту же ошибку. Имейте в виду, что до того, как я добавил все элементы JOptionPane для области сообщений и темы, код работал отлично. Должен ли я просто удалить содержимое JOptionPane для сообщения и темы?

Ответ №1:

Я это исправил, ребята. Проблема заключалась в том, что у меня была строка для сообщения, установленная как Message (та же проблема с subject), которая также была переменной. Итак, я просто переименовал строку, и все это сработало. В любом случае, спасибо за помощь, рад узнать, что я могу обращаться к этому сайту с вопросами.

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