2010-04-28 45 views
0

嗨,我正在运行下面的程序获取运行时错误。我粘贴在下面。运行时错误。问题与SMTP服务器

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.mail.internet.MimeMessage.RecipientType; 

public class MailWithPasswordAuthentication { 
public static void main(String[] args) throws MessagingException { 
    new MailWithPasswordAuthentication().run(); 
} 

private void run() throws MessagingException { 
    Message message = new MimeMessage(getSession()); 

    message.addRecipient(RecipientType.TO, new InternetAddress("[email protected]")); 
    message.addFrom(new InternetAddress[] { new InternetAddress("[email protected]") }); 

    message.setSubject("the subject"); 
    message.setContent("the body", "text/plain"); 

    Transport.send(message); 
} 

private Session getSession() { 
    Authenticator authenticator = new Authenticator(); 

    Properties properties = new Properties(); 
    properties.setProperty("mail.smtp.submitter", authenticator.getPasswordAuthentication().getUserName()); 
    properties.setProperty("mail.smtp.auth", "true"); 

    properties.setProperty("mail.smtp.host", "smtp.gmail.com"); 
    properties.setProperty("mail.smtp.port", "25"); 

    return Session.getInstance(properties, authenticator); 
} 

private class Authenticator extends javax.mail.Authenticator { 
    private PasswordAuthentication authentication; 

    public Authenticator() { 
    String username = "[email protected]"; 
    String password = "xyz"; 
    authentication = new PasswordAuthentication(username, password); 
    } 

    protected PasswordAuthentication getPasswordAuthentication() { 
    return authentication; 
    } 
} 
} 

运行时错误

Exception in thread "main" com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. u8sm278510wbc.23 

at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1829) 
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1368) 
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:886) 
at javax.mail.Transport.send0(Transport.java:191) 
at javax.mail.Transport.send(Transport.java:120) 
at MailWithPasswordAuthentication.run(MailWithPasswordAuthentication.java:26) 
at MailWithPasswordAuthentication.main(MailWithPasswordAuthentication.java:14) 

回答

2

尝试添加properties.setProperty("mail.smtp.starttls.enable", "true");

+0

或者在XML <属性键= “mail.smtp.starttls.enable” 值= “真”/> – 2016-12-20 14:56:30