2016-08-24 37 views
-1

我使用JavaMail;我無法發送電子郵件,我已經使用驗證試過了,還是沒有,但它不工作。 有人可以幫忙嗎?使用JavaMail

private boolean InitMailer(String sSMPTGateWay) 
{ 
    try 
    { 
     oProps=new Properties(); 
     oProps.put("mail.smtp.host",sSMPTGateWay); 
     //oProps.put("mail.smtp.socketFactory.port", "465"); 
     //oProps.put("mail.smtp.port", "465"); 
     oProps.put("mail.smtp.starttls.enable", "true"); 

     // oProps.put("mail.smtp.socketFactory.class", 
    //  "javax.net.ssl.SSLSocketFactory"); 
    oProps.put("mail.smtp.auth", "true"); 
    //oProps.put("mail.smtp.port", "465"); 

     Authenticator auth = new javax.mail.Authenticator() { 
          @Override 
      protected PasswordAuthentication getPasswordAuthentication() { 
       return new PasswordAuthentication("[email protected]","mypassword"); 
      } 
     }; 

     oSession=Session.getInstance(oProps,auth); 
     oSession.setDebug(true); 
     oTransport=oSession.getTransport(oSession.getProvider("smtp")); 
     System.out.println("tento di connettermi"); 
     oTransport.connect(); 
     System.out.println("connesso?"); 
     if(!oTransport.isConnected()) 
     { 
      ErrorLog.warningLog("MService: MService(): Mail Server "+sMailGateWay+" non operativo. Tento un altro Gateway."); 
      return false; 
     } 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
     ErrorLog.warningLog("MService: MService(): Mail Server "+sMailGateWay+" non operativo. Tento un altro Gateway."); 
     return false; 
    } 
    return true; 
} 

private void sendMessage(String sFrom,String sTo,String sSubject,String sBody) throws Exception 
{ 
     if(Constants.ENABLE_MAIL_SERVICE.equals("NO")) 
     { 
      ErrorLog.warningLog("Tentativo di invio, Mail disabilitata: \n From:"+sFrom+"\n To:"+ sTo +"\n Subject: "+sSubject + "\n Body:\n"+sBody); 
      return; 
     } 
     if(Constants.ENABLE_MAIL_SERVICE.equals("TEST")) 
      sTo=Constants.TEST_MAIL; 

     MimeMessage msg=new MimeMessage(oSession); 
     msg.setFrom(new InternetAddress(sFrom)); 
     msg.addRecipient(Message.RecipientType.TO,new InternetAddress(sTo)); 
     msg.setSubject(sSubject,"iso-8859-1"); 
     msg.setSentDate(new Date()); 
     msg.setText(sBody,"iso-8859-1"); 
     System.out.println("mando mex"); 
     oTransport.send(msg); 
} 

,這是錯誤,那麼這是不是一個錯誤,但郵件沒有發送

220 smtp.gmail.com ESMTP q4sm9246160wjk.24 - gsmtp 
DEBUG SMTP: connected to host "smtp.gmail.com", port: 25 

EHLO Michele 
250-smtp.gmail.com at your service, [79.36.174.226] 
250-SIZE 35882577 
250-8BITMIME 
250-STARTTLS 
250-ENHANCEDSTATUSCODES 
250-PIPELINING 
250 SMTPUTF8 
DEBUG SMTP: Found extension "SIZE", arg "35882577" 
DEBUG SMTP: Found extension "8BITMIME", arg "" 
DEBUG SMTP: Found extension "STARTTLS", arg "" 
DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg "" 
DEBUG SMTP: Found extension "PIPELINING", arg "" 
DEBUG SMTP: Found extension "SMTPUTF8", arg "" 
connesso? 
NOOP 
250 2.0.0 OK q4sm9246160wjk.24 - gsmtp 
new MSERVICE 
[email protected] 
Sending from ([email protected]) to ([email protected]) subject (Registrazione Star Cinema) html(false). 
mando mex1 
mando mex 
NOOP 
250 2.0.0 OK q4sm9246160wjk.24 - gsmtp 

回答

0

當你使用一個本地的SMTP服務器是您的ISP將阻止端口時有發生25

如果您使用的是你需要驗證用戶名和密碼的主機提供商提供的SMTP服務器。 javax.mail.PasswordAuthentication類用於驗證密碼。

嘗試改變properties.put("mail.smtp.port", "25");

properties.put("mail.smtp.port", "587"); // 465 also option

檢查,如果你沒有得到任何解決方案Java mail mistakes

1

修復所有這些common JavaMail mistakes,你就會得到進一步。特別是,調用oTransport.sendMessage而不是oTransport.send。

0

您發表的誤差約爲屬性。改變它。

oProps.put("mail.smtp.auth", "true"); 
    oProps.put("mail.smtp.starttls.enable", "true"); 
    oProps.put("mail.smtp.host", "smtp.gmail.com"); 
    oProps.put("mail.smtp.ssl.trust", "smtp.gmail.com"); 
    oProps.put("mail.smtp.port", "587");