Reputation: 21
I am building an application that takes in the username and password from the user and helps to send mails, using Java to code the same. I am using the Authenticator class from JavaMail API to get the authentication done. I am using this code-
import java.util.Date;
import java.util.Properties;
import javax.mail.Authenticator;
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;
public class MailSender{
GUI input = new GUI();
String username2= input.username.getText();
String password2 = input.password.getText();
public void SendMail(String ToAddress, String Name, String username1, String password1, String subject, String message, String salutation) {
String host = "smtp.gmail.com";
String from = "[email protected]";
String to = ToAddress;
Properties props = new Properties();
props.put("mail.smtp.host", host);
props.put("mail.smtp.port", 25);
props.put("mail.debug", "true");
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
Session session = Session.getInstance(props, new GMailAuthenticator());
try {
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address = {new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject(subject);
msg.setSentDate(new Date());
msg.setText(salutation+" "+Name+","+ "\n"+ message);
Transport.send(msg);
}
catch (MessagingException mex) {
mex.printStackTrace();
}
}
private static class GMailAuthenticator extends Authenticator {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username2, password2);
}
}
}
I have created a GUI class that takes in the username, password, subject, mail text as user input, which I was stating earlier in the code itself. Netbeans shows an error in GmailAuthentication class that a "non-static variable (like username2 and password2 here) can't be referenced from a static context."
How can I get around this issue? I need to take the username and password as user input from the GUI class and use them to authenticate for Gmail.
Upvotes: 0
Views: 2470
Reputation: 29971
Note that you don't really need an Authenticator in this case; it just makes your program more complex.
Upvotes: 2
Reputation: 6181
Instead of:
private static class GMailAuthenticator extends Authenticator {
Try removing static
keyword:
private class GMailAuthenticator extends Authenticator {
Upvotes: 0