2015-12-21 91 views
1

我想用javax.mail發送電子郵件。當我運行下面的代碼時,它給了我這個錯誤沒有hwangheera4hagarmaher的提供者。問題在哪裏,我該如何解決這個錯誤?使用javax發送電子郵件?

我使用的代碼是這樣的:

public static boolean SendMail (String subject, String from, String Password, String Message, String to[]) 
{ 
    String Host = "[email protected]"; 

    Properties Property = System.getProperties(); 
    Property.put("mail.hwangheera4hagarmaher.starttls.enable", true); 
    Property.put ("mail.hwangheera4hagarmaher.host", Host); 
    Property.put ("mail.hwangheera4hagarmaher.user", from); 
    Property.put ("mail.hwangheera4hagarmaher.password", Password); 
    Property.put ("mail.hwangheera4hagarmaher.port", 587); 
    Property.put ("mail.hwangheera4hagarmaher.auth", "true"); 

    Session session = Session.getDefaultInstance(Property, null); 

    MimeMessage message = new MimeMessage (session); 

    try 
    { 
     message.setFrom(new InternetAddress (from)); 

     InternetAddress [] toAddress = new InternetAddress[to.length]; 

     for (int i = 0; i < to.length; i++) 
     { 
      toAddress [i] = new InternetAddress (to[i]); 
     } 

     for (int i = 0; i < toAddress.length; i++) 
     { 
      message.addRecipient(RecipientType.TO, toAddress[i]); 
     } 

     message.setSubject (subject); 
     message.setText(Message); 

     Transport transport = session.getTransport("hwangheera4hagarmaher"); 
     transport.connect (Host, from, Password); 
     transport.sendMessage(message, message.getAllRecipients()); 
     transport.close(); 

     return true; 
    } 
    catch (MessagingException ex) 
    { 
     showMessageDialog (null, ex); 
    } 
return false; 
} 

回答

1

替換hwangheera4hagarmaher在所有道具smtpgetTransport()除非已經編寫了這個名字自己的供應商。

您的主機名應該是服務器,而不是電子郵件地址。也許smtp.gmail.com

默認情況下,谷歌提供了安全預防措施使用任何外部訪問,特別是如果你使用一些電子郵件框架來訪問您的帳戶,首先你需要給訪問,在您的帳戶登錄,然後去:

https://accounts.google.com/DisplayUnlockCaptcha

然後按照其餘的步驟訪問您的帳戶。

+0

現在這個錯誤消失了,但gmail阻止了代碼發送郵件:/ –

+0

這應該有所幫助:https://support.google.com/accounts/answer/6010255?hl=zh-CN – Jan

+0

是否解決了您的問題(請參閱編輯?) – Jan