所以我试图让Java Mail工作,因为我在本网站上看到的其他答案都没有用,我不得不假设在过去一年左右的时间里有些变化。因此,如果这个问题看起来像是一个复制品,我就能解析为什么它无法正常工作。以下是我的代码:
try{
Properties property = new Properties();
property.setProperty("mail.smtp.host", "smtp.gmail.com");
property.setProperty("mail.smtp.starttls.enable", "true");
//property.setProperty("mail.smpt.port", "25");
property.setProperty("mail.smtp.user", "myEmail@gmail.com");
property.setProperty("mail.smtp.auth", "true");
System.out.println("Mail Check 1");
Session session = Session.getDefaultInstance(property);
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress("myEmail@gmail.com"));
message.addRecipient(Message.RecipientType.TO, new InternetAddress("myEmail@gmail.com"));
System.out.println("Mail Check 2");
message.setSubject("Oil Error Report");
message.setText(emailMessage);
System.out.println("Mail Check 3");
Transport transport = session.getTransport("smtps");
transport.connect("smtp.gmail.com",465,"myEmail@gmail.com","myPassword");
transport.sendMessage(message, message.getAllRecipients());
transport.close();
System.out.println("Mail Sent");
}catch(Exception ex){
System.out.println("Mail fail");
System.out.println(ex);
}
我起床邮件检查3然后我得到以下例外:
com.sun.mail.smtp.SMTPSendFailedException: 530-5.5.1 Authentication Required. Learn more at
530 5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 u3sm10254140ioi.27 - gsmtp
哪个没有意义,因为我将mail.smtp.auth设置为true。我已经查看了过去的答案,并且在发布之前我试图让它工作。我假设它很简单......任何帮助都会非常感激!谢谢!
答案 0 :(得分:11)
public class EmailSender {
public void sendEmail(String emailMessage){
try{
final String fromEmail = ""; //requires valid gmail id
final String password = ""; // correct password for gmail id
final String toEmail = ""; // can be any email id
System.out.println("TLSEmail Start");
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com"); //SMTP Host
props.put("mail.smtp.port", "587"); //TLS Port
props.put("mail.smtp.auth", "true"); //enable authentication
props.put("mail.smtp.starttls.enable", "true"); //enable STARTTLS
//create Authenticator object to pass in Session.getInstance argument
Authenticator auth = new Authenticator() {
//override the getPasswordAuthentication method
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(fromEmail, password);
}
};
Session session = Session.getInstance(props, auth);
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(fromEmail));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmail));
System.out.println("Mail Check 2");
message.setSubject("Oil Error Report");
message.setText(emailMessage);
System.out.println("Mail Check 3");
Transport.send(message);
System.out.println("Mail Sent");
}catch(Exception ex){
System.out.println("Mail fail");
System.out.println(ex);
}
}
}
这是让它运作所需的代码!它是2014年11月,目前适用于Gmail!我希望这段代码可以帮助节省时间,占用我的大部分时间!除此代码外,您还必须更改电子邮件设置,以允许允许使用这些电子邮件。您第一次尝试时会收到来自Google的电子邮件,它会指导您更改设置。
谢谢,祝你好运!
答案 1 :(得分:0)
你看过这个网址了吗?你跟着那里的所有步骤了吗?发生了什么事?
您想要修复这些common mistakes。
请注意,因为您正在使用" smtps" protocol.smtp。*属性的协议, none 适用。但这很好,因为你无论如何都不需要它们,因为你调用连接方法的方式。